检查多边形内部或外部的a点(纬度,经度)

时间:2013-09-18 10:45:34

标签: latitude-longitude

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

1 个答案:

答案 0 :(得分:1)

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

例如,

JTS Topology Suite是Java中2D空间谓词和函数的强大开源API。它提供了测试几何体(例如Point)是否包含在另一个几何体(例如Polygon)中的方法。

以下是代码段:

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

中定义