Быстрый поиск, если точки принадлежат многоугольнику (NetTopologySuite.Geometries, C #. .Net core 2.2) - PullRequest
0 голосов
/ 17 декабря 2018

Существует ли эффективный способ найти точки типа 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.

1 Ответ

0 голосов
/ 18 декабря 2018

Для одного из многих тестов предикатов используйте 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;
}

См. Вопрос на GitHub

...