RUS  ENG 

Использование функции GetClosestElementByXY

Страницы: 1
RSS
Использование функции GetClosestElementByXY, определении ближайшего объекта и расстояния до него
 
Здравствуйте!
Подскажите, пожалуйста, всё ли верно я делаю при определении ближайшего объекта и расстояния до него.

создадим точку, в которую будет записана ближайшая точка найденного объекта
pointAddress := CoZPoint.Create;

получим точку, к которой будем искать ближайший объект
pointTermo := LayerTermo.Elements.GetElement(sysTermo).GetCenter;

получим sys ближайшего объекта в окрестности 2500 м, среди выделенных адресов:
sysAddress := LayerAddress.GetClosestElementByXYpointTermo.X, pointTermo.Y, 2500, true, pointAddress);

в pointAddress функция записала ближайшую точку найденного объекта, найдем расстояние между исходной точкой и найденной
Geom := CoZGeometry.Create;
distance := Geom.Distance(pointTermo.X, pointTermo.Y, pointAddress.X, pointAddress.Y);

вопрос следующий:
если точка pointTermo лежит вне контура объекта адреса, то дистанция считается хорошо и равна 5, 12, 4 метрам.
если точка pointTermo лежит внутри контура объекта, то дистанция равна 44000, 25500, 42200 метрам.

Подскажите, пожалуйста, в чем может быть причина?

клиент 10.0.0.8084u.x64
сервер 10.0.0.8245
 
Distance method (ZGeometry) Находит расстояние между двумя точками по элементарной формуле - значит нужно проверить что вы получаете в качестве X и Y

Геометрически что представляют собой ближайшие объекты, они в одном слое? Если это кривые, то что будет их центрами, и какой ближайший объект в результате будет найден?
Обычно, если длины и расстояния кривые, или количество объектов попадают в область поиска радиусом... больше или меньше чем нужно, значит в проге не указана проекция карты и слоя, в которой все это нужно искать и мерить. Проекцию нужно обязательно задавать одинаковую для слоев и карты чтобы нормально считалось.
Изменено: Aly - 20.09.2023 17:05:24
Страницы: 1