生成自定义地理地图几何

时间:2015-05-05 14:25:14

标签: d3.js geojson topojson

我正在关注this指南,以创建威尼斯(意大利)的地图可视化。有没有办法生成这样的几何?我需要的是一个表示岛屿线条的GeoJson文件(类似于this)。

我看了Natural Earth,但我不明白如何导出威尼斯的GeoJson(或任何其他自定义区域)。

修改

按照Stefanski的回答我生成了json,然后使用以下命令将其转换为topojson:

topojson \
  -o venice.topojson \
  venice.json \

然后我从指南中复制html代码:

<!DOCTYPE html>
<meta charset="utf-8">
<style>

/* CSS goes here. */

</style>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://d3js.org/topojson.v1.min.js"></script>
<script>

var width = 960,
    height = 1160;

var projection = d3.geo.albers()
    .center([0, 55.4])
    .rotate([4.4, 0])
    .parallels([50, 60])
    .scale(1200 * 5)
    .translate([width / 2, height / 2]);

var path = d3.geo.path()
    .projection(projection);

var svg = d3.select("body").append("svg")
    .attr("width", width)
    .attr("height", height);

d3.json("venice.topojson", function(error, ve) {
  svg.append("path")
      .datum(topojson.feature(ve, ve.objects.venice))
      .attr("d", path);
});

</script>

此代码不会出现任何javascript错误,但不显示威尼斯地图,而它适用于英国地图。

1 个答案:

答案 0 :(得分:1)

我认为您可以使用来自Natural Earth的数据,使用“州和省”。从那里,使用ogr2​​ogr以GeoJSON格式过滤数据:

ogr2ogr \
-f GeoJSON \
-where "NAME = 'Venezia'" \
venice.json \
ne_10m_admin_1_states_provinces.shp

我很善良,实际上是为you做的。然后,您可以将此文件用作英国的文件并构建地图。