Вычисление смещения события с помощью 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)