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

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

Добавлено: 19 ноя 2014, 15:14
ginpetr
Немного повозился с афинными преобразованиями. Нужно было привязать непривязываемое и афинные преобразования (далее АП) оказались единственным, что могло помочь.
Несмотря на то, что уже существует несколько рабочих реализаций АП, захотелось самому понять как всё работает.
Сделал утилиту 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
При этом исходными были координаты мск, а конечными координаты план-схемы.

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

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

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

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

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

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

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

Добавлено: 21 ноя 2014, 13:53
ginpetr
9.5 попробуйте.

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

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

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

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

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

Добавлено: 21 ноя 2014, 18:56
ginpetr
Придумал! Я в Ch_projection при преобразовании из плансхемы в проекцию добавлю возможность вписать коэф-ты АП!

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

Добавлено: 24 ноя 2014, 09:59
ginpetr
Такая возможность добавлена.
viewtopic.php?f=17&t=17287&start=15

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

Добавлено: 12 дек 2014, 08:40
ginpetr
Кнопки 1,2,3 подсказывались при наведении мыши неправильно.
Версии просто скомпилированы на разных Mapbasic, в остальном одинаковые.
21.07.2015
улучшил точность вывода коэффициентов, т.к. наблюдались ошибки афинного преобразования в несколько метров. Теперь всё в порядке.