Решить конфликты зданий (Resolve Building Conflicts) (Картография)
Резюме
Разрешает конфликты символов зданий относительно объектов линейных барьеров, передвигая или скрывая здания.
Более подробно о том, как работает инструмент Решить конфликты зданий (Resolve Building Conflicts).
Этот инструмент не создает новых выходных слоев, а изменяет исходные классы пространственных объектов входных слоев. Если входные слои отображаются с помощью представлений (их поведение при редактировании настроено на сохранение замещений объектов), модифицированные объекты сохраняются как объекты замещения в представлениях. Если слой не использует представления, будет изменена геометрия входных объектов. При работе с инструментами разрешения конфликтов (conflict resolution tools) рекомендуется использовать представления. В случае, если результаты оказались неудовлетворительными или если вы хотите заново запустить инструмент с другими параметрами, просто удалите замещения с помощью инструмента Удалить замещения (Remove Override). В случае, если вы не используете представления с поведением при редактировании, настроенном на сохранение замещений объектов, настоятельно рекомендуется сделать копию ваших исходных данных.
Программа выдаст предупреждение, если входные объекты не спроецированы. Этот инструмент использует линейные единицы измерения расстояний, поэтому его работа с не спроецированной системой координат может привести к некорректным результатам. Настоятельно рекомендуем вам использовать для этого инструмента спроецированные данные для получения корректных результатов. Если координатная система отсутствует или неизвестна, инструмент выдаст ошибку и прекратит работу.
Рисунок
Использование
-
Этот инструмент работает на основе оценки графических конфликтов символов объектов. Экстент символогии и базовый масштаб рассматриваются во взаимосвязи друг с другом. Запускайте этот инструмент только после того, как закончите настройку отображения символов и убедитесь, что базовый масштаб соответствует запланированному конечному выходному масштабу.
-
Все входные классы пространственных объектов должны иметь Поле невидимости (Invisibility Field), имеющее одно и тоже название. Объектам, которые должны оставаться видимыми, присваивается значение 0; те объекты, которые не должны отображаться, получают значение, равное 1. Используйте определяющий запрос или выборку для отображения получившегося набора упрощенных объектов (т. е. объектов, для которых значение параметра Невидимость (Invisibility) <> 1). Вы можете использовать несколько полей невидимости для хранения нескольких различных результатов обработки одного и того же класса пространственных объектов в зависимости от требуемого масштаба выходной карты.
Перед оценкой конфликтов полигональные здания увеличиваются до минимального размера, определяемого параметром Минимальный допустимый размер здания (Minimum Allowable Building Size). Минимальный размер - это длина короткой стороны наилучшего описывающего объект прямоугольника. Чтобы понять размер зданий на выходе, добавьте поле типа double или float с именем RBC_SIZE к любому входному классу пространственных объектов-зданий. По окончании работы инструмента это поле будет заполнено значениями длин коротких сторон повернутых описанных вокруг соответствующего объекта прямоугольников.
-
Параметр Поле иерархии (Hierarchy Field) является дополнительным. Если он не указан, важность строений будет определяться исходя из значения их периметра, а также расположения относительно барьеров. Здания большего размера, расположенные недалеко от более чем одного барьера, будут оцениваться как более важные, чем меньшие здания, расположенные дальше от барьера. Вы можете использовать частично заполненное Поле иерархии, в котором только наиболее важные здания имеют атрибутивное значение иерархии, а остальные объекты (с нулевым значением иерархии) имеют вычисленный показатель важности.
-
Если используется параметр Поле иерархии (Hierarchy Field), зданиям, которые будут принудительно отображаться, присваивается нулевое значение иерархии (0). Эти здания не будут маскированы данным инструментом. Здание с нулевым значением иерархии считается важным, поэтому находящиеся вблизи здания будут оцениваться выше, чем было бы в случае, если бы они принудительно не отображались. Здания, имеющие нулевую иерархию, могут быть трансформированы (сдвинуты, повернуты или масштабированы) с целью разрешения конфликтов и их соответствия требуемым параметрам.
Все здания, которые конфликтуют с барьерами (имеется в виду не просто отображение с помощью символов, а фактическая геометрия объектов, которые перекрываются с барьерными объектами, например, дорогами), не будут сдвинуты относительно барьеров. Такие здания могут быть помечены для последующего разрешения конфликтов, но они не будут сдвинуты. Таким образом, конфликт останется.
Если символы барьерных объектов распределены не симметрично относительно геометрии — то есть символ с одной стороны линии толще, чем с другой — может образоваться большой просвет здание-барьер, со стороны, где символ тоньше.
Одновременная обработка большого объема данных или многих слоев барьеров может вызвать превышение ограничений использования памяти. В таком случае попытайтесь разделить входные данные зданий на части, определив соответствующий полигональный класс пространственных объектов с помощью параметра среды +++Частичные объекты (Partition Features). Части данных зданий, разделенные между собой границами, будут последовательно обрабатываться отдельно друг от друга. Полученные слои будут бесшовными и единообразными между границами частей. Более подробные сведения об использовании этого инструмента в сочетании с разделением на части см. в разделе Как работает инструмент Разрешить конфликты зданий (Resolve Building Conflicts).
Синтаксис
Параметр | Объяснение | Тип данных |
in_buildings [in_buildings,...] |
Входные слои с объектами зданий, которые могут находиться в конфликте или имеют размер меньше допустимого. Здания могут быть представлены точечными или полигональными объектами. Здания будут изменены с целью разрешения конфликтов с другими зданиями и объектами барьеров. | Layer |
invisibility_field |
Поле, в котором сохраняются значения невидимости объектов, которые могут использоваться для того, чтобы не отображать то или иное здание, что поможет решить конфликты символов. Здания, имеющие значение, равное 1, не будут отображаться; имеющие нулевое значение - будут. Для показа только видимых зданий используйте определяющий запрос слоя. Объекты не удаляются. | String |
in_barriers [[Layer, Boolean, Linear Unit],...] |
Слои, которые содержат линейные или полигональные объекты, являющиеся барьерами по отношению к входным объектам зданий. Здания будут изменены для разрешения конфликтов между зданиями и барьерами. Значение Orient является булевым и определяет, должны ли здания быть сориентированными относительно слоя барьеров. Gap определяет расстояние, на которое могут быть подвинуты здания в направлении барьеров или в противоположную сторону. Вместе со значением должна быть указана единица измерения.
Примечание: Если не указана единица измерения значения параметра Промежуток (Gap) (например, указано 10 вместо 10 метров), будут использованы линейные единицы измерения системы координат входных данных. | Value Table |
building_gap |
Минимально допустимое расстояние между зданиями в масштабе карты. Здания, расположенные друг к другу ближе, будут смещены или скрыты, чтобы обеспечить соблюдение этого допуска. Минимально допустимое расстояние устанавливается на основании базового масштаба (то есть 15 метров в масштабе 1:50 000). Если базовый масштаб не установлен, значение равно нулю. | Linear unit |
minimum_size |
Минимально допустимая длина самой короткой стороны повернутого прямоугольника, наилучшим образом описывающего размеры здания, взятая в масштабе карты. Здания, имеющие описывающий их прямоугольник меньшего размера, чем задано параметром, будут преувеличены. Изменение размеров может привести к некорректным изменениям структуры здания. | Linear unit |
hierarchy_field (дополнительно) |
Поле содержит ранжирование объектов в зависимости от их важности, причем значение, равное 1, соответствует наиболее важным объектам; с дальнейшим увеличением числа важность объектов снижается. Здания, имеющие нулевое значение, будут принудительно отображаться, хотя они могли бы быть перемещены для разрешения конфликтов. Если этот параметр не используется, важность объектов будет оцениваться исходя из периметра объекта и его близости к барьеру. | String |
Пример кода
Приведенный ниже скрипт окна Python демонстрирует порядок непосредственного использования инструмента ResolveBuildingConflicts.
import arcpy
from arcpy import env
env.workspace = "C:/data"
env.referenceScale = "50000"
arcpy.ResolveBuildingConflicts_cartography("C:/data/footprints.lyr; C:/data/bldg_points.lyr", "invisible",
"'C:/data/roads.lyr' 'true' '5 Meters';'C:/data/trails.lyr' 'false' '10 Meters';'C:/data/streams.lyr' 'false' '5 Meters'",
"10 meters", "15 meters", "bldg_hierarchy")
Этот автономный скрипт демонстрирует пример использования инструмента ResolveBuildingConflicts.
# Name: ResolveBuildingConflicts_standalone_script.py
# Description: Resolves the symbology conflicts between
# buildings and nearby barriers,
# in this case - roads
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
env.referenceScale = "50000"
# Set local variables
in_buildings = "C:/data/footprints.lyr;C:/data/bldg_pts.lyr"
invisibility_field = "invisible"
in_barriers = "'C:/data/roads.lyr' 'true' '5 Meters';\
'C:/data/trails.lyr' 'false' '10 Meters';\
'C:/data/streams.lyr' 'false' '5 Meters'"
building_gap = "10 meters"
minimum_size = "15 meters"
hierarchy_field = "bldg_hierarchy"
# Execute Resolve Building Conflicts
arcpy.ResolveBuildingConflicts(in_buildings,
invisibility_field,
in_barriers,
building_gap,
minimum_size,
hierarchy_field)