Как измерить расстояние между 2-мя точками
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Как измерить расстояние между 2-мя точками
Здравствуйте!
Проекция Долгота/Широта (WGS84)
Измеряю расстояние м/у 2мя точками функцией Distance() - значения получаются с ошибкой, как побороть? Хотя в проекции Гаусса Крюггера всё точно.
Проекция Долгота/Широта (WGS84)
Измеряю расстояние м/у 2мя точками функцией Distance() - значения получаются с ошибкой, как побороть? Хотя в проекции Гаусса Крюггера всё точно.
-
- Гуру
- Сообщения: 3058
- Зарегистрирован: 19 май 2010, 19:44
- Репутация: 189
Re: Как измерить расстояние между 2-мя точками
А что "линейка" показывает?
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Re: Как измерить расстояние между 2-мя точками
Линейкой и измеряю =) В WGS - больше показывает, а в Гаусе точно.
- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: Как измерить расстояние между 2-мя точками
agentbond007, я думаю, что Вам лучше файл с примером данных приложить к своему сообщению.
Получите ответ быстрее, потому что, мне так даже непонятно как именно Вы измеряете расстояние - функцией Distance() (запросы, mapbasic) или инструментом "линейка"(интерактивно).
Получите ответ быстрее, потому что, мне так даже непонятно как именно Вы измеряете расстояние - функцией Distance() (запросы, mapbasic) или инструментом "линейка"(интерактивно).
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Re: Как измерить расстояние между 2-мя точками
В своей программе(Delphi) измеряю функцией Distance() при помощи запроса MapBasic, а в MapInfo проверяю линейкой. На картинках измеряю расстояние между вершинами 1-2 линейка показывает 450 м в обоих проекциях, а при помощи функции в проекции WGS = 422.8, а в проекции GK = 448.2 один и тот же объект. Почему расхождение на 25,4 м не могу понять?
- Вложения
-
Distance.rar
- Слой Мапинфо в разных проекциях
- (2.35 КБ) 390 скачиваний
-
- WGS
- Distance 1-2 WGS.jpg (52.54 КБ) 10481 просмотр
-
- Gauss Kruger
- Distance 1-2 GK.jpg (55.65 КБ) 10481 просмотр
- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: Как измерить расстояние между 2-мя точками
Я так понимаю ситуацию.
1. так как инструмент "линейка" имеет свойство округлять измеряемые расстояния, для ясности ситуации, создайте линейный объект от точки 1 до точки 2, а далее уже будем измерять его длину.
2. если измерения на сфере (Меню / Карта / Режимы / Измерения проводятся) - тогда и в GK и в WGS получаем 448.2 метра
3. создаю два точечных объекта, совпадающие с точками 1 и 2, в карте WGS
интерактивно в окне Mapbasic ввожу команды
Откуда у Вас 422.8 - не знаю, смотрите свой код. Возможно, значения координат в WGS грубо округлены.
В Mapbasic я обычно явно указываю систему координат для измерений. Например так:
1. так как инструмент "линейка" имеет свойство округлять измеряемые расстояния, для ясности ситуации, создайте линейный объект от точки 1 до точки 2, а далее уже будем измерять его длину.
2. если измерения на сфере (Меню / Карта / Режимы / Измерения проводятся) - тогда и в GK и в WGS получаем 448.2 метра
3. создаю два точечных объекта, совпадающие с точками 1 и 2, в карте WGS
интерактивно в окне Mapbasic ввожу команды
Код: Выделить всё
dim o1 as object
dim o2 as object
' выбираю на карте первую точку
o1 = selection.obj
' выбираю на карте вторую точку
o2 = selection.obj
dim start_x as float
dim start_y as float
dim end_x as float
dim end_y as float
start_x = CentroidX(o1)
start_y = CentroidY(o1)
end_x = CentroidX(o2)
end_y = CentroidY(o2)
dim dist as float
dist = Distance(start_x,start_y,end_x,end_y,"m")
print dist
' результат 448.2
В Mapbasic я обычно явно указываю систему координат для измерений. Например так:
Код: Выделить всё
sCoorSys = TableInfo(sTableName, TAB_INFO_COORDSYS_CLAUSE)
Run Command "Set " + sCoorSys
oPolygon = Selection.obj
fAreaFact = CartesianArea(oPolygon,"sq m")
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Re: Как измерить расстояние между 2-мя точками
Скорей всего Вы правы насчёт округлённых координат WGS, при использовании функций ObjectNodeX() и ObjectNodeY() получаю координаты с 4-мя знаками после запятой, а нужно больше. А как эта точность настраивается программно?
- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: Как измерить расстояние между 2-мя точками
Быть может проблема не в ObjectNodeX()?agentbond007 писал(а):Скорей всего Вы правы насчёт округлённых координат WGS, при использовании функций ObjectNodeX() и ObjectNodeY() получаю координаты с 4-мя знаками после запятой, а нужно больше. А как эта точность настраивается программно?
Переключитесь на соответствующую району работ зону UTM или СК-42, получите координаты с сантиметровой точностью. Считайте длину на плоскости через CartesianDistance() или на сфере через Distance().
Зачем Вам WGS-84?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей