ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Справка
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS Desktop

Полноценная профессиональная ГИС

ArcGIS Enterprise

ГИС предприятия

ArcGIS Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • Документация
  • Поддержка
Esri
  • Войти
user
  • Мой профиль
  • Выход

ArcMap

  • На главную
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительные модули

Упорядочить контуры зданий

  • Сводка
  • Иллюстрация
  • Использование
  • Синтаксис
  • Пример кода
  • Параметры среды
  • Информация о лицензиях

Сводка

Нормализует полигоны контуров зданий путем исключения нежелательных артефактов в их геометрии.

Иллюстрация

Упорядоченные контуры зданий

Использование

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

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

  • Если контуры зданий содержат круглые элементы, они будут обработаны первыми. Показатель компактности может применяться для определения круглых строений. Чтобы вычислить это значение, выполните следующее:

    1. Добавьте поле двойной точности.
    2. В калькуляторе поля вычислите следующее выражение:
      (4 * 3.14159265358979 * !shape.area!) / !shape.length! ** 2
    3. У идеальной окружности значение будет равно 1, но поскольку обычно обрабатываемые этим инструментом полигоны обычно не являются правильными, круглые элементы скорее всего характерны для значений, близких к 1. Оцените полученные результаты, чтобы определить минимальное значение для круглого строения и выбрать значения, большие или равные этому, перед выполнением инструмента с методом CIRCLE.
  • Если с указанными параметрами для входных данных не получаются упорядоченные полигоны, в выходные данные копируются исходные объекты. Значение в поле STATUS будет указывать был объект упорядочен или нет:

    • 0 – Упорядоченный объект
    • 1 – Исходный объект
    Примечание:

    Если в выходных данных содержатся объекты, которые невозможно упорядочить, выполните повторный запуск инструмента с выборкой необработанных объектов и изменением параметров, определяющих процесс. Фоновое спутниковое изображение может существенно помочь в оценке точности регуляризованного выходного объекта.

Синтаксис

arcpy.ddd.RegularizeBuildingFootprint(in_features, out_feature_class, method, tolerance, densification, precision, diagonal_penalty, min_radius, max_radius)
ПараметрОбъяснениеТип данных
in_features

Полигоны для упорядочивания, представляющие контуры зданий.

Feature Layer
out_feature_class

Класс объектов, который будет получен в результате работы инструмента.

Feature Class
method

Метод упорядочивания, используемый для обработки входных объектов.

  • RIGHT_ANGLES —Подходит для контуров зданий, определяемых, в основном, прямыми углами
  • RIGHT_ANGLES_AND_DIAGONALS —Подходит для контуров зданий, состоящих из прямых углов и диагональных сторон
  • ANY_ANGLE —Подходит для зданий с нестандартными контурами.
  • CIRCLE —Подходит для контуров зданий с округлыми очертаниями, например, элеваторов и водонапорных башен
String
tolerance

Максимальное расстояние, на которые упорядоченный контур может отступать от границы его исходного объекта. Указанные значения будут основываться на линейных единицах системы координат входных объектов.

Double
densification

Интервал выборки, который будет использован для оценки того, будет ли упорядоченный объект прямым или искривленным. Уплотнение должно быть меньше или равно значению допуска.

Этот параметр используется только для методов, поддерживающих определение прямых углов.

Double
precision

Точность, используемая пространственной сеткой, примененной в процессе упорядочивания. Действительные значения находятся в диапазоне от 0.05 до 0.25.

Double
diagonal_penalty

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

Этот параметр используется только для метода RIGHT_ANGLES_AND_DIAGONALS.

Double
min_radius

Наименьший радиус, который может быть у упорядоченных окружностей. Значение 0 подразумевает, что нет ограничений минимального размера. Эта опция доступна только для метода CIRCLE.

Double
max_radius

Наибольший радиус, который может быть у упорядоченных окружностей. Эта опция доступна только для метода Окружностей.

Double

Пример кода

RegularizeBuildingFootprint, пример 1 (окно Python)

В следующем примере показано использование этого инструмента в окне 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)
RegularizeBuildingFootprint, пример 2 (автономный скрипт)

В следующем примере показано использование этого инструмента в автономном скрипте 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

Связанные разделы

  • Обзор группы инструментов 3D-объекты.
  • О 3D объектах
  • Основы геообработки с помощью дополнительного модуля ArcGIS 3D Analyst

ArcGIS Desktop

  • На главную
  • Документация
  • Поддержка

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Об Esri

  • О нас
  • Карьера
  • Блог Esri
  • Конференция пользователей
  • Саммит разработчиков
Esri
Расскажите нам, что вы думаете.
Copyright © 2021 Esri. | Конфиденциальность | Правовая информация