如何将海洋形状文件转换为topojson

5
我在我的MacOs 10.7.5上安装了gdal 1.10.1和topojson 1.4.0。我已经从Natural Earth下载了ne_110m_ocean文件,下载链接是:http://www.naturalearthdata.com/downloads/110m-physical-vectors/
我已经成功将该shape文件转换为GeoJSON格式:
ogr2ogr \
  -f GeoJSON \
  ocean.json \
  ne_110m_ocean.shp

然后我将GeoJSON转换为topojson:

topojson \
  -o ocean_tj.json \
  ocean=ocean.json \

当我使用GeoJSON文件绘图时,一切正常。

d3.json("ocean.json", function(json) {
  svg.selectAll("path")
 .data(json.features)
 .enter()
 .append("path")
 .attr("d", path)
 .style("fill", "steelblue");
});

当我使用topojson文件绘制时,我得到的是陆地的多边形而不是海洋的多边形!

d3.json("ocean_tj.json", function(topology) {
var ocean = topojson.feature(topology, topology.objects.ocean); 
svg.append("path")
.datum(ocean)
.attr("d", path)
.style("fill", "red");
});

有人可以帮忙吗?

先谢谢了。


当我处理那个文件时,我也得到了一些奇怪的结果。基本上,我的数据中间有一条条带,海洋和陆地被颠倒了。我使用了ShapeEscape。我会在Google Groups上发布一些内容,看看那里是否有人有任何想法。 - user1614080
我仍然不确定为什么会发生这种情况,但是使用“no-force-clockwise”可以解决问题。如果有必要,我将进一步调查并提交错误报告。 - Pablo Navarro
1个回答

4
使用选项--no-force-clockwise可以解决该问题:
topojson -o ocean_tj.json ocean=ocean.json --no-force-clockwise

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接