Найти тему
Хроники Георга

TBS GIS: эволюция надстройки под nanoCAD для работы с геоданными и не только

Оглавление

Раннее я уже писал, как пробовал в экспериментальном режиме интегрировать программные библиотеки OSGeo GDAL в nanoCAD. Тогда дело ограничилось в основном, пересчетом текстовых файлов и импортом векторных геоданных в среду nanoCAD.

Первая (и последняя) презентация плагина состоялась примерно в марте 2023 года (ссылка ниже).

Тогда же в марте мы надолго застряли с неразрешимой проблемой неработоспособности надстройки над nanoCAD с 23-й версии. Как выяснилось только пару недель назад причиной тому был конфликт библиотек модуля nanoCAD Топоплан с нашей надстройкой. В общем, проблема была локализована, а сама надстройка фундаментально переписана. Ниже основные обновления, которые она претерпела. Мы планируем провести вебинар примерно в конце января по новинкам.

1. Интерфейсная часть

В связи с обнаруженным в феврале-марте багом в nanoCAD 23 мы перенесли первую версию надстройки на логику взаимодействия с nanoCAD через ActiveX и тогда загрузчик TBS GIS представлял из себя консольное приложение:

Так выглядела основная форма для подключения к приложению
Так выглядела основная форма для подключения к приложению

Теперь же, локализовав проблему, мы смогли сделать интерфейсную реализацию и команды теперь доступны на ленте (многие пока не имеют иконок, часть кнопок будут позже ре-структурированы, но глобально посыл ясен):

Вид кнопок-команд на ленте TBS GIS в nanoCAD
Вид кнопок-команд на ленте TBS GIS в nanoCAD

2. Основные направления развития и функциональность надстройки

Ниже перечислены панели и их краткая характеристика:

  1. Панель «Настройки»: установка конфигурации плагина;
  2. Панель «Системы координат»: обозреватель загруженных систем координат и инструменты их импорта;
  3. Панель «Векторные данные»: импорт-экспорт векторных данных, инструменты работы с геометрией;
  4. Панель «Растровые данные»: импорт-экспорт растровых данных, инструменты работы с растровыми данными;
  5. Панель «Оформление»: настройка геомаркеров и методы их простановки;
  6. Панель «Открытые данные»: импорт в чертеж открытых данных (OSM, DEM);
  7. Панель «Атрибутика»: инструменты отображения атрибутов чертежа (от импортированных векторных данных и перемещение файлов-определений атрибутов);
  8. Панель «Облака точек»: инструменты работы с облаками (пересчет и растеризация)

3. Панель с настройками приложения

Здесь представлены технические команды настройки конфигурации плагина (пути к ресурсам):

Возможность указать пути к вспомогательным каталогам, а также к библиотекам баз данных систем координат
Возможность указать пути к вспомогательным каталогам, а также к библиотекам баз данных систем координат

4. Панель «Системы координат»

Здесь знакомая пользователя ранних версий функциональность по просмотру списка СК включая их WKT-код при желании и назначения чертежу:

Вид фильтра перечня МСК по названию
Вид фильтра перечня МСК по названию

Сюда же планируется добавить пару действий по импорту в Базу новых определений по их WKT-кодам

5. Панель «Векторные данные»

Здесь представлены инструменты по импорту векторных геоданных и работы с геометрией чертежа

5.1 Общий и целевые импортеры векторных геоданных

Вид импорта geojson-файла
Вид импорта geojson-файла

Помимо "общего", он же импортер стандартных OGR-поддерживаемых драйверов у нас имеется свой парсер некоторых схем Россреестра- XML и дополнительная функциональность для импорта GML-подосновы от МГГТ (МосГорГеоТрест), на этот счет будет отдельная статья, там много всего интересного.

Здесь же забегая вперед - была реализована своя логика сохранения и отображения атрибутов объектов - в виде новой палитры, о неё подробнее далее
Здесь же забегая вперед - была реализована своя логика сохранения и отображения атрибутов объектов - в виде новой палитры, о неё подробнее далее

Производительность: импорт векторных данных без атрибутов (файл OSM PBF на Калининградскую область) занял примерно полторы минуты (около 518 тысяч всего объектов, из них 150 тысяч МПолигонов, 316 тысяч полилиний).

5.2. Инструменты работы с векторной графикой

Просто списком:

  • Команда «TBS_GIS_OGR_Tools_Buffers»: построение буферных зон вокруг данных примитивов геометрии;
Полезная механика по созданию полигонов-оболочек вокруг линейных объектов
Полезная механика по созданию полигонов-оболочек вокруг линейных объектов
  • Команда «TBS_GIS_OGR_Tools_MPolygon_GetBorders»: получение внешних и внутренних контуров МПолигонов в виде полилиний;
  • Команда «TBS_GIS_OGR_Export»: экспорт графических примитивов чертежа в векторные форматы, запись в которых поддерживается драйверами OSGeo GDAL. Сделала поддержка для точек, блоков, текстов, полилиний, 3д-граней, штриховок, МПолигонов.
Просмотр в среде QGIS на точечные объект с атрибутами объектов nanoCAD
Просмотр в среде QGIS на точечные объект с атрибутами объектов nanoCAD
  • Команда «TBS_GIS_OGR_Tools_Centroid»: рассчитывает геометрический центр группы объектов на основе их геометрий и размещает в этом месте специальный блок.
  • Команда «TBS_GIS_OGR_Tools_MPolygonToHatch»: групповое преобразование МПолигонов в Штриховку с сохранением атрибутов TBS GIS;
  • Команда «TBS_GIS_OGR_Tools_HatchToMPolygon»: групповое преобразование Штриховок в МПолигоны с сохранением атрибутов TBS GIS;
  • Команда «TBS_GIS_OGR_Tools_DelaunayCreate»: создание триангуляции по точечным объектам алгоритмами GDAL. Производительность: 30 секунд для 780 тысяч точек

6. Панель «Растровые данные»

Здесь реализован стандартный импорт GDAL-поддерживаемых драйверов + отдельно импорт растров с локальными файлами геопривязки (это было и в ранней версии TBS GIS)

Представление импортируемых данных
Представление импортируемых данных

Экспорт триангуляции в растр (DEM)

Новая реализация у импортера открытых данных: теперь открытый рельеф грузится в виде точек с отметкой Z, вместо полигональных сетей (их надо было взрывать и фильтровать). А тут - Пользователь может построить поверхность либо встроенной в TBS GIS командой из панели Векторных данных, либо инструментами целевой программы - nanoCAD Топоплан, CS MS Генплан или например Civil 3D (если откроет этот DWG там).

Создание поверхности (сети) инструментом модуля Топоплан
Создание поверхности (сети) инструментом модуля Топоплан

Предмет особой гордости - это реализация экспорта поверхности (триангуляции) в растр. У Civil 3D это решалось как минимум двумя командами: через экспорт TIN-поверхности в DEM (с возможностью перепроецирования и настройки шага) и командой MAP 3D для набора точек с возможностью перепроецирования, команду подзабыл.

 Настройки экспорта
Настройки экспорта
Результирующий растр.
Результирующий растр.

Пока есть проблема установки noDataValue - она = 0,0, но надо бы поставить что-то маленькое условно -13000 метров, так как в противном случае берется нижний предел числа float где-то в - 431 млн метров.

Кстати, именно функцию по экспорту растров я показал Константину Давыдченко (блог Гидравлика & bim https://dzen.ru/hydraulic_bim, https://www.youtube.com/@hydro_bim, https://t.me/dks_ingeneer), который неделю назад опубликовал у себя тизер этой функции https://t.me/dks_ingeneer/171.

7. Панель "Оформление", она же "Геомаркеры"

Здесь у нас находится конфигуратор геомаркеров - особых вхождений блока с несколькими атрибутами, которые являются метками точек с координатами целевой СК, которую хочет пользователь. Говоря про Civil3D это аналог подписей точек COGO с широтой\долготой, только у нас целевая СК может быть любой!

Так выглядит маркеры
Так выглядит маркеры

8. Панель "Открытые данные"

Здесь у нас находятся загрузчики OSM на небольшую зону и DEM-рельефа на любую зону

С векторным OSM всё ясно - геометрия подобного рода с минимумом атрибутов
С векторным OSM всё ясно - геометрия подобного рода с минимумом атрибутов

С рельефом также всё ясно - это точки рельефа, которые мы отметили при импорте растров с рельефом. Доступен рельеф ASTER GDEM и FABDEM-1.2 с нашего Яндекс-диска (зеркала).

9. Панель «Атрибутика»

Сюда относится палитра с отображением свойств объектов (на картинке выше, например). Также - инструменты импорта-экспорта определений свойств и значений свойств. Мы реализовали хранение информации не внутри чертежа, так как при этом происходило значительное падение производительности при работе с большими объектами, а в виде локального файла с XML-разметкой по своей логике:

Вид XML-файла со свойствами и их значениями
Вид XML-файла со свойствами и их значениями

10. Панель "Облака точек"

Здесь имеются 2 команды - пересчет облака точек и растеризация. Диалог поход в обоих окнах:

Окошко с настройками растеризации
Окошко с настройками растеризации

Растры формируются по подходу, как я делал 2 года назад для выполнения тендера в рабочей группе от СПбПУ по дорогам СПб. Подход примитивный, конечно, но свою задачу выполняет, пусть и медленно.

Вид результата (пример)
Вид результата (пример)

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

11. Заканчиваем

В общем, постарался "галопом" промчаться по всем новинкам.На самом деле, команд в нынешней версии ГИС теперь 32 штуки и некоторые наверное ещё появятся до презентации в конце января нынешнего, 2024 года.

Список команд из Справки к нашему TBS-GIS
Список команд из Справки к нашему TBS-GIS

Как будет утверждена точная дат вебинара, я допишу её здесь и отдельно сделаю статью-приглашение на канале.