使用JSTS删除Sliver多边形

时间:2016-03-10 18:15:37

标签: javascript coffeescript union gis

Hello GIS / JavaScript人员,

我正在开发一个小型的历史地理信息系统项目,目前正致力于几何运营。我正在使用CoffeeScript / JavaScript进行开发,并使用JSTS库获取帮助。虽然它具有强大的功能,但我正在努力处理文档......

问题在于:我有来自NaturalEarthData的国家几何。我希望能够统一邻国。由于相邻区域并不总是完美的,有时这两个区域之间的这些小条子多边形是统一的,这是相当丑陋的。我想摆脱它们,但只是不知道,如何。

QGIS具有“删除Sliver多边形”的强大功能,我非常希望这样做。有没有人知道如何在JTS / JSTS / GEOS中做到这一点(我猜这些都源于相同的代码库?)

感谢任何帮助。

example: Sliver Polygons

1 个答案:

答案 0 :(得分:2)

经过一段时间的思考,这个问题的答案实际上很明显:你想要的是删除这些条子多边形。它们的大小很容易识别出来:它们的面积非常小,只占世界上最小的梵蒂冈城的一小部分。

统一后,它们是多边形的内环,可以像这样识别和删除:

MIN_AREA_SIZE = 0.0000001
for innerRing, idx in polygon
   # the first is technically the outerRing, but that one usually has a larger area
   if (new jsts.geom.Polygon(innerRing).getArea() < MIN_AREA_SIZE
     polygon.slice(idx,1)  # delete inner ring from polygon