我有一个GeoJSON文件,其中包含一些小的细节和功能,我想使用D3进行渲染。不幸的是,由于D3,重要的细节丢失了 删除紧密间隔的多边形坐标对。
我已经建立了一个小例子来说明这一点。这两个链接都使用完全相同的GeoJSON数据,通过github同时使用D3-geo和mapbox呈现。 具体来说,请注意用红色圆圈标记的两个区域。
https://bl.ocks.org/alvra/eebb06be793bc06ff3ae01e6945298b6 https://gist.github.com/alvra/eebb06be793bc06ff3ae01e6945298b6
最上面的一个标记了多边形的一部分,该多边形使用许多紧密间隔的坐标对进行了倒圆,但是D3删除了大多数点,并绘制了一个粗糙的正方形末端。
下面的红色圆圈标记一个完全删除的小三角形。相邻的多边形应该完全接触,但也受D3精度损失的影响。
我还没有找到有关D3的坐标精度或(可配置的)特征尺寸限制的任何文档。 我已经尝试过降低D3-geo的EPSILON和相关的EPSILON2值,并且(对于我来说)可以解决此问题,尽管我确信甚至更小的功能也会受到影响。
假设这与以下事实有关:D3对多边形线段使用了适当的测地线,而其他映射库仅绘制了直线(在输出坐标空间中), 我希望这个过程只能引入新的观点。
我无法找到其他遇到类似问题的小功能用户,尽管令我惊讶的是,这从来没有出现过。 有没有人知道适当的处理方式?
通过epsilon,我将问题缩小到使用pointEqual()
。这表明clipCircle存在问题,即考虑到紧密间隔的坐标相等并删除它们。
确实,如果我禁用循环剪切projection.clipAngle(null)
,问题就消失了。