我浏览了Mike Bostock的Let's Make a Map教程,我对结果感到非常满意,于是我决定从Natural Earth数据集中添加一些铁路数据。
大多数渲染都没问题,但有一些疯狂的文物似乎无关的网格以某种方式连接在一起:
https://docs.google.com/file/d/0B6e2rOpUwmtea3d4enNjY3dSbkk/edit?usp=sharing
我将铁路数据分成3个文件,看看是否有助于解决问题:
for country in CAN MEX USA
do
ogr2ogr -f GeoJSON \
-where "sov_a3='${country}'" \
railroads_${country}.json ne_10m_railroads_north_america.shp
done
我正在使用topojson.mesh渲染它们,如下所示:
svg.append("path")
.datum(topojson.mesh(na, na.objects.railroads_USA))
.attr("d", path)
.attr("class", "railroad_USA");
svg.append("path")
.datum(topojson.mesh(na, na.objects.railroads_CAN))
.attr("d", path)
.attr("class", "railroad");
svg.append("path")
.datum(topojson.mesh(na, na.objects.railroads_MEX))
.attr("d", path)
.attr("class", "railroad");
否则我的代码几乎与演示中提供的代码相同。
我怎样才能摆脱这些直线?
答案 0 :(得分:1)
解决方案是为每条铁路创建一条单独的路径。单个文件就足够了:
ogr2ogr -f GeoJSON \
-where "sov_a3 in ('CAN', 'MEX', 'USA')" \
railroads.json ne_10m_railroads_north_america.shp
不是创建单个网格,而是可以创建多个路径,如下所示:
svg.selectAll(".railroad")
.data(topojson.feature(na, na.objects.railroads).features)
.enter().append("path")
.attr("class", function(d) { return "railroad " + d.id; })
.attr("d", path);