Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
D3.js 如何将海洋形状文件转换为topojson_D3.js_Topojson - Fatal编程技术网

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

D3.js 如何将海洋形状文件转换为topojson,d3.js,topojson,D3.js,Topojson,我在MacOs 10.7.5上安装了gdal 1.10.1和topojson 1.4.0。 我已经下载了自然地球的表格 我成功地在GeoJSON中转换了形状文件: ogr2ogr \ -f GeoJSON \ ocean.json \ ne_110m_ocean.shp 然后我将GeoJSON转换为topojson: topojson \ -o ocean_tj.json \ ocean=ocean.json \ 当我使用GeoJSON文件打印时,一切都正常 d3.jso

我在MacOs 10.7.5上安装了gdal 1.10.1和topojson 1.4.0。 我已经下载了自然地球的表格

我成功地在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");
});
有人能帮忙吗

提前感谢

使用选项--顺时针不用力修复问题:

topojson -o ocean_tj.json ocean=ocean.json --no-force-clockwise

使用该文件时,我也会得到一些奇怪的结果。基本上,我在数据的中间有一个条带,海洋和陆地是反向的。我用过。我会在Google Groups上发布一些东西,看看那边有没有人有什么想法。我仍然不知道为什么会发生这种情况,但使用
no force顺时针
解决了这个问题。如果有必要的话,我会再调查一点并填写一份bug报告。谢谢Pablo,这解决了问题。