Для выполнения трансформации координат служит команда меню Сервис+Трансформация, которая может быть вызвана либо из окна навигации при выбранной карте, теме, слое или типе объектов карты или темы, либо из окна просмотра карты. Соответственно этому в трансформации будут участвовать объекты всех или только некоторых компонентов карты.
Подготовка к трансформации выполняется под управлением мастера трансформации. На рис. 20-1 показана первая страница мастера.
Рис. 20-1. Выбор типа преобразования и файла настройки
В панели Тип преобразования следует выбрать один из типов, описанных в подразделе «Типы преобразования координат»: преобразование подобия, аффинное преобразование, аффинное с вычислением коэффициентов методом наименьших квадратов, нелинейное локальное, нелинейное локально-аффинное, нелинейное полиномиальное или нелинейное полиномиально-аффинное.
Если ранее запоминалась настройка преобразования, то следует включить флажок Загрузить настройку и с помощью кнопки Выбор выполнить выбор файла настройки.
При включенном флажке Загрузить настройку панель выбора типа преобразования неактивна, поскольку тип преобразования будет загружен из файла настройки. Если пользователь хочет воспользоваться прежней настройкой, но применить другой тип преобразования, то он может поступить так: сначала включить флажок Загрузить настройку, выбрать файл настройки и нажать кнопку Далее (при этом реально выполняется загрузка), затем вернуться к первому шагу по кнопке Назад, отключить флажок загрузки, выбрать нужный тип преобразования и снова нажать Далее.
На втором шаге работы мастера (рис. 20-2) решается вопрос о создании файла отката, который позволяет отменить результаты трансформации координат и восстановить состояние карты до выполнения трансформации. Если файл отката не создается, то трансформация координат необратима.
Рис. 20-2. Выбор файла отката трансформации
Чтобы создать файл отката, следует включить флажок Создавать откат и с помощью кнопки Выбор задать имя файла отката. Система присвоит имени файла стандартное расширение ROL. Если файл с таким именем уже существует, то нужно с помощью переключателей выбрать один из двух вариантов:
Переписать – прежнее содержимое файла теряется.
Дописать – система добавляет информацию для отката к той, которая уже содержится в данном файле. Таким способом можно накопить в одном файле информацию о нескольких последовательных операциях трансформации. Это позволит при желании отменить все трансформации одной операцией отката, однако при этом теряется возможность отменить только последнюю трансформацию.
Если пользователь выполняет трансформацию координат несколько раз подряд и хотел бы иметь возможность отменить только одну или несколько последних трансформаций, то ему следует создавать при каждой трансформации отдельный файл отката (выбирать другое имя файла). Корректность отката гарантируется только в том случае, если операции отката выполняются в обратном порядке (т.е. последняя трансформация откатывается первой).
При задании трансформации темы «на лету» формировать файл отката не имеет смысла, поскольку координаты исходных объектов не изменяются и для отмены трансформации достаточно сбросить соответствующий флажок в свойствах темы или слоя темы. Поэтому второй шаг мастера в этом случае пропускается.
На третьем шаге работы мастера (рис. 20-3) пользователь должен определить конкретную трансформацию, задав для этого старые и новые координаты опорных точек.
Рис. 20-3. Настройка опорных точек трансформации
Количество опорных точек для преобразования подобия должно равняться двум, для аффинного преобразования – трем, для всех остальных преобразований нужно не менее трех опорных точек.
Имеется три способа добавления опорных точек в список.
Индивидуальное добавление точки. Для этого следует заполнить поля Исх. X, Y и Кон. X, Y, соответственно, исходными и конечными значениями координат добавляемой опорной точки и нажать кнопку Добавить.
Добавление вершин всех селектированных объектов. Этот способ можно использовать только в том случае, если трансформация выполняется из окна просмотра карты. Предполагается, что перед вызовом операции трансформации пользователь селектировал тот объект или несколько объектов, вершины которых должны служить опорными точками. Для занесения этих вершин в список следует нажать кнопку Группа. При этом во внимание будут приниматься только площадные, линейные и точечные объекты, причем для площадных объектов в список точек трансформации будут включены только вершины внешней границы, но не внутренних границ объекта. Конечные значения координат устанавливаются равными исходным значениям. Пользователь может затем изменить эти значения.
Добавление вершин всех объектов заданных типов. После нажатия кнопки Тип открывается диалоговое окно «Выбор типов» (рис. 20-4), в котором пользователь должен отметить типы объектов, которые следует включить в список опорных точек. Как и в предыдущем случае, рассматриваются только площадные, линейные и точечные типы, причем для площадных берется только внешняя граница, а конечные значения координат устанавливаются равными исходным.
Рис. 20-4. Выбор типов объектов при задании опорных точек
Два последних способа добавления позволяют легко создать список, содержащий абсурдно большое число опорных точек, поэтому пользователю следует быть осторожным при использовании этих возможностей. После каждых 50 опорных точек система задает вопрос, следует ли продолжить добавление или нет.
При любом способе добавления система проверяет, чтобы в списке не было двух одинаковых опорных точек. При индивидуальном добавлении выдается сообщение «Дублируются исходные (конечные) координаты опорной точки», при двух других способах добавления дублирующиеся точки просто не включаются в список.
Для корректировки списка опорных точек можно использовать кнопки Изменить, Удалить и Удалить все. Чтобы изменить исходные и/или конечные координаты опорной точки, пользователь должен выбрать эту точку в списке, изменить значения в полях Исх. X, Y и Кон. X, Y, а затем нажать кнопку Изменить. Кнопка Удалить удаляет опорную точку, выбранную в списке, а Удалить все – полностью очищает список.
На четвертом шаге работы мастера (рис. 20-5) пользователь определяет, какие объекты должны подвергнуться трансформации координат. При задании преобразования «на лету» трансформации подлежат все объекты данной темы или слоя, поэтому шаги мастера, связанные с ограничением множества трансформируемых объектов, пропускаются. Для случая одноразового преобразования координат имеется несколько возможностей ограничить множество объектов.
Рис. 20-5. Выбор трансформируемых объектов
Можно ограничить область трансформации, так что все объекты за пределами этой области не изменят свои координаты. Для этого следует включить переключатель Произвольная область. Тогда следующим шагом мастера будет задание этой области (рис. 20-6).
Рис. 20-6. Настройка области преобразования
В качестве области трансформации может быть задан произвольный полигон без самопересечений. Пользователь может ввести список вершин этого полигона с клавиатуры (задавая координаты каждой вершины или указывая ее расстояние от предыдущей вершины и азимут) либо использовать кнопку Группа, которая добавляет к списку вершин (после выбранной строки этого списка) все вершины селектированного объекта. Если селектированы несколько объектов, то в список добавляются все их вершины, однако пользователь несет ответственность за то, чтобы полигон трансформации был корректен. Возможно, для этого придется удалить часть вершин из списка.
Флажок Расщеплять ребра при преобразовании координат позволяет выбрать способ обработки таких линейных и площадных объектов, которые только частично попадают в область трансформации. Если флажок выключен, то эти объекты не трансформируются. Если флажок включен, то в каждой точке, где отрезок линейного объекта или отрезок границы площадного объекта пересекает границу области трансформации, будет добавлена дополнительная вершина. Внешняя часть отрезка остается без изменения, а внутренняя вершина трансформируется по заданному закону.
Не подвергаются трансформации отрезки, обе вершины которых лежат вне области трансформации, даже если такой отрезок пересекает область трансформации.
На рис. 20-7 показаны примеры расщепления ребер при трансформации прямоугольной области. Закон преобразования – горизонтальный сдвиг вправо.
Рис. 20-7. Расщепление ребер при трансформации
При выполнении расщепления ребер не исключена возможность нарушения корректности площадных объектов. В таких случаях объект не трансформируется.
Помимо ограничения области трансформации, пользователь может также управлять выбором объектов, подлежащих трансформации. Для этого на шаге 4 мастера трансформации (см. рис. 20-5) имеется группа переключателей Объекты, в состав которой входят четыре переключателя:
Все – трансформации подлежат все объекты данной темы (разумеется, с учетом возможного ограничения области трансформации);
Селектированные – трансформируются только селектированные объекты;
Указанной геометрии – будут трансформироваться только объекты одного или нескольких выбранных геометрических типов;
Указанного типа – будут трансформироваться только объекты, относящиеся к одному или нескольким выбранным типам объектов.
Если выбран вариант Указанной геометрии или Указанного типа, то на одном из следующих шагов мастера трансформации пользователь должен будет выбрать, соответственно, геометрические типы или типы объектов, участвующих в операции. На рис. 20-8 показан выбор типов объектов. Проставленные галочки указывают, какие слои и какие типы объектов из этих слоев должны участвовать в трансформации. Аналогичным образом выбираются геометрические типы.
Рис. 20-8. Выбор типов объектов для трансформации
Флажок Учитывать фильтр (рис. 20-5) активен, если операция трансформации выполняется для темы с фильтром (см. гл. 34 «Фильтры и их структура»). Если флажок включен, то трансформируются только объекты, отображаемые с учетом фильтра. Если же флажок выключен, то действие фильтра не учитывается.
После выбора области и указания объектов, участвующих в операции, мастер трансформации предоставляет пользователю возможность определить необходимость вывода отчета о трансформации и сохранения настройки трансформации, а также указать имена соответствующих файлов (рис. 20-9). Сохраненная настройка трансформации может быть использована при повторном выполнении аналогичной операции.
Рис. 20-9. Выбор файлов отчета и настройки
Если пользователь выбирает для вывода отчета имя уже существующего файла, то при этом он должен выбрать, как поступить с прежним содержимым этого файла: Переписать, т.е. записать новый отчет вместо старого, или Дописать, т.е. продолжить собирать в одном файле отчеты о нескольких операциях трансформации.
Для файла настройки ситуация несколько иная: поскольку объединение нескольких разных настроек в одном файле не имеет смысла, система в случае существования файла с указанным именем спрашивает пользователя, следует ли заменить его содержимое.
Файл отчета о трансформации всегда получает расширение CTR, файл сохранения настройки – CTS.
Наконец, на последнем шаге мастера трансформации пользователь может просмотреть выбранные значения параметров и убедиться в их правильности. После нажатия кнопки Преобразовать выполняется операция трансформации координат.