Подпись | Описание | Тип данных |
Входные объекты | Полигоны для упорядочивания, представляющие контуры зданий. | Feature Layer |
Выходной класс объектов | Класс объектов, который будет создан. | Feature Class |
Метод | Указывает метод упорядочивания, используемый для обработки входных объектов.
| String |
Допуск | Для большинства методов это значение представляет максимальное расстояние, на которые упорядоченный контур может отступать от границы его исходного объекта. Указанные значения будут основываться на линейных единицах системы координат входных объектов. При использовании метода Круг эта опция также интерпретируется как отношение разности между исходным объектом и его регуляризованным результатом, в отличие от площади регуляризоанного результата, основанной на значении, указанном в параметре Тип допуска. | Double |
Уплотнение | Интервал выборки, который будет использован для оценки того, будет ли упорядоченный объект прямым или искривленным. Уплотнение должно быть меньше или равно значению допуска. Этот параметр используется только для методов, поддерживающих определение прямых углов. | Double |
Точность | Точность пространственной сетки, используемой в процессе упорядочивания. Действительные значения находятся в диапазоне от 0.05 до 0.25. | Double |
Диагональный штрафной коэффициент | При использовании метода Прямые углы и диагонали это значение определяет вероятность построения прямых углов или диагональных ребер между двумя смежными сегментами. При использовании метода Любые углы это значение определяет вероятность построения диагональных ребер, которые не соответствуют предпочтительным ребрам, определенным алгоритмом инструмента. Если значение штрафа равно 0, предпочтительные ребра не будут использоваться, что приведет к получению упрощенного неправильного полигона. Как правило, чем выше значение, тем меньше вероятность того, что будет построено диагональное ребро. | Double |
Минимальный радиус | Наименьший радиус, допустимый для упорядоченной окружности. Значение 0 подразумевает, что нет ограничений минимального размера. Эта опция доступна только для метода Окружность. | Double |
Максимальный радиус | Наибольший радиус, допустимый для упорядоченной окружности. Эта опция доступна только для метода Окружность. | Double |
Объект выравнивания (Дополнительный) | Линейный объект, который будет использоваться для выравнивания ориентации упорядоченных полигонов. Каждый полигон будет выровнен только по одному линейному объекту. | Feature Layer |
Допуск выравнивания (Дополнительный) | Максимальное пороговое расстояние, которое будет использоваться для поиска ближайшего объекта выравнивания. Например, значение 20 метров указывает, что для выравнивания упорядоченного полигона будет использоваться ближайшая линия в пределах 20 м. | Linear Unit |
Тип допуска (Дополнительный) | Определяет допуск, который будет применен, если параметр Метод установлен на Круг.
| String |
Краткая информация
Нормализует контуры полигонов зданий путем исключения нежелательных артефактов в их геометрии.
Иллюстрация
Использование
Этот инструмент использует алгоритм сжатия полилиний для исправления искажений в полигонах контуров зданий, созданных во время рабочего процесса извлечения объектов, который может производить нежелательные артефакты.
Если контуры зданий содержат круглые структуры, обработайте их в первую очередь. Показатель компактности может применяться для определения круглых строений. Чтобы вычислить это значение, выполните следующее:
- Добавьте поле двойной точности.
- В калькуляторе поля вычислите следующее выражение:
(4 * 3.14159265358979 * !shape.area!) / !shape.length! ** 2
- Правильный круг будет иметь значение 1. Но поскольку полигоны, обработанные этим инструментов, будут с некоторыми неровностями, значения, близкие к 1, вероятно будут иметь круглую форму. Оцените полученные результаты, чтобы определить минимальное значение для круглого строения. Затем выберите значения, большие или равные этому, перед выполнением данного инструмента с параметром Метод, установленным на Окружность.
Задайте параметр Метод на Любые углы, если контуры здания представляют геометрию с ребрами, образующими комбинацию углов, которые включают, помимо прочего, изгибы 45° и 90°. Начните с выбора поднабора объектов, содержащих ребра неправильной формы, и оцените, какое значение диагонального штрафного коэффициента дает желаемый результат. Если результат неверно обозначает диагональные ребра, измените значения допуска, чтобы ограничить зону упорядочивания и постепенно снизить диагональный штрафной коэффициент. Если выходные данные содержат нежелательные ребра с острыми внутренними углами, повторно запустите инструмент, увеличивая при этом диагональный штрафной коэффициент до тех пор, пока не будет достигнут желаемый результат. Затем используйте это значение для обработки всего набора данных.
Когда опция Любые углы используется на компьютере с графической картой NVIDIA, которая поддерживает CUDA и имеет более 2 ГБ памяти, инструмент будет использовать графический процессор для выполнения своей операции. Вы можете изменить это поведение в параметре среды Тип процессора. При наличии нескольких графических процессоров, необходимый графический процессор можно указать с помощью параметра среды GPU ID.
Если инструмент не производит упорядоченные полигоны с заданными входными данными, в выходные данные копируются исходные объекты. Значение, указанное в поле STATUS будет показывать, был ли объект упорядочен следующим образом:
- 0 – Упорядоченный объект
- 1 – Исходный объект
При использовании метода Окружности с геометрией, где есть большие различия в размерах, использование опции Отношение площади для параметра Тип допуска может дать лучшие результаты, чем параметр Расстояние, поскольку построение выходных объектов будет ограничено размером исходной геометрии в отличие от фиксированного размера, который может работать для ограниченного поднабора исходных объектов.
Параметры
arcpy.ddd.RegularizeBuildingFootprint(in_features, out_feature_class, method, tolerance, densification, precision, diagonal_penalty, min_radius, max_radius, {alignment_feature}, {alignment_tolerance}, {tolerance_type})
Имя | Описание | Тип данных |
in_features | Полигоны для упорядочивания, представляющие контуры зданий. | Feature Layer |
out_feature_class | Класс объектов, который будет создан. | Feature Class |
method | Указывает метод упорядочивания, используемый для обработки входных объектов.
| String |
tolerance | Для большинства методов это значение представляет максимальное расстояние, на которые упорядоченный контур может отступать от границы его исходного объекта. Указанные значения будут основываться на линейных единицах системы координат входных объектов. При использовании метода CIRCLE эта опция также интерпретируется как отношение разности между исходным объектом и его регуляризованным результатом, в отличие от площади регуляризоанного результата, основанной на значении, указанном в параметре tolerance_type. | Double |
densification | Интервал выборки, который будет использован для оценки того, будет ли упорядоченный объект прямым или искривленным. Уплотнение должно быть меньше или равно значению допуска. Этот параметр используется только для методов, поддерживающих определение прямых углов. | Double |
precision | Точность пространственной сетки, используемой в процессе упорядочивания. Действительные значения находятся в диапазоне от 0.05 до 0.25. | Double |
diagonal_penalty | При использовании метода RIGHT_ANGLES_AND_DIAGONALS это значение определяет вероятность построения прямых углов или диагональных ребер между двумя смежными сегментами. При использовании метода ANY_ANGLES это значение определяет вероятность построения диагональных ребер, которые не соответствуют предпочтительным ребрам, определенным алгоритмом инструмента. Как правило, чем выше значение, тем меньше вероятность того, что будет построено диагональное ребро. | Double |
min_radius | Наименьший радиус, допустимый для упорядоченной окружности. Значение 0 подразумевает, что нет ограничений минимального размера. Эта опция доступна только для метода CIRCLE. | Double |
max_radius | Наибольший радиус, допустимый для упорядоченной окружности. Эта опция доступна только для метода CIRCLE. | Double |
alignment_feature (Дополнительный) | Линейный объект, который будет использоваться для выравнивания ориентации упорядоченных полигонов. Каждый полигон будет выровнен только по одному линейному объекту. | Feature Layer |
alignment_tolerance (Дополнительный) | Максимальное пороговое расстояние, которое будет использоваться для поиска ближайшего объекта выравнивания. Например, значение 20 метров указывает, что для выравнивания упорядоченного полигона будет использоваться ближайшая линия в пределах 20 м. | Linear Unit |
tolerance_type (Дополнительный) | Определяет допуск, который будет применен, если параметр method установлен на CIRCLE.
| String |
Пример кода
В следующем примере показано использование этого инструмента в окне Python.
arcpy.env.workspace = 'c:/data'
arcpy.ddd.RegularizeBuildingFootprint('rough_footprints.shp',
'regularized_footprints.shp',
method='Circle', tolerance=1.5, min_radius=10,
max_radius=20)
В следующем примере показано использование этого инструмента как автономного скрипта Python.
'''****************************************************************************
Name: Extract Building Footprints
Description: Extract footprint from lidar points classified as buildings,
regularize its geometry, and calculate the building height.
****************************************************************************'''
import arcpy
lasd = arcpy.GetParameterAsText(0)
footprint = arcpy.GetParameterAsText(1)
try:
lasd_layer = 'building points'
arcpy.management.MakeLasDatasetLayer(lasd, lasd_layer, class_code=6)
temp_raster = 'in_memory/bldg_raster'
arcpy.management.LasPointStatsAsRaster(lasd_layer, temp_raster,
'PREDOMINANT_CLASS', 'CELLSIZE', 2.5)
temp_footprint = 'in_memory/footprint'
arcpy.conversion.RasterToPolygon(temp_raster, temp_footprint)
arcpy.ddd.RegularizeBuildingFootprint(temp_footprint, footprint,
method='RIGHT_ANGLES')
arcpy.ddd.LasPointStatsByArea(lasd_layer, footprint, ['MIN_Z', 'MAX_Z'])
arcpy.management.AddField(footprint, 'Height', 'Double')
arcpy.management.CalculateField(footprint, 'Height',
"round('!Z_Max! - !Z_Min!', 2)",
'PYTHON_9.3')
except arcpy.ExecuteError:
print(arcpy.GetMessages())