При трансформации (преобразовании координат) каких-либо объектов по большому количеству опорных точек начальные и конечные координаты всех этих точек приходится вводить вручную в специальной форме «Шаг 3. Настройка опорных точек». К счастью, на этой форме есть кнопка «Группа», которая при помеченном заранее (т.е. непосредственно перед трансформацией) линейном объекте (иначе кнопка будет неактивна) автоматически вставляет в таблицу все точки этого объекта, от начальной и до последней. Однако дело в том, что конечные координаты опорных точек трансформации, полученных таким способом, остаются идентичными исходным, и «Руководство пользователя» предлагает вводить конечные координаты по-прежнему вручную.
Предлагаю всем, кому надоело выписывать на бумажку длинные столбцы цифири и затем заносить их с клавиатуры, поступать следующим образом.
1. Построить ломаную линию, соединяющую ИСХОДНЫЕ опорные точки в определённом порядке. Важно заранее мысленно «пройти» весь маршрут, панорамируя карту. Сама линия может принадлежать любому слою и типу (конечно, из числа отображаемых в данном окне темы), может иметь самопересечения, это не принципиально.
2. То же самое сделать для КОНЕЧНЫХ опорных точек. Важнейшее замечание: направление обхода и порядок следования опорных точек должны совпадать с теми, что были приняты при построении ломаной, соединяющей исходные точки. Общее количество точек тоже должно быть одинаковым у обоих ломаных линий, поэтому при построении обоих ломаных нельзя применять «стяжку» (так как она порождает непредсказуемое количество промежуточных узлов). Если начальное и конечное положение трансформируемых объектов нельзя отобразить в одном окне, то удобно открыть две «темы» и расположить их так, чтобы они делили приблизительно поровну весь экран. При этом обе ломаные (исходную и конечную) можно строить «одновременно», переключаясь попеременно между двумя окнами соответствующих тем. Чтобы не ошибиться с количеством вершин (узлов) ломаных линий, можно скопировать «конечную» линию с «исходной» линии (или наоборот) путём копирования слоя или типа, содержащего эту линию, в ту же карту. Затем, конечно, надо в режиме редактирования узлов видоизменить скопированную ломаную к надлежащему ей виду. Такой приём больше подходит, когда обе ломаные линии занимают приблизительно одно и то же место на плоскости, а не разнесены очень далеко (в этом случае придётся сразу после копирования трансформировать ломаную-копию по аффинному алгоритму, т.е. попросту переместить/сжать/повернуть приблизительно в нужное место с последующей точной доводкой каждого узла линии). Можно также использовать копирование и вставку ломаной через буфер обмена, при вставке надо указать смещение по осям X и Y.
3. Пометить «исходную» ломаную в соответствующем окне, все остальные объекты должны быть непомеченные.
4. Вызвать пункт «Трансформация...» из меню «Сервис». Выбрать на первом шаге вариант трансформации (обычно это либо «аффинное с вычислением коэффициентов методом наименьших квадратов», либо «нелинейное локально-аффинное»). На втором шаге можно задать файл отката, хотя он в данном случае и не понадобится. На третьем шаге, когда потребуется ввести координаты опорных точек, надо нажать кнопку «Группа», при этом таблица заполнится координатами точек «исходной» ломаной, помеченной заранее. Важно, что конечные координаты останутся те же, что и исходные, поэтому и не понадобится откат, ведь все трансформируемые объекты останутся на прежнем месте. На 4-ом и 5-ом шагах следует выбрать объекты для преобразования по типам и слоям. Сейчас можно выбрать любые слои и типы, хоть всю карту, ведь начальные и конечные координаты опорных точек трансформации совпадают, значит, преобразование будет фиктивным. На 6-ом шаге обязательно следует задать имя файла настройки, этот файл понадобится дальше. Далее, на 7-ом шаге, следует нажать «Преобразовать», после чего, ради пущей перестраховки, можно выполнить откат трансформации, если был указан файл отката. Вместо «Преобразовать» можно нажать «Отмена», так как нужный нам файл настройки уже был записан при переходе от 6-го шага к 7-му. В результате всех этих действий будет получен файл настройки трансформации, хранящий координаты «исходной» ломаной, например «d:\откуда.cts».
5. Пометить в соответствующем окне «конечную» ломаную линию, все остальные объекты не должны быть помечены.
6. Всё то же самое, что в пункте четвёртом, только теперь – уже для «конечной» ломаной. В результате будет получен другой файл настройки трансформации, под именем, например, «d:\куда.cts».
7. Теперь надо запустить программку, которую вы можете скачать на этой же странице. Она запросит сначала «исходный» файл настроек трансформации («d:\откуда.cts»), затем – «конечный» («d:\куда.cts»), и потом – файл-результат (например, «d:\resultat.cts»). В результирующем файле будут подставлены исходные координаты от точек «исходной» ломаной, конечные – от точек «конечной». В качестве слоя и типа, подлежащего трансформации, будут указаны слой и тип с фиктивным именем, специально для того, чтобы в дальнейшем можно было задать слои и типы, нужные на самом деле.
8. И наконец, в третий раз вызвать пункт «Трансформация...» из меню «Сервис». На первом шаге надо загрузить файл настройки «d:\resultat.cts» (тот, что был создан предлагаемой программкой). При переходе ко второму шагу появится окно-предупреждение с вопросом «Игнорировать дальнейшие ошибки в файле трансформации?». Следует нажать кнопку «Да». Во втором шаге можно задать файл отката, потому что теперь уже преобразование будет настоящим. На 3-ем шаге надо согласиться с предложенными координатами, а на 4-ом и 5-ом шаге следует задать те слои и типы, которые необходимо трансформировать на самом деле. На шестом шаге можно сохранить файл настройки трансформации, например, перезаписав файл «d:\resultat.cts», чтобы в нём хранились теперь уже реальные слои и типы. На седьмом шаге – нажать кнопку «Преобразовать», и на этом весь процесс будет успешно завершён.
На самом деле это всё не так громоздко, как может показаться, и уж конечно быстрее и точнее, чем «по бумажке».
19 мая 2006 г.
Трухачёв М.Ю.