Van*_*ing 10 javascript point-in-polygon geojson node.js
是否有一些node.js或javascript的库,它提供了一个函数来检查坐标是否在geojson多边形中?
我正在尝试创建一个小的HTTP API,告诉我哪些多边形(代表国家,县,城市等)包含给定的坐标.
我想我将在内存中保存所有多边形及其边界框的列表,然后首先检查每个多边形,如果它的边界框包含坐标.如果是,那么它将检查坐标是否在多面体本身.
我知道有一个名为"clipper"的库被移植到javascript,但似乎该库不提供简单的"pointInPolygon"函数,即使库本身非常强大.这个库仍然可以吗?
另外,我发现了另一个名为"geojson-js-utils"的库,但它似乎不支持多重多边形(至少它没有在那里提到)
我发现一些其他的库可以检查一个点是否在多边形中,但我不知道如何使用它们来检查一个点是否在多边形中.
任何提示?
在最新的 Clipper中,有一个高效的 PointInPolygon 函数。它使用Hormann 和 Agathos 的算法“任意多边形的多边形问题中的点” 。
Javascript Clipper 的 PointInPolygon 函数的文档说:
ClipperLib.Clipper.PointInPolygon()
Number PointInPolygon(IntPoint pt, Path poly)
Run Code Online (Sandbox Code Playgroud)
如果为 false,则返回 0;如果 pt 在多边形上,则返回 -1;如果 pt 在多边形上,则返回 +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
Run Code Online (Sandbox Code Playgroud)
要测试多重多边形,您可以遍历子多边形并使用 PointInPolygon 检查它们。
| 归档时间: |
|
| 查看次数: |
2694 次 |
| 最近记录: |