gpt4 book ai didi

javascript - 用于测试点是否在 geojson 多多边形中的 Node.js/Javascript 库

转载 作者:IT老高 更新时间:2023-10-28 23:27:41 26 4
gpt4 key购买 nike

是否有一些用于 node.js 或 javascript 的库,提供检查坐标是否在 geojson 多面体中的功能?

我正在尝试创建一个小型 HTTP API,它告诉我哪些多面体(代表国家、县、市等)包含给定坐标。

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

我知道有一个名为“clipper”的库,它有 ported to javascript ,但是好像库没有提供简单的“pointInPolygon”功能,即使库本身很强大。。用这个库还可以吗?

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

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

有什么提示吗?

最佳答案

newest Clipper有一个有效的 PointInPolygon 函数。它使用算法The Point in Polygon Problem for Arbitrary Polygons霍曼和阿加索斯。

documentation of Javascript Clipper's PointInPolygon function说:


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

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

关于javascript - 用于测试点是否在 geojson 多多边形中的 Node.js/Javascript 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20379194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com