【问题标题】:Artifacts in Natural Earth Data railroad mapNatural Earth Data 铁路地图中的人工制品
【发布时间】:2013-07-24 04:16:35
【问题描述】:

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

否则我的代码与演示中提供的代码几乎相同。

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

【问题讨论】:

  • 看起来它可能是实际数据中的伪影,即您必须清理它。
  • 我确定它与数据有关,但不清楚它是数据集中固有的还是我使用它的方式。我可能需要确保不相关的网格数据没有连接在一起。如果我将所有内容都转储到一个文件中,则加拿大铁路都不会出现,但会有更多的直线伪影。
  • 整个铁路网格是一条路径。至少有一些人工制品来自美国 48 度较低的网格与阿拉斯加的网格之间的连接。
  • 您可以在QGIS等程序中查看数据。
  • QGIS 看起来很棒。感谢您的链接。

标签: d3.js


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    相关资源
    最近更新 更多