如何阻止D3.js从线性多边形创建无限区域

How to stop D3.js from creating infinite areas from linear polygons

本文关键字:多边形 创建 无限 区域 线性 何阻止 D3 js      更新时间:2023-09-26

我试图用D3绘制topojson特征,它们是由TileStack从PostGIS数据库生成的。小的三角形多边形倾向于简化为"线":3个点在一条直线上。如果TopoJSON是这样的,则多边形被绘制为一条线:

"arcs":[[[609,278],[-1,-1],[-1,-1],[2,2]]]

但是,如果TopoJSON是这样的:

"arcs":[[[609,278],[-2,-2],[1,1],[1,1]]]}

画出了一个带有"线形"洞的无限区域,把地图弄得一团糟。当特征为线形时,如何阻止D3创建无限区域?

您可以在此处看到TopoJSON的两种样式的效果:http://research.geodan.nl/sites/vectortiling/test/faultytile.html

这些无限特征的更大影响在这里可见:http://research.geodan.nl/sites/vectortiling/

这确实是D3中的一个bug,请参阅:https://github.com/mbostock/d3/issues/2025我通过检查多边形的面积是否为零创建了一个基本修复,如果是,则在pointInPolygon函数处返回false。Jason和Mike正在努力,所以我希望在某个时候会有一个不会创建无限多边形的D3版本:)