Координаты точки

MapInfo, MapBasic
Ответить
Michael2000
Интересующийся
Сообщения: 32
Зарегистрирован: 19 июн 2017, 06:21
Репутация: -3

Координаты точки

Сообщение Michael2000 » 15 ноя 2017, 08:03

Добрый день уважаемые.
Пытаюсь получить координаты точек, выполняя следующий код:

Код: Выделить всё

Set Map CoordSys NonEarth Units "m" Bounds (609413.2115, 6749861.88848) (609501.4865, 6749924.73195)
Fetch First From Selection
  Do While Not EOT(Selection)
	MyObj = Selection.obj	
    If ObjectInfo(myobj, OBJ_INFO_TYPE) = OBJ_POINT Then
	  X = ObjectGeography(MyObj, OBJ_GEO_POINTX)
	  Y = ObjectGeography(MyObj, OBJ_GEO_POINTY)
	  Print "X=" & X
	  Print "Y=" & Y
    end if
  Fetch Next From Selection
  loop	
Как видно из Bounds координаты точки должны быть в указанном диапазоне, но в результате получается
X=5.48087
Y=60.7035
Традиционный вопрос: что я делаю неправильно?

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2229
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1501
Откуда: Казань

Re: Координаты точки

Сообщение Игорь Белов » 15 ноя 2017, 08:08

ObjectGeography() возвращает географические координаты. Всегда.
The purpose of computing is insight, not numbers

Michael2000
Интересующийся
Сообщения: 32
Зарегистрирован: 19 июн 2017, 06:21
Репутация: -3

Re: Координаты точки

Сообщение Michael2000 » 15 ноя 2017, 08:21

Тогда что лучше использовать?

Аватара пользователя
MI user
Участник
Сообщения: 63
Зарегистрирован: 14 янв 2013, 17:08
Репутация: 33
Откуда: Оренбург

Re: Координаты точки

Сообщение MI user » 15 ноя 2017, 09:38

Для объектов типа Точка можно использовать CentroidX( ) и CentroidY( ) для получения координат.

Michael2000
Интересующийся
Сообщения: 32
Зарегистрирован: 19 июн 2017, 06:21
Репутация: -3

Re: Координаты точки

Сообщение Michael2000 » 15 ноя 2017, 13:14

Проверял, Centroid возвращает те же значения.

Аватара пользователя
MI user
Участник
Сообщения: 63
Зарегистрирован: 14 янв 2013, 17:08
Репутация: 33
Откуда: Оренбург

Re: Координаты точки

Сообщение MI user » 15 ноя 2017, 13:19

Michael2000 писал(а):
15 ноя 2017, 13:14
.
Проверял, Centroid возвращает те же значения
Перед вызовом функции, возвращающей координаты, необходимо принудительно установить требуемую систему координат.
Например, командой:

Код: Выделить всё

Set Coordsys Table Selection
Или как у Вас, но без Map:

Код: Выделить всё

Set CoordSys NonEarth Units "m" Bounds (609413.2115, 6749861.88848) (609501.4865, 6749924.73195)

Michael2000
Интересующийся
Сообщения: 32
Зарегистрирован: 19 июн 2017, 06:21
Репутация: -3

Re: Координаты точки

Сообщение Michael2000 » 16 ноя 2017, 05:26

MI user писал(а):
15 ноя 2017, 13:19
Перед вызовом функции, возвращающей координаты, необходимо принудительно установить требуемую систему координат.
Большое спасибо за подсказку.

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей