Афинные преобразования
- ginpetr
- Завсегдатай
- Сообщения: 385
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Афинные преобразования
Немного повозился с афинными преобразованиями. Нужно было привязать непривязываемое и афинные преобразования (далее АП) оказались единственным, что могло помочь.
Несмотря на то, что уже существует несколько рабочих реализаций АП, захотелось самому понять как всё работает.
Сделал утилиту 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
При этом исходными были координаты мск, а конечными координаты план-схемы.
Несмотря на то, что уже существует несколько рабочих реализаций АП, захотелось самому понять как всё работает.
Сделал утилиту 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 (54 КБ) 10383 просмотра
-
archive.zip
- (5.09 КБ) 447 скачиваний
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Афинные преобразования
Нет пока материала (и времени), что бы опробовать по полной. Но такие задачи всплывают регулярно.
Так что заранее спасибо!!!
Есть только одно мелкое пожелание, если будет дорабатывать в сторону метода наименьших квадратов, для среднего по многим точкам, предусмотрите место для создания файла с расчетом погрешностей.
Так что заранее спасибо!!!

Есть только одно мелкое пожелание, если будет дорабатывать в сторону метода наименьших квадратов, для среднего по многим точкам, предусмотрите место для создания файла с расчетом погрешностей.
- ginpetr
- Завсегдатай
- Сообщения: 385
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Re: Афинные преобразования
Не уверен, что скоро дорасту до этого. Трудно мне математика даётся.Boris писал(а):Нет пока материала (и времени), что бы опробовать по полной. Но такие задачи всплывают регулярно.
Так что заранее спасибо!!!![]()
Есть только одно мелкое пожелание, если будет дорабатывать в сторону метода наименьших квадратов, для среднего по многим точкам, предусмотрите место для создания файла с расчетом погрешностей.
Я пробовал применять АП и к вектору и к растру одной и той же "условной" СК. Вектор садился точно, а вот с растром опыт неудачный - разбег в десятки метров. Причина не установлена

-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 05 мар 2014, 08:48
- Репутация: 1
- Откуда: РК, Ухта
Re: Афинные преобразования
Прога заточена под MI 10.5, а для более ранних версий? У меня MI 10.0.1, по этому опробывать ее функциональность не представляется возможным.
- ginpetr
- Завсегдатай
- Сообщения: 385
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
-
- Гуру
- Сообщения: 879
- Зарегистрирован: 17 июн 2010, 23:14
- Репутация: 207
- Откуда: Москва
Re: Афинные преобразования
А программа действует по тому же принципу, что и стандартная Affine.mbx ? Только выводит параметры аффинного преобразования ?
- ginpetr
- Завсегдатай
- Сообщения: 385
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Re: Афинные преобразования
Моя просто выводит коэффициенты, но уже планируют реализовать пакетное midmif преобразование с заменой предложения coordsys... на новое с найденными коэффициентами. Там пара пустяков... ещё думаю, может эту утилиту логично скрестить с моей утилитой по изменению проекций? Уж очень задачи схожие.
- ginpetr
- Завсегдатай
- Сообщения: 385
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Re: Афинные преобразования
Придумал! Я в Ch_projection при преобразовании из плансхемы в проекцию добавлю возможность вписать коэф-ты АП!
- ginpetr
- Завсегдатай
- Сообщения: 385
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Re: Афинные преобразования
Такая возможность добавлена.
viewtopic.php?f=17&t=17287&start=15
viewtopic.php?f=17&t=17287&start=15
- ginpetr
- Завсегдатай
- Сообщения: 385
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Re: Афинные преобразования
Кнопки 1,2,3 подсказывались при наведении мыши неправильно.
Версии просто скомпилированы на разных Mapbasic, в остальном одинаковые.
21.07.2015
улучшил точность вывода коэффициентов, т.к. наблюдались ошибки афинного преобразования в несколько метров. Теперь всё в порядке.
Версии просто скомпилированы на разных Mapbasic, в остальном одинаковые.
21.07.2015
улучшил точность вывода коэффициентов, т.к. наблюдались ошибки афинного преобразования в несколько метров. Теперь всё в порядке.
- Вложения
-
AffineKf 10.5.zip
- (72.96 КБ) 430 скачиваний
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя