Как организовать взаимодействие САПРа и геоинформационной системы

Как ни крути, достаточно много данных, имеющих пространственную привязку, готовятся с использованием САПРов, например, AutoCAD или отечественный nanoCAD. Обе программы обеспечивают работу с координатами и применяют не только геометрические примитивы, имеющие набор свойств, но и блоки, в которых можно задавать атрибуты (характеристики) объектов.

 

Специалисты, работающие с геоинформационными системами (ГИС), стараются всячески избегать обработки данных, подготовленных в САПР. Причины, например, такие: полигон может быть задан в чертеже набором линий и не замкнут; фактических требований к геометрическим объектам в слоях нет – могут быть и точки, и линии; объект, после вставки в чертеж, может быть «подвинут», хотя при этом координаты точки вставки останутся; изображение вставленного из библиотеки объекта может быть изменено, так что название объекта останется, а изображение будет совсем другого объекта. По сути многие причины неприятия САПРовских данных для ГИСов связаны с отсутствием в организации требований к подготовке чертежей, тогда как во многих ГИСах технологических строгостей больше, а как следствие – порядка тоже больше.

 

В одном из наших проектов возникла задача организовать представление на карте (в ГИСе) данных чертежей, содержащих проекты организации дорожного движения (ПОДД), и отслеживать изменения, происходящие с объектами (проектирование, установка, демонтаж). К элементам ПОДД могут быть отнесены: дорожная разметка, знаки, светофоры, стойки, искусственные неровности и т.д. Чертежи исторически готовятся в формате dwg. Исполнителей чертежей много, у каждого - свои подходы к изготовлению чертежей - используют разные по составу и наименованию слои; разные библиотеки элементов; разные атрибуты (для блоков) и значения в атрибутах.

 

Мы опробовали разные варианты:

  • Преобразование dwg/dxf в xml с использованием свободных и проприетарных (отечественных) утилит. Этот вариант приводит к необходимости унификации работы проектировщиков в части состава и названий слоев, используемых библиотек и атрибутов объектов и, к сожалению, не исключает вероятности потери части данных.
  • Парсинг dxf путем написания собственного сервиса/утилиты. Здесь столкнулись с тем, что формирование dxf от версии к версии в AutoCAD выполняется по-разному, вариативность описания объектов в AutoCAD большая и все эти варианты пришлось бы учитывать в парсере; к тому же, как и в предыдущем варианте необходима была унификация работы внешних организаций.
  • Использование Autodesk Map3D, в котором есть поддержка импорта/экспорта gml, но в условиях импортозамещения и санкционных запретов этот вариант не применим, да и вопрос унификации библиотек никуда бы не делся.

Знаем, что коллеги по цеху разрабатывали плагины к QGis для загрузки dxf; а кто-то писал конверторы из dxf в geojson и импорт изображений в svg (в QGis, кстати, тоже есть такой вариант импорта). Однако импорт в QGis с последующей выгрузкой в обменный формат типа mid/mif для последующей загрузки в ГИС или отображение в ГИСе svg картинок для решения нашей задачи не годились.

Кроме того, все перечисленные варианты не позволяли решить важную задачу назначения объектам чертежа уникальных идентификаторов, чтобы в ГИС была бы возможность отследить изменения, происходящие с объектом во времени, при условии, что сведения об одних и тех же объектах могут приходить из разных источников (чертежей).

 

В итоге мы пришли к разработке модуля (плагина), встраиваемого в AutoCAD и nanoCAD. Модуль опирается на настраиваемые конфигурационные файлы, в которых можно определить слои, из которых берем данные; соответствие свойств геометрии и/или атрибутов блоков значениям тэгов в geojson согласно подготовленных спецификаций; задание значений по умолчанию для тэгов. Настройка конфига выполняется с учетом требований, которые мы зафиксировали в документе "Требования к подготовке данных в формате geojson".

В САПРе после подготовки чертежа пользователь может запустить назначение «расширенных атрибутов», которые присваиваются объектам/примитивам на основании настроек; экспорт в geojson; загрузку файла с ошибками (лог ошибок формируется в нашем приложении ГИС при обработке экспортированного из САПР файла) с подсветкой в чертеже объектов с ошибками. При необходимости пользователь вносит изменение данных в чертеж, в том числе может вручную изменить значения расширенных атрибутов объектов, вычисленные автоматически. Важной функцией, реализованной в модуле, является назначение в расширенных атрибутах уникального идентификатора, что позволяет в ГИС отслеживать изменения, происходящие с объектом на протяжении его жизненного цикла.

Помимо выгрузки данных из САПР модуль предусматривает еще и возможность загрузки в чертеж данных из ГИС. Этот функционал импорта может быть использован, например, для выдачи исходных данных для проектирования; импорт пока находиться в стадии отладки.

Вариант с использованием такого модуля тоже накладывает требования к подготовке чертежей (эти требования мы тоже зафиксировали в документе), однако, на наш взгляд, это компромиссный вариант между тем, чтобы проектировщики продолжили работать в привычной среде (своя система слоев и наработанных блоков) и тем, чтобы данные, извлекаемые из чертежей, укладывались бы в унифицированную информационную модель с возможностью последующей обработки данных.