1

我浏览了 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");

在此处输入图像描述

否则,我的代码实际上与演示中提供的代码相同。

我怎样才能摆脱这些直线?

4

1 回答 1

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);
于 2013-07-24T16:49:23.053 回答