Страница 1 из 1

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

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

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

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
Традиционный вопрос: что я делаю неправильно?

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

Добавлено: 15 ноя 2017, 08:08
Игорь Белов
ObjectGeography() возвращает географические координаты. Всегда.

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

Добавлено: 15 ноя 2017, 08:21
Michael2000
Тогда что лучше использовать?

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

Добавлено: 15 ноя 2017, 09:38
MI user
Для объектов типа Точка можно использовать CentroidX( ) и CentroidY( ) для получения координат.

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

Добавлено: 15 ноя 2017, 13:14
Michael2000
Проверял, Centroid возвращает те же значения.

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

Добавлено: 15 ноя 2017, 13:19
MI user
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)

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

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