快速查找点是否属于多边形(NetTopologySuite.Geometries,C#..net core 2.2)

Fast find if points belong to polygon (NetTopologySuite.Geometries, C#. .net core 2.2)

是否有一种有效的方法来查找 NetTopologySuite.Geometries.Point 类型的点,这些点位于 NetTopologySuite.Geometries.PointPolygon 类型的给定多边形内 使用 .net 核心 2.2。 我尝试按照下面的文档进行操作,但没有成功:https://nettopologysuite.github.io/html/class_net_topology_suite_1_1_algorithm_1_1_locate_1_1_indexed_point_in_area_locator.html#ad28b305b77c52327b7787ca8016c0fd7

对于一对多谓词测试,使用 GeoAPI.Geometries.Prepared.IPreparedGeometry。 您可以使用 NetTopologySuite.Geometries.Prepared.PreparedGeometryFactory.

创建一个
private IList<IPoint> Contains(IGeometry geom, IEnumerable<IPoint> points) {
    var prepGeom = new NetTopologySuite.Geometries.Prepared.PreparedGeometryFactory().Prepare(geom);
    var res = new List<IPoint>();
    foreach(var point in points) {
        if (prepGeom.Contains(point)) res.Add(point);
    }
    return res;
}

See issue on GitHub