Введение: данная статья будет посвящена вопросам автоматизации стандартных действий по редактированию параметров систем координат в библиотеке СК (далее, систем координат) в рамках Dynamo над Civil 3D. Статья является четвёртой в серии статей по работе с системами координат в продуктах Autodesk. Ниже ссылки на предыдущие части:
- Погружаемся в системы координат. Часть 1 - как всё начиналось
- Погружаемся в системы координат. Часть 2 - ручное внесение в библиотеку информации о СК
- Погружаемся в системы координат. Часть 3 - нестандартные виды определений СК
Общая концепция формирования библиотеки СК
Итак, на базе написанных частей №1-3 мы имеем достаточный материал, чтобы двигаться дальше. Вопрос о формировании локальной библиотеки систем координат, как правило, связан с переходом на BIM/трехмерное моделирование в рамках производственного холдинга/компании имеющей ряд промышленных площадок, каждая со своей системой координат (с набором систем координат).
1. Сперва каждая из систем координат (СК, далее) проходит процедуру "сортировки", то есть определяется - какие данные есть на неё, и как ее будем вносить в базу
2. В зависимости от того, классическая ли это СК либо нет, следуя методике Части 2 или Части 3 - заносим эти определения в библиотеку.
Примечание: настоятельно рекомендуется включать в наименования всех определений некий общий префикс, чтобы впоследствии производить выборку по данному префиксу
3. Далее, имея на руках библиотеку с рядом систем координат, у нас есть цель - объединить наши созданные СК с другим каталогом.
Ввиду того, что конфигурационные файлы CSD не редактируемы (см. Часть 1), необходимо выполнять транзакции из-под самой библиотеки. К счастью, с версии 2018 (или 2016?..) у нас есть пара встроенных команд MAPCSLIBRARYEXPORT и MAPCSLIBRARYIMPORT, которые выполняют, соответственно, экспорт и импорт библиотеки через её XML-представление. Фактически, эти команды являются "обёрткой" над базовым функционалом OsGeo.MapGuide, поэтому в силу объективных причин, в файл не попадает элемент под названием "Категория" - Category.CSD.
Как говорится в справке, для экспорта определений нам необходимо сформировать Lsp-файл (лисп-файл) с упомянутой командой MAPCSLIBRARYEXPORT для пакетного извлечения параметров для набора наименований СК. Всё хорошо, но базовых возможностей по получению этого списка Civil 3D (Map 3D) не даёт. Никак не даёт. Вариантов 2 - парсить файл Category.CSD/Coordsys.CSD либо через API Map 3d обращаться к библиотеке и извлекать из неё необходимый список наименований.
Так как мы говорим про пользовательскую библиотеку, то и интересовать нас будет именно её "пользовательская" часть. Так как здесь речь уже начинает идти про автоматизацию, сделаем небольшое отступление, как установить упомянутый "набор инструментов" в среду Civil 3D.
Установка пакета Dynamo.MapConnection в Civil 3D
Что такое Dynamo и базовые его основы см. тут. Предполагается, что читатели уже знакомы с данным инструментом (встроен в Civil 3D с версии 2020).
Дальнейшие действия
Получение списка наименований СК
Сделаем первый запрос к нашей локальной библиотеке, сформируя перечень СК, входящих в пользовательскую библиотеку
Примечание: все транзакции с библиотекой рекомендуется выполнять в режиме "ручного" запуска скрипта из-за возможных фатальных ошибок программы
Далее при желании список можно отфильтровать другими стандартными нодами Dynamo. Мы же перейдем к следующей операции
Получение LSP-файла определений СК в пользовательской библиотеке
Подаём ему на вход нужные определения и получаем сформированный Lisp-файл.
Получаем XML-представление библиотеки СК
Здесь мы заходим на панель Управление и активируем опцию "Загрузить приложение"
Импортируем XML-версию в библиотеку
Теперь мы можем заменить конфигурационные файлы CSD, поставив другую (целевую) библиотеку и импортировать эту библиотеку в формате XML в неё. Для этого просто вводим команду MAPCSLIBRARYIMPORT, выбираем XML-версию СК и ждём окончания импорта файлов.
Так как с файлом не передается категория для СК, ее необходимо назначить вручную через опцию Map 3D:
Еще кейсы по работе с библиотекой СК
Еще один интересный кейс - это получение кодов WKT2 для набора СК, отталкиваясь от её XML-представления. Это реализовано в рамках нода "GetWKT2Code_ofCSList" из группы "CoordinateSystems". Подробно это рассмотрено на странице данного справочного пособия.
Выводы
В данной статье мы рассмотрели вопрос, как автоматизировано выгружать информацию из библиотеки систем координат для слияний библиотек/выборки данных из неё. Для автоматизации мы использовали библиотеку для Dynamo под названием MapConnection, содержащую API-функции запросов к библиотеке, оформленные как "ноды" Dynamo.
Полную справку по данному пакету можно найти по данной ссылке. Сам пакет является open-source приложением и доступен по ссылке на GitHub.
На этом мы завершаем данную, четвёртую часть серии статей, а в следующей, пятой части, мы перейдем к обзору возможностей по пересчету данных из одной системы координат в другую используя данный пакет (так как в рамках данной статьи мы рассмотрели лишь его часть по работе с библиотекой СК).