5

我使用 D3 创建了一张带有110m 世界地图和墨卡托投影的地图。我将地图旋转了 -10 度,让它按照我想要的方式排列,然后设置描边和填充。完成此操作后,我注意到有一条线穿过楚科奇半岛(通常在阿拉斯加左侧发现的那一点)。

楚科奇半岛

查看 GitHub 上的渲染以及使用此投影制作的另一张地图,似乎这条线实际上在数据中。

从 GitHub 渲染 另一个例子

有没有办法摆脱它(编辑 TopoJSON,重新生成它的形状,或其他方式)?

4

1 回答 1

5

现在,您需要手动修复数据,例如直接编辑 TopoJSON,或者将 Shapefile 转换为 GeoJSON,然后进行类似的编辑,或者使用 Shapefile 编辑器。

将来,topojson命令行工具应该能够通过将穿过反子午线(±180° 经度)的多边形缝合在一起来解决此问题,删除当前可用几何图形中经常存在的反子午线切割。

topojson消除反子午线切割的情况已经如此。然而,目前它只能去除单个环内的逆子午线切割,而这里的俄罗斯多边形在穿过逆子午线的地方被分成两个(或更多)环;topojson还不够聪明,无法将在逆子午线上切割的多个环缝合成一个环。(但是,您也许可以使用topojson.mesh来执行此操作。)

至于为什么会出现逆子午线切割:许多地理工具并不完全支持球坐标,因此通常会找到沿逆子午线切割多边形的数据,以防止投影时出现视觉伪影(您可以在我的For Example talk中阅读有关反子午线切割的信息。)D3 并topojson在点之间使用带有大弧插值的真实球面坐标,以便您可以表示围绕极点的多边形或在没有切割的情况下穿过反子午线。但是,由于大多数现有数据是在反子午线上预先切割的,topojson因此必须去除切割才能恢复真实的球面几何形状。

于 2013-09-27T20:39:46.013 回答