2

让我们考虑一个具有 N 个点的多边形 (P),每个点用纬度和经度表示。现在我想检查一个新点 P1(纬度和经度)是否在多边形内部/外部?

4

1 回答 1

1

多边形内的点测试是一种通用算法,在许多地理空间库中以不同的编程语言实现。

例如, JTS Topology Suite是 Java 中二维空间谓词和函数的强大开源 API。它提供了测试一个几何体(例如点)是否包含在另一个几何体(例如多边形)中的方法。

这是一个代码片段:

doube lat = ....; // latitude in decimal degrees
double lon = ...; // longitude in decimal degrees
Coordinate[] points = ... // construct/initialize points for polygon

// now construct the polygon and test the point
GeometryFactory gf = new GeometryFactory();
LinearRing jtsRing = gf.createLinearRing(points);
Polygon poly = gf.createPolygon(jtsRing, null);
Coordinate coord = new Coordinate(lon, lat);
Point pt = gf.createPoint(coord);
if (poly.contains(pt)) {
  // point is contained within polygon
} else {
  // point is NOT contained within polygon
}

contains() 几何谓词在JTS javadoc中定义。

另请参阅github 上的 JTS 项目

于 2015-09-17T13:41:02.397 回答