如何从110米TopoJson世界地图中删除一条线?

时间:2013-09-27 01:48:15

标签: d3.js maps topojson

我使用带有110m world map的D3和mercator投影创建了一张地图。我将地图旋转了-10度以使其按照我想要的方式排列,然后设置笔划和填充。在这之后,我注意到楚科奇半岛有一条线(经常在阿拉斯加左边找到的那条线)。

Chukchi Peninsula

在GitHub和another map made with this projection上查看渲染,看起来这条线实际上在数据中。

Rendering from GitHub Another example

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

1 个答案:

答案 0 :(得分:4)

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

将来,topojson命令行工具应该能够通过将跨越antimeridian (±180° longitude)的多边形拼接在一起来解决这个问题,从而删除当前可用几何体中经常出现的antimeridian切割

情况已经是topojson删除了抗癫痫切割的情况。然而,目前它只能在单个环中去除反默认切割,这里俄罗斯多边形已被分成两个(或更多)环,在那里它穿过反子弹; topojson还不够智能,无法将在antimeridian处切割的多圈环缝合成一个环。 (但是,您可以使用topojson.mesh来执行此操作。)

至于为何为什么首先出现了反射的切割:许多地理工具并不完全支持球面坐标,所以通常会找到沿着反射数据切割多边形的数据,以防止在投影时出现visual artifacts 。 (你可以在我的For Example talk中读到有关反射击切割的信息。)D3和topojson使用真正的球面坐标和点之间的大弧度插值,这样你就可以表示围绕极点或穿过反射线的多边形而没有切割。但是,由于大多数现有数据都是在antimeridian中预先准备好的,topojson必须删除切割以恢复真正的球形几何体。

相关问题