Node.js / Javascript库来testing点是否在geojson multipolygon中

是否有一些node.js或一般的JavaScript的库,提供了一个函数来检查坐标是否在geojson multipolygon?

我试图创build一个小的HTTP API,告诉我哪个多面体(代表国家,县,城市等)包含给定的坐标。

我以为我会在内存中列出所有多边形及其边界框,然后首先检查每个多边形的边界框是否包含坐标。 如果是,那么它将检查坐标是否在多面体本身中。

我知道有一个叫做“clipper”的库被移植到了javascript ,但是它似乎并没有提供一个简单的“pointInPolygon”函数,即使库本身是非常强大的。这个库还有可能吗?

另外,我发现了另一个名为“geojson-js-utils”的库,但它似乎不支持多面体 (至less在那里没有提到)

我发现一些其他库可以检查一个点是否在一个多边形,但我不知道如何使用它们来检查一个点是否在一个多边形。

任何提示?

在最新的Clipper中有一个高效的PointInPolygon函数。 它使用Hormann&Agathosalgorithm中的Point in Polygon Problem for Arbitrary Polygons 。

Javascript Clipper的PointInPolygon函数的文档说:


ClipperLib.Clipper.PointInPolygon()

Number PointInPolygon(IntPoint pt, Path poly) 

如果为false,则返回0;如果pt在poly上,则返回-1;如果pt在poly中,则返回+1。

用法:

 var poly = [{X:10,Y:10},{X:110,Y:10},{X:110,Y:110},{X:10,Y:110}]; var pt = new ClipperLib.IntPoint(50,50); var inpoly = ClipperLib.Clipper.PointInPolygon(pt, poly); // inpoly is 1, which means that pt is in polygon 

要testingmultipolygon,可以遍历子多边形并使用PointInPolygon检查它们。

Interesting Posts