Я работаю в aspnetcore, используя самую последнюю версию GeoAPI и NetTopologySuite для ядра. То, что я пытаюсь сделать, должно быть довольно простым, но я, похоже, не могу найти правильный способ сделать это, либо экспериментируя с поиском в Google. Или даже как это назвать, если честно, что делает поиск в Google сложнее.
Надеюсь, кто-нибудь ударит меня в правильном направлении.
У меня есть мультиполигон, который может состоять из одного или нескольких полигонов. Я хочу создать буфер вокруг точек этого мультиполигона на расстоянии X. Это в основном наложение карты с интересными концентрическими областями. Заданная точка интереса может попадать в формы исходного многоугольника ... или в первую или вторую буферную область. Вроде как лук, если ядро лука имело случайные формы.
Эта первая часть проста. Просто переберите точки мультиполигона и примените буфер к каждой точке, используя метод буфера:
var bufferZonePoints = new List<IGeometry>();
foreach(var point in multiPolygon.Coordinates)
{
bufferZonePoints.Add(point.Buffer(x));
}
var bufferZone = this.geometryFactory.CreateMultiPolygon(bufferZonePoints);
Отлично. Но это дает мне еще один мультиполигон, состоящий из тысяч очков. Когда я использую это как наложение карты, я получаю ураган кругов, следуя смутным очертаниям оригинальной формы, похожей на рисунок спирографа. Все, что я хочу, это в основном внешняя граница всех буферных кругов без всех точек в центре.
Я пытался создать ConvexHull для мультиполигона, и сначала он выглядел правильно, пока не понял, что он сбривает углы снаружи, чтобы получить наименьший многоугольник, в который вписываются все эти точки (что и делают выпуклые корпуса после все). Но это вызывает проблемы в материале, который я накладываю. Некоторые интересные объекты могут находиться за пределами фактического буфера, но могут быть внутри, если выпуклая оболочка решает округлить неровную область зоны. (Я надеюсь, что это имеет смысл).
По сути, я пытаюсь взять этот мультиполигон, состоящий из всех этих буферизованных точек, и разделить его на один полигон, который составляет все самые внешние границы буферов. Но без всего спирографического мусора посередине. Я действительно не хочу ConvexHull. Я также попробовал Union и класс GeometryCombiner, но ни один из них не делает то, что я хочу.
Я не знаю, поможет ли это сделать эту грязь более ясной, но в QGIS есть настройка, при которой, когда вы опускаете два круга и круги пересекаются, они объединяются в один большой шарик, похожий на мыльные пузыри, и границы между ними исчезают. , Это то, что я пытаюсь сделать с помощью кода.
Имеет ли это смысл? Кто-нибудь может помочь?