ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Ayuda
  • Sign Out
ArcGIS Desktop

ArcGIS Online

La plataforma de representación cartográfica para tu organización

ArcGIS Desktop

Un completo SIG profesional

ArcGIS Enterprise

SIG en tu empresa

ArcGIS Developers

Herramientas para crear aplicaciones basadas en la ubicación

ArcGIS Solutions

Plantillas de aplicaciones y mapas gratuitas para tu sector

ArcGIS Marketplace

Obtén aplicaciones y datos para tu organización.

  • Documentación
  • Soporte
Esri
  • Iniciar sesión
user
  • Mi perfil
  • Cerrar sesión

ArcMap

  • Inicio
  • Introducción
  • Cartografiar
  • Analizar
  • Administrar datos
  • Herramientas
  • Extensiones

Regularizar huella de edificio

  • Resumen
  • Ilustración
  • Uso
  • Sintaxis
  • Muestra de código
  • Entornos
  • Información de licenciamiento

Resumen

Normaliza la huella de los polígonos de edificios eliminando elementos no deseados en su geometría.

Ilustración

Huellas de edificios regularizadas

Uso

  • Esta herramienta utiliza un algoritmo de compresión de polilíneas para corregir las distorsiones en los polígonos de huella de edificio creados a través de los flujos de trabajo de extracción de entidades que pueden producir artefactos no deseados.

  • El valor de tolerancia define la región que rodea el límite del polígono en la que debe encajar el polígono regularizado. Esta región puede visualizarse mejor convirtiendo el límite del polígono en una entidad de líneas y, a continuación, creando zonas de influencia de la línea según la distancia de tolerancia deseada.

  • Si las huellas de edificios contienen estructuras circulares, primero se deberán procesar estas entidades. Se puede utilizar una ratio de compactación para identificar edificios circulares. Para calcular este valor, realice lo siguiente:

    1. Agregue un campo de tipo doble.
    2. Utilice la calculadora de campos para calcular la siguiente fórmula:
      (4 * 3.14159265358979 * !shape.area!) / !shape.length! ** 2
    3. Un círculo perfecto tendrá un valor de 1 pero, dado que los polígonos que se suelen procesar con esta herramienta tienen alguna irregularidad, los valores cercanos a 1 tienen más probabilidades de tener una forma circular. Evalúe los resultados para identificar el valor mínimo de un edificio circular y seleccione valores iguales o superiores a este valor antes de ejecutar esta herramienta con el método CIRCLE.
  • Cuando los parámetros especificados no pueden ofrecer una solución regularizada para una entrada dada, la entidad original se copia en la salida. El valor especificado en el campo STATUS indicará si la entidad está regularizada o no:

    • 0: Entidad regularizada
    • 1: Entidad original
    Nota:

    Si su salida contiene entidades que no han podido regularizarse, considere la posibilidad de ejecutar la herramienta de forma iterativa seleccionando las entidades no procesadas y modificando los parámetros para identificar una solución. La imagen de fondo puede resultar muy útil para evaluar la exactitud de la salida regularizada.

Sintaxis

arcpy.ddd.RegularizeBuildingFootprint(in_features, out_feature_class, method, tolerance, densification, precision, diagonal_penalty, min_radius, max_radius)
ParámetroExplicaciónTipo de datos
in_features

Polígonos que representan las huellas de edificio que deben regularizarse.

Feature Layer
out_feature_class

La clase de entidad que generará esta herramienta.

Feature Class
method

Método de regularización que debe utilizarse para procesar las entidades de entrada.

  • RIGHT_ANGLES —Útil para huellas de edificio que están definidas principalmente por ángulos rectos
  • RIGHT_ANGLES_AND_DIAGONALS —Útil para huellas de edificio que están compuestas por ángulos rectos y lados diagonales
  • ANY_ANGLE —Útil para edificios con huellas muy irregulares.
  • CIRCLE —Útil para edificios con características circulares, como silos de grano y torres de agua
String
tolerance

Distancia máxima que la huella regularizada puede desviarse del límite de su entidad original. El valor especificado se basará en las unidades lineales del sistema de coordenadas de la entidad de entrada.

Double
densification

Intervalo de muestreo que se utilizará para evaluar si la entidad regularizada estará recta o curvada. La densificación debe ser menor o igual que el valor de tolerancia.

Este parámetro solo se utiliza con métodos que admitan la identificación de ángulos rectos.

Double
precision

Precisión utilizada por la cuadrícula espacial empleada en el proceso de regularización. Los valores válidos varían de 0.05 a 0.25.

Double
diagonal_penalty

Controla el sesgo de distancia para crear conexiones de ángulo recto. Las distancias inferiores a la penalización en diagonal se utilizarán para crear ángulos rectos.

Este parámetro solo se utiliza con el método RIGHT_ANGLES_AND_DIAGONALS.

Double
min_radius

Radio más pequeño que puede tener un círculo regularizado. Un valor de 0 implica que no hay ningún límite de tamaño mínimo. Esta opción solo está disponible con el método de CIRCLE.

Double
max_radius

Radio más grande que puede tener un circular regularizado. Esta opción solo está disponible con el método de Círculo.

Double

Muestra de código

Ejemplo 1 de RegularizeBuildingFootprint (ventana de Python)

En el siguiente ejemplo se muestra cómo usar esta herramienta en la ventana de 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)
Ejemplo 2 de RegularizeBuildingFootprint (script independiente)

En el siguiente ejemplo se muestra cómo usar esta herramienta en un script independiente de 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())

Entornos

  • Espacio de trabajo actual
  • Sistema de coordenadas de salida
  • Transformaciones geográficas
  • Extensión
  • Factor de procesamiento en paralelo

Información de licenciamiento

  • Basic: Requiere 3D Analyst
  • Standard: Requiere 3D Analyst
  • Advanced: Requiere 3D Analyst

Temas relacionados

  • Vista general del conjunto de herramientas Entidades 3D
  • Acerca de entidades 3D
  • Principios básicos del geoprocesamiento con la extensión ArcGIS 3D Analyst

ArcGIS Desktop

  • Inicio
  • Documentación
  • Soporte

ArcGIS

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

Acerca de Esri

  • Quiénes somos
  • Empleo
  • Blog de Esri
  • Conferencia de usuarios
  • Cumbre de desarrolladores
Esri
Díganos su opinión.
Copyright © 2021 Esri. | Privacidad | Legal