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

Трансляция координат ГауссКрюгер->Пулково42 в MapBasic

Добавлено: 13 июл 2004, 13:03
Vitaly Bogomolov
Дано:
9 зона ГК. Координаты точки 9327220.89, 5556686.44 в метрах.

После ручных манипуляций в MapInfo: открыть таблицу в проекции ГК-9, "сохранить как" с проекцией Пу42
преобразованные координаты точки равны 48.584184000, 50.116388000 в градусах. OK.

Пытаемся проделать эту процедуру в окне MapBasic:

'создаем временную таблицу
Create Table temp (ID Integer)

'создаем колонку obj в проекции ГК-9зона
Create Map For temp CoordSys Earth Projection 8, 1001, "m", 51, 0, 1, 9500000, 0

'отказываемся от транзакций
Set Table temp FastEdit On

'пишем во временную таблицу обьект с нужными координатами
Insert Into temp (ID, obj) Values (1, CreatePoint(9327220.89, 5556686.44))

'переходим на первую (и единственную) строку временной таблицы
Fetch First From temp

'выводим записанные координаты
print CentroidX(temp.obj)
print CentroidY(temp.obj)
'получаем 32500000, -10002137.5 ???

'сохраняем в другую временную таблицу с проекцией Пу-42
Commit Table temp As "temp1" CoordSys Earth Projection 1, 1001

'открываем эту таблицу
Open Table "temp1"

'переходим на первую (и единственную) строку
Fetch First From temp1

'выводим записанные координаты
print CentroidX(temp1.obj)
print CentroidY(temp1.obj)
'получаем 32500000, -10002137.5 ???

Что я делаю не так?

Re: Трансляция координат ГауссКрюгер->Пулково42 в MapBasi

Добавлено: 15 июл 2004, 07:04
Vitaly Bogomolov
Разобрался с проблемой:

>Дано:
>9 зона ГК. Координаты точки 9327220.89, 5556686.44 в метрах.

>После ручных манипуляций в MapInfo: открыть таблицу в проекции >ГК-9, "сохранить как" с проекцией Пу42
>преобразованные координаты точки равны 48.584184000, >50.116388000 в градусах. OK.

[skip]

>'создаем колонку obj в проекции ГК-9зона
>Create Map For temp CoordSys Earth Projection 8, 1001, "m", 51, 0, 1, >9500000, 0

вот здесь надо включить сисему координат созданной таблицы, иначе
CreatePoint интерпретирует аргументы как градусы системы координат по умолчанию:

Set CoordSys Table temp

>'пишем во временную таблицу обьект с нужными координатами
>Insert Into temp (ID, obj) Values (1, CreatePoint(9327220.89, >5556686.44))

>'переходим на первую (и единственную) строку временной таблицы
>Fetch First From temp

переключаемся на Пулково42:

Set CoordSys Earth Projection 1, 1001

'выводим записанные координаты
print CentroidX(temp.obj)
print CentroidY(temp.obj)
'получаем 48.584184000,50.116388000 в градусах