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