Афинные преобразования

MapInfo, MapBasic
Ответить
Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 385
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 140
Откуда: Орск
Контактная информация:

Афинные преобразования

Сообщение ginpetr » 19 ноя 2014, 15:14

Немного повозился с афинными преобразованиями. Нужно было привязать непривязываемое и афинные преобразования (далее АП) оказались единственным, что могло помочь.
Несмотря на то, что уже существует несколько рабочих реализаций АП, захотелось самому понять как всё работает.
Сделал утилиту AffieKf по нахождению коэффициентов АП.
На снимке панель кнопок, диалог ввода координат, диалог коэффициентов и окно сообщений.
Кнопки:
1. Инструментальные кнопки для указания координат трёх соответствующих точек в исходной и целевой системах координат (в разных окнах карт)(указывать можно сколько угодно, запишется последняя указанная точка)
2. Вызов диалога ввода координат трёх соответствующих точек в исходной и целевой системах координат (далее СК)
3. Вызов диалога коэффициентов.
4. Кнопка преобразования координат с помощью текущих коэффициентов (указываем точку в окне с исходным материалом, редактируем если нужно и в диалоге видим координаты в целевой СК)
5. Выход
Диалог ввода координат:
Поля координат будут заполнены, если прежде указывались точки кнопками (1), исходные и целевые можно поменять местами кнопкой "<>". Тут важно понимать какие координаты исходные, а какие целевые. Это не так очевидно, как кажется.
Длинное поле и кнопка "Из строки" нужны для заполнения координат из строки Окна сообщений (строку можно сохранить в блокноте и использовать позднее, чтобы заново не вводить координаты)
OK-->
Диалог коэффициентов:
Содержит коэффициенты - результат решения системы уравнений.
В окне сообщений выводятся строка координат точек и строка с коэффициентами, которую можно дописать в предложение:
CoordSys Earth Projection 8, 1001, "m", 52.03333333333, 0, 1, 1300000, -5309414.7000000002
-->CoordSys Earth Projection 1008, 1001, "m", 52.03333333333, 0, 1, 1300000, -5309414.7000000002,7,0.999952, -0.0202525, -1344717.44, 0.0143246, 1.00283, -576552.33
цифра 7 там означает метры, её тоже нужно дописывать (см. справку Мапинфо)
Мне в MIF-файле приходилось писать вместо имеющейся СК
CoordSys NonEarth Units "m" Bounds (-144330.643261, -185596.679084) (138791.391362, 177779.244611)
новую (мск+коэффициенты АП)
CoordSys Earth Projection 1008, 1001, "m", 52.03333333333, 0, 1, 1300000, -5309414.7000000002,7,0.999952, -0.0202525, -1344717.44, 0.0143246, 1.00283, -576552.33
При этом исходными были координаты мск, а конечными координаты план-схемы.
Вложения
Снимок.PNG
Снимок.PNG (54 КБ) 10382 просмотра
archive.zip
(5.09 КБ) 447 скачиваний

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Афинные преобразования

Сообщение Boris » 21 ноя 2014, 01:49

Нет пока материала (и времени), что бы опробовать по полной. Но такие задачи всплывают регулярно.
Так что заранее спасибо!!! :!:
Есть только одно мелкое пожелание, если будет дорабатывать в сторону метода наименьших квадратов, для среднего по многим точкам, предусмотрите место для создания файла с расчетом погрешностей.

Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 385
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 140
Откуда: Орск
Контактная информация:

Re: Афинные преобразования

Сообщение ginpetr » 21 ноя 2014, 07:29

Boris писал(а):Нет пока материала (и времени), что бы опробовать по полной. Но такие задачи всплывают регулярно.
Так что заранее спасибо!!! :!:
Есть только одно мелкое пожелание, если будет дорабатывать в сторону метода наименьших квадратов, для среднего по многим точкам, предусмотрите место для создания файла с расчетом погрешностей.
Не уверен, что скоро дорасту до этого. Трудно мне математика даётся.
Я пробовал применять АП и к вектору и к растру одной и той же "условной" СК. Вектор садился точно, а вот с растром опыт неудачный - разбег в десятки метров. Причина не установлена :(

PVTs
Новоприбывший
Сообщения: 11
Зарегистрирован: 05 мар 2014, 08:48
Репутация: 1
Откуда: РК, Ухта

Re: Афинные преобразования

Сообщение PVTs » 21 ноя 2014, 13:29

Прога заточена под MI 10.5, а для более ранних версий? У меня MI 10.0.1, по этому опробывать ее функциональность не представляется возможным.

Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 385
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 140
Откуда: Орск
Контактная информация:

Re: Афинные преобразования

Сообщение ginpetr » 21 ноя 2014, 13:53

9.5 попробуйте.
Вложения
AffineKf95.zip
(5.09 КБ) 407 скачиваний

Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Re: Афинные преобразования

Сообщение Slinger » 21 ноя 2014, 14:32

А программа действует по тому же принципу, что и стандартная Affine.mbx ? Только выводит параметры аффинного преобразования ?

Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 385
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 140
Откуда: Орск
Контактная информация:

Re: Афинные преобразования

Сообщение ginpetr » 21 ноя 2014, 18:31

Моя просто выводит коэффициенты, но уже планируют реализовать пакетное midmif преобразование с заменой предложения coordsys... на новое с найденными коэффициентами. Там пара пустяков... ещё думаю, может эту утилиту логично скрестить с моей утилитой по изменению проекций? Уж очень задачи схожие.

Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 385
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 140
Откуда: Орск
Контактная информация:

Re: Афинные преобразования

Сообщение ginpetr » 21 ноя 2014, 18:56

Придумал! Я в Ch_projection при преобразовании из плансхемы в проекцию добавлю возможность вписать коэф-ты АП!

Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 385
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 140
Откуда: Орск
Контактная информация:

Re: Афинные преобразования

Сообщение ginpetr » 24 ноя 2014, 09:59

Такая возможность добавлена.
viewtopic.php?f=17&t=17287&start=15

Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 385
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 140
Откуда: Орск
Контактная информация:

Re: Афинные преобразования

Сообщение ginpetr » 12 дек 2014, 08:40

Кнопки 1,2,3 подсказывались при наведении мыши неправильно.
Версии просто скомпилированы на разных Mapbasic, в остальном одинаковые.
21.07.2015
улучшил точность вывода коэффициентов, т.к. наблюдались ошибки афинного преобразования в несколько метров. Теперь всё в порядке.
Вложения
AffineKf 10.5.zip
(72.96 КБ) 430 скачиваний

Ответить

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

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

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