создание проекции с аффинными преобразованиями
-
- Новоприбывший
- Сообщения: 7
- Зарегистрирован: 16 дек 2010, 09:51
- Репутация: 0
создание проекции с аффинными преобразованиями
Вопрос.
В файле mapinfo.prj создаю новую проекцию меркатора на эллипсоиде красовского
с аффинными преобразованиями
т.е.
"название", 1008,9999,3, (датум 8 параметров), 7, осевой,0,1,смещение,смещение,7, (6 аффинных коэффициентов)
после этого, данная проеция "работает правильно" (т.е. я могу таблицы из другой проекции перевести в эту), НО!
mapinfo не дает ни создать новую таблицу в этой проекции, ни импортировать mif/mid в ней
ругается на "встретилось [], а ожидалось )"
где ошибка?
В файле mapinfo.prj создаю новую проекцию меркатора на эллипсоиде красовского
с аффинными преобразованиями
т.е.
"название", 1008,9999,3, (датум 8 параметров), 7, осевой,0,1,смещение,смещение,7, (6 аффинных коэффициентов)
после этого, данная проеция "работает правильно" (т.е. я могу таблицы из другой проекции перевести в эту), НО!
mapinfo не дает ни создать новую таблицу в этой проекции, ни импортировать mif/mid в ней
ругается на "встретилось [], а ожидалось )"
где ошибка?
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: создание проекции с аффинными преобразованиями
строку из mif/mid и mapinfo.prj приведите.
-
- Новоприбывший
- Сообщения: 7
- Зарегистрирован: 16 дек 2010, 09:51
- Репутация: 0
Re: создание проекции с аффинными преобразованиями
mapinfo.prj:
"система", 1008, 9999, 3, 23.56, -140.95, -79.8, 0.0, -0.35, -0.79, -0.22, 0,7, 63, 0, 1, 500000, 0, 7, 1.0000047619, -0.0000028933, -499929.3400297030, 0.0000029449, 1.0000048223, -5355580.4074838500
в mif/mid, соответственно, тоже самое:
CoordSys Earth 1008, 9999, 3, 23.56, -140.95, -79.8, 0.0, -0.35, -0.79, -0.22, 0,"m", 63, 0, 1, 500000, 0, 7, 1.0000047619, -0.0000028933, -499929.3400297030, 0.0000029449, 1.0000048223, -5355580.4074838500
"система", 1008, 9999, 3, 23.56, -140.95, -79.8, 0.0, -0.35, -0.79, -0.22, 0,7, 63, 0, 1, 500000, 0, 7, 1.0000047619, -0.0000028933, -499929.3400297030, 0.0000029449, 1.0000048223, -5355580.4074838500
в mif/mid, соответственно, тоже самое:
CoordSys Earth 1008, 9999, 3, 23.56, -140.95, -79.8, 0.0, -0.35, -0.79, -0.22, 0,"m", 63, 0, 1, 500000, 0, 7, 1.0000047619, -0.0000028933, -499929.3400297030, 0.0000029449, 1.0000048223, -5355580.4074838500
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: создание проекции с аффинными преобразованиями
Правильные строки для MAPINFOW.prj :
Эта СК появляется в списке доступных проекций, позволяет создавать таблицы и присваивается окнам карт.
Для MIF файла:
Хотя для MIF подходит и присланный вами, с единственным исключением в начале должно быть
- в приложении - два MIF/MID файла:
Увы, но синтаксис команд, устанавливающих систем координат в разных местах MI - различается.
Правильную строку для формата MIF можно получить командой
---
Теперь позвольте вопрос, до которого у меня не дошли руки, а с ходу не получилось, вы 6 параметров аффинного преобразования рассчитывали для каких систем координат? Или вернее от какой к какой? От исходных к результирующим или от результирующих к исходным? Или там все еще сложней?
Код: Выделить всё
"--- SC Unknown and Special ---"
"SC Unknown", 1008, 9999, 3, 23.56, -140.95, -79.8, 0, -0.35, -0.79, -0.22, 0, 7, 63, 0, 1, 500000, 0 , 7, 1.0000047619, -0.0000028933, -499929.34002970299, 0.0000029449, 1.0000048223, -5355580.4074838497
Для MIF файла:
Код: Выделить всё
CoordSys Earth Projection 8, 9999, 3, 23.56, -140.95, -79.8, 0, -0.35, -0.79, -0.22, 0, "m", 63, 0, 1, 500000, 0 Affine Units "m", 1.0000047619, -0.0000028933, -499929.34002970299, 0.0000029449, 1.0000048223, -5355580.4074838497
Код: Выделить всё
CoordSys Earth Projection
- Untitled.MIF - это файл с вашей строкой. он нормально прошел импорт в MI
- Untitled_3.MIF - это файл созданный на основе строки из MAPINFOW.prj, указанной выше, и затем выгруженный в формат MIF.
Увы, но синтаксис команд, устанавливающих систем координат в разных местах MI - различается.

Правильную строку для формата MIF можно получить командой
Код: Выделить всё
print TableInfo(имя_таблицы,29)
Теперь позвольте вопрос, до которого у меня не дошли руки, а с ходу не получилось, вы 6 параметров аффинного преобразования рассчитывали для каких систем координат? Или вернее от какой к какой? От исходных к результирующим или от результирующих к исходным? Или там все еще сложней?
-
- Новоприбывший
- Сообщения: 7
- Зарегистрирован: 16 дек 2010, 09:51
- Репутация: 0
Re: создание проекции с аффинными преобразованиями
1. по аффинным преобразованиям: коэффициенты расчитываются от проекции к искомой системе. т.е., как в данной строке, у меня есть местная система координат, которая является переуравненным 42 годом со сдвигом. вот и получается, сначала проекция 42 год, а потом 6 аффинных коэффициентов.
2. по сути вопроса: спасибо, но ошибка не в оформлении. возможно даже данный вопрос к разработчикам, потому что после нескольких экспериментов выяснилось, что данная ошибка у меня на всех компах с Mapinfo 9.5.1, а вот на 9.0 или 10.0 такой ошибки нет.
2. по сути вопроса: спасибо, но ошибка не в оформлении. возможно даже данный вопрос к разработчикам, потому что после нескольких экспериментов выяснилось, что данная ошибка у меня на всех компах с Mapinfo 9.5.1, а вот на 9.0 или 10.0 такой ошибки нет.
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: создание проекции с аффинными преобразованиями
Т.е. если убрать параметры аффинного преобразования из строки проекции, мы получим некоторые проекционные координаты для наших геоданных. А коэффициенты аффинного преобразования задают переход от этих координат к координатам проекции с преобразованием?sjh писал(а):1. по аффинным преобразованиям: коэффициенты расчитываются от проекции к искомой системе. т.е., как в данной строке, у меня есть местная система координат, которая является переуравненным 42 годом со сдвигом. вот и получается, сначала проекция 42 год, а потом 6 аффинных коэффициентов.
-
- Новоприбывший
- Сообщения: 7
- Зарегистрирован: 16 дек 2010, 09:51
- Репутация: 0
Re: создание проекции с аффинными преобразованиями
именно такBoris писал(а): Т.е. если убрать параметры аффинного преобразования из строки проекции, мы получим некоторые проекционные координаты для наших геоданных. А коэффициенты аффинного преобразования задают переход от этих координат к координатам проекции с преобразованием?
П.С. выяснил я, что не так с проекциями. косяк mapinfo. он где-то неправильно обрабатывает числа и, видимо, переполняется память. т.е. если осевой меридиан двузначный, то все прокатывает (как в примере 63), а если трехзначный, то уже нет. но если при трехзначном меридиане убрать по одному знаку после запятой, - то опять все работает =)
-
- Участник
- Сообщения: 67
- Зарегистрирован: 27 ноя 2009, 14:09
- Репутация: 0
Re: создание проекции с аффинными преобразованиями
Извиняюсь, что встреваю в тему, но у меня схожая ситуация: Надо векторную карту острова из местной системы координат привязать к Гауса-Крюгера. Я делал через доп. программку Register Vector. Один вектор привязался идеально. Другой выдает ошибку "встретилось [=], а ожидалось [Identificator]" при этом Регистратор векторов вешает Мапинфо (9.5.1) вне зависимости от результата своей работы. Приходится перегружать Мапинфо. И так с каждым вектором.
Пробовал притянуть файлы векторов через правку mif файла путем вставки
CoordSys Earth Projection 8, 1001, "m", 33, 0, 1, 6500000, 0 Bounds (-1749281.53901, -10002137.4978) (14749281.539, 10002137.4978) из мифа, сделанного из карты в проекции ГК42 и дополнения
строки TRANSFORM 0, 0, 6612393, 6882537 (коэффициенты подобрал методом многочисленных тыков). Почти удалось, но притягиваемый остров не полностью встает на место, т.е. имеются непонятные отклонения. Например: южный конец встает куда надо, северный ползет немного на восток. Чего надо подкрутить еще, чтобы все встало на место?
вот шапка мифа вектора, который я притягиваю:
Version 450
Charset "WindowsCyrillic"
Delimiter ","
CoordSys Earth Projection 8, 1001, "m", 33, 0, 1, 6500000, 0 Bounds (-1749281.53901, -10002137.4978) (14749281.539, 10002137.4978)
TRANSFORM 0, 1.01, 6612393, 6882537
Columns 11
КадастровыйНомер Char(50)
ТипЦели Integer
Код Integer
Тип Integer
Название Char(100)
Примечание Char(150)
ВторичныйКод Integer
Error Logical
Celis Char(70)
Площадь_по_документу Float
Наименование Char(128)
Data
Подскажите пожалуйста, где еще чего исправить?
Пробовал притянуть файлы векторов через правку mif файла путем вставки
CoordSys Earth Projection 8, 1001, "m", 33, 0, 1, 6500000, 0 Bounds (-1749281.53901, -10002137.4978) (14749281.539, 10002137.4978) из мифа, сделанного из карты в проекции ГК42 и дополнения
строки TRANSFORM 0, 0, 6612393, 6882537 (коэффициенты подобрал методом многочисленных тыков). Почти удалось, но притягиваемый остров не полностью встает на место, т.е. имеются непонятные отклонения. Например: южный конец встает куда надо, северный ползет немного на восток. Чего надо подкрутить еще, чтобы все встало на место?
вот шапка мифа вектора, который я притягиваю:
Version 450
Charset "WindowsCyrillic"
Delimiter ","
CoordSys Earth Projection 8, 1001, "m", 33, 0, 1, 6500000, 0 Bounds (-1749281.53901, -10002137.4978) (14749281.539, 10002137.4978)
TRANSFORM 0, 1.01, 6612393, 6882537
Columns 11
КадастровыйНомер Char(50)
ТипЦели Integer
Код Integer
Тип Integer
Название Char(100)
Примечание Char(150)
ВторичныйКод Integer
Error Logical
Celis Char(70)
Площадь_по_документу Float
Наименование Char(128)
Data
Подскажите пожалуйста, где еще чего исправить?
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: создание проекции с аффинными преобразованиями
Оператор MIF файла TRANSFORM имеет 4 параметра, а аффинное требует 6. Аффинное задается при задаче строки координатной системы, а это выражение согласно документации предназначено для изменения знака у координат или направления осей координат. Вполне возможно, что если карта не имеет искажений за масштаб, то 4 равны 6.
Раз не подошли аффинные преобразования, то ваш трансформация не была простым переносом-поворотом.
Скорее всего она была сделана на основе СК-63 или МСК вашего региона (Что-то западней Москвы, но восточней Калининграда
) и речь идет о смещенном начальном меридиане и нулевой точке отсчета.
Раз не подошли аффинные преобразования, то ваш трансформация не была простым переносом-поворотом.
Скорее всего она была сделана на основе СК-63 или МСК вашего региона (Что-то западней Москвы, но восточней Калининграда

-
- Гуру
- Сообщения: 4168
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: создание проекции с аффинными преобразованиями
если есть поворот (даже без изменения масштаба), то все равно 6. Но если объект маленький (остров), то я бы затащил в R опорные точки, и посмотрел, что там и как. И попробовал поворот с переносом, и афинку. Выбрал, что получше, и в том же R поменял координаты.Boris писал(а):Оператор MIF файла TRANSFORM имеет 4 параметра, а аффинное требует 6. Аффинное задается при задаче строки координатной системы, а это выражение согласно документации предназначено для изменения знака у координат или направления осей координат. Вполне возможно, что если карта не имеет искажений за масштаб, то 4 равны 6.
-
- Участник
- Сообщения: 67
- Зарегистрирован: 27 ноя 2009, 14:09
- Репутация: 0
Re: создание проекции с аффинными преобразованиями
Самое интересное, что через Регистрацию вектора (я так понимаю - это автоматизированное афинное преобразование) горизонтали встали идеально, а контур острова выдает какую-то ошибку. Системы одни и те же. Поэтому я и пытаюсь сейчас повторить афинное преобразование, только через правку мифа. Но толком не знаю какие коэффициенты куда вписывать - в какую часть шапки. Я пробовал разное - Мапинфо ругается, говорит, что ожидает не то увидеть, что видитBoris писал(а):Оператор MIF файла TRANSFORM имеет 4 параметра, а аффинное требует 6. Аффинное задается при задаче строки координатной системы, а это выражение согласно документации предназначено для изменения знака у координат или направления осей координат. Вполне возможно, что если карта не имеет искажений за масштаб, то 4 равны 6.
Раз не подошли аффинные преобразования, то ваш трансформация не была простым переносом-поворотом.
Скорее всего она была сделана на основе СК-63 или МСК вашего региона (Что-то западней Москвы, но восточней Калининграда) и речь идет о смещенном начальном меридиане и нулевой точке отсчета.

ПС:Притягиваемая карта строилась с нуля первоначально в местной системе координат. Вторая карта (к которой надо притянуть первую) строилась по топокарте (составленная по данным 1956 г) в проекции ГК 6 зона пулково 1942
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: создание проекции с аффинными преобразованиями
Я не готов сходу выписать все формулы, хотя это чистая тригонометрия, но все же перенос ( 1 точка для задания) и поворот (1 точка для задания) при сохранении масштаба и перпендикулярности осей координат требует двух точек для своего задания, что соответствует 4 параметрам. По крайней мере так же считает и утилита по трансформации от MStationgamm писал(а): если есть поворот (даже без изменения масштаба), то все равно 6.
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: создание проекции с аффинными преобразованиями
Мне странно самого себя цитировать, тем более в пределах одной ветки, но вот здесьromir писал(а): Не могли бы вы привести пример синтаксиса шапки мифа с этими афинными преобразованиями?
viewtopic.php?f=17&t=6757&p=38272#p36851
во втором сверху "коде" идет полный формат заголовка MIF-Файла, после слов
выписаны 6 параметров аффинного преобразования от спроецированных данных БЕЗ аффинного преобразования к нужным. Формат аффинных преобразований полностью совпадает с форматом оператораAffine Units "m",
из MapBasic'а, благо он теперь идет в нагрузку к любой MapInfo и имеет вполне достойный Help, что бы понять внутренне устройство команд, которыми пользуется Mapinfo при манипуляции с данными.Coorsys
Не могу сказать, поскольку не понял, что есть "та степь". Если речь идет о совмещении систем координат за счет аффинных преобразований, то вы на верном пути. "Регистрация вектора" и есть аффинное преобразование. От способа его исполнения результат не должен меняться.romir писал(а):Или я вообще не в ту степь?
Описанное поведение не очень понятно без картинки. Если горизонтали и остров лежат в разных углах карты, то это поведение нормально, если же изображения горизонталей и острова пересекаются, то тут вообще не понятно причем тут преобразования. Тут дело в расхождении данных, а может еще в каких не известных ошибках.
Что же до совпадения карт, то для того, что бы они совпали требуется что бы ваша местная была построена как аффинное преобразование от координат в соответствующей зоне СК-42. И тут все зависит от того, когда была построена ваша местная СК. Если до 1963 года, то тут может быть и СК производная от СК-42, а может и СК со своим собственным местным не только началом координат, но центральным меридианом. Если после - то есть большой шанс, что она строилась от СК-63.romir писал(а): ПС:Притягиваемая карта строилась с нуля первоначально в местной системе координат. Вторая карта (к которой надо притянуть первую) строилась по топокарте (составленная по данным 1956 г) в проекции ГК 6 зона пулково 1942
-
- Участник
- Сообщения: 67
- Зарегистрирован: 27 ноя 2009, 14:09
- Репутация: 0
Re: создание проекции с аффинными преобразованиями
Boris писал(а):Мне странно самого себя цитировать, тем более в пределах одной ветки, но вот здесь
viewtopic.php?f=17&t=6757&p=38272#p36851
во втором сверху "коде" идет полный формат заголовка MIF-Файла, после слов Affine Units "m",
Попав в эту ветку и увидев этот код, я подумал "Ура! Это то - что мне нужно!". Я скопировал Affine Units "m" с коэффициентами в шапку и тут Мапинфо при импорте мифа начала кочевряжится - что ожидала чего-то другого, а нашла не то. Я копировал Affine Units "m" в разные места шапки, но так и не добился желаемого. Подскажите, плз, в какое место шапки нужно прописывать Affine Units "m" и где найти описания какой коэффициент на какой параметр влияет? Если поставить шесть нолей - никаких преобразований не будет - Так? Можно методом поочередного изменения коэффициентов отслеживать изменения, но это какой-то первобытный способ вслепую...
Не очень понятно. Т.е. если в шапке мифа есть Coordsys, то можно задавать преобразования с помощью его коэффициентов (в коде: "m", 33, 0, 1, 6500000, 0 )? Или это совсем не о том?Boris писал(а):выписаны 6 параметров аффинного преобразования от спроецированных данных БЕЗ аффинного преобразования к нужным. Формат аффинных преобразований полностью совпадает с форматом оператора Coorsys из MapBasic'а,
CoordSys Earth Projection 8, 1001, "m", 33, 0, 1, 6500000, 0 Bounds (-1749281.53901, -10002137.4978) (14749281.539, 10002137.4978)
TRANSFORM 0, 1.01, 6612393, 6882537
Значит я не ошибся."Регистрация вектора" и есть аффинное преобразование. От способа его исполнения результат не должен меняться. Описанное поведение не очень понятно без картинки.

[/quote]Boris писал(а):а может и СК со своим собственным местным не только началом координат, но центральным меридианом.
Так оно и есть.
- Вложения
-
GK.zip
- (958.61 КБ) 494 скачивания
-
- Гуру
- Сообщения: 4168
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: создание проекции с аффинными преобразованиями
имелись в виду 6 коэффициентов (не независимых параметров), столько в TRANSFORM, про который шла речь, не записывается.Boris писал(а):Я не готов сходу выписать все формулы, хотя это чистая тригонометрия, но все же перенос ( 1 точка для задания) и поворот (1 точка для задания) при сохранении масштаба и перпендикулярности осей координат требует двух точек для своего задания, что соответствует 4 параметрамgamm писал(а): если есть поворот (даже без изменения масштаба), то все равно 6.
после некоторого раздумья ... вроде независимых 3 параметра, сдвиг (dX,dY) и угол поворота.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя