Удалить объекты внутри объектов другой карты |
|
|
Скрипт предназначен для автоматического поиска и удаления объектов на одной векторной карте, которые полностью находятся внутри контуров объектов на другой векторной карте и имеют те же ключи. При этом удаляемые объекты можно перенести на карту‑архив. Для работы необходимы две открытые векторные карты в одном документе. Одна карта выступает в роли «контейнера» (анализируемая, содержит внешние контуры), другая — в роли редактируемой (объекты которой проверяются на вхождение). Объекты редактируемой карты, полностью лежащие внутри объекта-контейнера с тем же ключом, считаются «внутренними» и подлежат удалению.
Требования к картам • Обе карты должны быть открыты в текущем документе; • Обе карты должны быть созданы по одному классификатору; • Редактируемая карта должна иметь разрешение на редактирование (не должна быть защищена от записи).
Модели (условия поиска) Скрипт использует модель, заданную в виде XML‑файла с расширением vclx. Она определяет, какие именно объекты на каждой карте будут участвовать в анализе. При открытии диалога скрипт автоматически предлагает путь к файлу моделей по умолчанию, который ищется в папке классификатора (например, map5000m.rscz.vclx). Если у вас нет готовой модели, вы можете создать её через диалог Поиск объектов карты, вызвав его по кнопке Добавить. Подробнее о создании моделей можно прочитать в соответствующем разделе справки.
Интерфейс диалога После запуска скрипта появляется окно со следующими элементами:
Чтобы начать работу в диалоге: 1. Откройте в ГИС «Панорама» документ, содержащий как минимум две векторные карты (например, Карта1.sitx и Карта2.sitx). 2. Во вкладке Скрипты диалога Запуск приложений найдите и запустите скрипт Удалить объекты внутри объектов другой карты. 3. В появившемся диалоге: • В выпадающем списке Анализируемая карта выберите карту, относительно объектов которой будет выполняться поиск. • В выпадающем списке Редактируемая карта выберите карту, с которой будут удаляться объекты. • В поле Файл моделей укажите путь к файлу моделей, содержащему условия отбора объектов. • В выпадающем списке Модель выберите конкретную модель (если их несколько). • При необходимости установите галочку Удалённые объекты сохранять в карту и укажите соответствующую карту.
4. Нажмите кнопку Выполнить.
Скрипт: • Загружает модели и находит все объекты на обеих картах, удовлетворяющие условиям. • Для каждого объекта на редактируемой карте проверяет, не лежит ли он целиком внутри одного из контуров объектов-контейнеров. • Если условие выполняется, объект копируется в новую карту‑архив и удаляется из исходной. • На экране отображается индикатор прогресса.
5. По окончании появится окно с сообщением о количестве перемещённых объектов.
Примечания и ограничения: • Скрипт проверяет полное вхождение объекта в контур: объект должен быть расположен строго внутри, без касания границ или пересечения с внешним контуром. • Если объект-контейнер имеет несколько внешних контуров, то проверяемый объект должен находиться целиком внутри хотя бы одного контура. • Объекты с вырожденной метрикой (нулевое количество точек) игнорируются при проверке. • Для работы требуется, чтобы в системе были установлены модули py_mapapi14 (штатная поставка ГИС «Панорама») и Python 3.5 или новее. • Если редактируемая карта защищена от записи, скрипт выдаст предупреждение и не запустит операцию. • При возникновении ошибок (например, не удалось создать архивную карту) скрипт выводит сообщение пользователю и завершается, не изменяя исходные данные. • Скрипт не изменяет объекты-контейнеры и не затрагивает другие карты документа. • Скрипт не работает с графическими объектами. |