Подпись | Описание | Тип данных |
Входные объекты | Входные объекты, которые будут обрабатываться. | Feature Layer |
Поле группировки
| Поле, использующееся для определения того, какие объекты имеют совпадающие, не накладывающиеся друг на друга границы. | Field |
Выходной класс объектов | Класс объектов, который будет создан. | Feature Class |
Метод
| Метод, который будет использоваться для упорядочения входных объектов.
| String |
Допуск
| Максимальное расстояние, на которые упорядоченный контур может отступать от границы его исходного объекта. | Linear Unit |
Точность | Точность пространственной сетки, используемой в процессе упорядочивания. Действительные значения находятся в диапазоне от 0.05 до 0.25. | Double |
Максимальное угловое смещение
| Максимальное смещение внутренних углов наилучшей линии, использующееся при использовании метода Прямые углы и диагонали (RIGHT_ANGLES_AND_DIAGONALS). Для получения наилучших результатов это значение не должно превышать 5°. Этот параметр отключен для других методов упорядочения. | Double |
Краткая информация
Согласует контуры зданий с общими границами.
Использование
Этот инструмент использует алгоритм сжатия полилиний для исправления искажений в полигонах контуров зданий, созданных во время рабочего процесса извлечения объектов, который может производить нежелательные артефакты.
При согласовании контуров зданий, полученных из растровых данных, допуск упорядочения должен быть больше разрешения исходного растра.
У объектов со смежными границами для создания упорядоченной границы, не накладывающейся на другой объект, должно быть одинаковое значение атрибута. Если общего атрибута нет, выполните следующие действия:
- Воспользуйтесь инструментомБуфер с буферным расстоянием, соответствующем нужному допуску упорядочения.
- Обработайте полигоны буферов инструментом Объединение для создания из перекрывающихся полигонов одного объекта.
- Воспользуйтесь инструментом Пространственное соединение для добавления уникального ID объединенных полигонов ко входным для инструмента упорядочения объектам.
- Запустите инструмент Упорядочить контуры зданий с указанием поля уникального ID в параметре Поле группировки (параметр group в Python).
Используйте метод Любые углы для входных объектов с острыми и обратными углами, либо когда угол между двумя сегментами не попадает интервал 45° между 90° и 180°.
Если инструмент не производит упорядоченные полигоны с заданными входными данными, в выходные данные копируются исходные объекты. Значение, указанное в поле STATUS будет показывать, был ли объект упорядочен следующим образом:
- 0 – Упорядоченный объект
- 1 – Исходный объект
Параметры
arcpy.ddd.RegularizeAdjacentBuildingFootprint(in_features, group, out_feature_class, method, tolerance, precision, angular_limit)
Имя | Описание | Тип данных |
in_features | Входные объекты, которые будут обрабатываться. | Feature Layer |
group | Поле, использующееся для определения того, какие объекты имеют совпадающие, не накладывающиеся друг на друга границы. | Field |
out_feature_class | Класс объектов, который будет создан. | Feature Class |
method | Метод, который будет использоваться для упорядочения входных объектов.
| String |
tolerance | Максимальное расстояние, на которые упорядоченный контур может отступать от границы его исходного объекта. | Linear Unit |
precision | Точность пространственной сетки, используемой в процессе упорядочивания. Действительные значения находятся в диапазоне от 0.05 до 0.25. | Double |
angular_limit | Максимальное смещение внутренних углов наилучшей линии, использующееся при использовании метода Прямые углы и диагонали (RIGHT_ANGLES_AND_DIAGONALS). Для получения наилучших результатов это значение не должно превышать 5°. Этот параметр отключен для других методов упорядочения. | Double |
Пример кода
В следующем примере показано использование этого инструмента в окне Python:
arcpy.env.workspace = 'c:/data'
arcpy.ddd.RegularizeAdjacentBuildingFootprint('rough_footprints.shp', 'Block_ID',
'regularized_footprints.shp',
'RIGHT_ANGLES_AND_DIAGONALS',
'2 Meters', 0.10)
В следующем примере показано использование этого инструмента как автономного скрипта Python:
'''****************************************************************************
Name: Classify Lidar & 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)
dem = arcpy.GetParameterAsText(1)
footprint = arcpy.GetParameterAsText(2)
try:
desc = arcpy.Describe(lasd)
if desc.spatialReference.linearUnitName in ['Foot_US', 'Foot']:
unit = 'Feet'
else:
unit = 'Meters'
ptSpacing = desc.pointSpacing * 2.25
sampling = '{0} {1}'.format(ptSpacing, unit)
# Classify overlap points
arcpy.ddd.ClassifyLASOverlap(lasd, sampling)
# Classify ground points
arcpy.ddd.ClassifyLasGround(lasd)
# Filter for ground points
arcpy.management.MakeLasDatasetLayer(lasd, 'ground', class_code=[2])
# Generate DEM
arcpy.conversion.LasDatasetToRaster('ground', dem, 'ELEVATION',
'BINNING NEAREST NATURAL_NEIGHBOR',
sampling_type='CELLSIZE',
sampling_value=desc.pointSpacing)
# Classify noise points
arcpy.ddd.ClassifyLasNoise(lasd, method='ISOLATION', edit_las='CLASSIFY',
withheld='WITHHELD', ground=dem,
low_z='-2 feet', high_z='300 feet',
max_neighbors=ptSpacing, step_width=ptSpacing,
step_height='10 feet')
# Classify buildings
arcpy.ddd.ClassifyLasBuilding(lasd, '7.5 feet', '80 Square Feet')
#Classify vegetation
arcpy.ddd.ClassifyLasByHeight(lasd, 'GROUND', [8, 20, 55],
compute_stats='COMPUTE_STATS')
# Filter LAS dataset for building points
lasd_layer = 'building points'
arcpy.management.MakeLasDatasetLayer(lasd, lasd_layer, class_code=[6])
# Export raster from lidar using only building points
temp_raster = 'in_memory/bldg_raster'
arcpy.management.LasPointStatsAsRaster(lasd_layer, temp_raster,
'PREDOMINANT_CLASS', 'CELLSIZE', 2.5)
# Convert building raster to polygon
temp_footprint = 'in_memory/footprint'
arcpy.conversion.RasterToPolygon(temp_raster, temp_footprint)
# Regularize building footprints
arcpy.ddd.RegularizeBuildingFootprint(temp_footprint, footprint,
method='RIGHT_ANGLES')
except arcpy.ExecuteError:
print(arcpy.GetMessages())
Информация о лицензиях
- Basic: Обязательно 3D Analyst
- Standard: Обязательно 3D Analyst
- Advanced: Обязательно 3D Analyst