Вычисление смещения события с помощью NetTopologySuite?

Имеет ли NetTopologySuite инструменты, необходимые для вычисления точки на заданном расстоянии вдоль и от смещения полилинии в перпендикулярном направлении?

Это было бы для размещения знаков на карте, которые описаны как 3,1 мили вдоль маршрута 242, в 50 футах от центральной линии. Я обнаружил NetTopologySuite.Geometries.Triangle.PerpendicularBisector, но для меня это не имеет особого смысла (кажется, возвращает формулу для перпендикулярной линии).

1 ответ

Да, возможно несколько способов. Один из способов сделать это - использовать буфер от центральной линии (загляните в NetTopologySuite.Operation.Buffer.BufferOp.Buffer), а затем просто найти расстояние до точки x вдоль буферизованной геометрии (NetTopologySuite.Operation.Distance.DistanceOp..Расстояние)

Чтобы получить смещение на одну точку от линейной геометрии, вы должны использовать LocationIndexedLine:

var gf = new NetTopologySuite.Geometries.GeometryFactory();
var l = gf.CreateLineString(new GeoAPI.Geometries.Coordinate[]
{
    new GeoAPI.Geometries.Coordinate(10, 10),
    new GeoAPI.Geometries.Coordinate(1000, 10),
});

var lid = new NetTopologySuite.LinearReferencing.LocationIndexedLine(l);
var p = lid.ExtractPoint(500, 10);

p находится в (510, 20)

Другие вопросы по тегам