Regularizar huella de edificio (3D Analyst)

Resumen

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

Ilustración

Ilustración de la herramienta Regularizar huella de edificio

Uso

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

  • Si las huellas de edificios contienen estructuras circulares, procese primero dichas 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. Sin embargo, dado que los polígonos procesados con esta herramienta presentarán ciertas irregularidades, es probable que los valores cercanos a 1 presenten una forma circular. Compruebe los resultados para identificar el valor mínimo de un edificio circular. A continuación, seleccione valores mayores o iguales que este valor antes de ejecutar esta herramienta con el valor del parámetro Método definido como Círculo.
  • Cambie el parámetro Método a Cualquier ángulo si las huellas de edificios representan geometrías con ejes que forman una combinación de ángulos entre las que se incluyen curvaturas de 45° y 90°. Comience por seleccionar un subconjunto de entidades que contengan ejes irregulares y evalúe qué valor de penalización en diagonal genera el resultado deseado. Si el resultado no captura correctamente ejes diagonales, modifique el valor de tolerancia para restringir la zona de regularización y disminuir gradualmente la penalización en diagonal. Si la salida contiene ejes no deseados con ángulos interiores agudos, ejecute de forma iterativa la herramienta mientras aumenta gradualmente la penalización en diagonal hasta obtener la salida deseada. A continuación, utilice este valor para procesar todo el dataset.

  • Cuando se utiliza la opción Cualquier ángulo en un equipo con una tarjeta gráfica NVIDIA compatible con CUDA y más de 2 GB de memoria, la herramienta utilizará la GPU para llevar a cabo su operación. Puede modificar este comportamiento con el entorno Tipo de procesador. Si existen varias GPU, la GPU específica se puede definir mediante el entorno Id. de GPU.

  • Si la herramienta no puede 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 se regularizó de la siguiente manera:

    • 0: Entidad regularizada
    • 1: Entidad original
  • Cuando se utiliza el método Círculos con geometrías que tienen una gran variación de tamaño, utilizar la opción Relación de área para el parámetro Tipo de tolerancia puede producir mejores resultados que la opción Distancia, ya que la construcción de las entidades de salida se restringiría en función del tamaño de la geometría original en lugar de un tamaño fijo que pueda funcionar para un subconjunto limitado de las entidades originales.

Parámetros

EtiquetaExplicaciónTipo de datos
Entidades de entrada

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

Feature Layer
Clase de entidad de salida

La clase de entidad que generará.

Feature Class
Método

Especifica el método de regularización que se utilizará para procesar las entidades de entrada.

  • Ángulos rectosSe construyen formas compuestas de ángulos de 90° entre ejes adyacentes.
  • Ángulos rectos y diagonalesSe construyen formas compuestas de ángulos de entre 45° y 90° entre ejes adyacentes.
  • Cualquier ánguloSe construyen formas que forman cualquier ángulo entre ejes adyacentes.
  • CírculoSe construye el círculo de mejor ajuste alrededor de las entidades de entrada.
String
Tolerancia

En la mayoría de los métodos, este valor representa la 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. Cuando se utiliza el método Círculo, esta opción también se puede interpretar como una relación de la diferencia entre la entidad original y su resultado regularizado respecto al área del resultado regularizado basado en la selección realizada en el parámetro Tipo de tolerancia.

Double
Densificación

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
Precisión

La precisión de la cuadrícula espacial que se utiliza en el proceso de regularización. Los valores válidos varían de 0,05 a 0,25.

Double
Penalización en diagonal

Si se utiliza el método Ángulos rectos y diagonales, este valor identifica la probabilidad de construir ángulos rectos o ejes diagonales entre dos segmentos adyacentes. Si se utiliza el método Cualquier ángulo, este valor identifica la probabilidad de construir ejes diagonales que no se ajustan a los ejes preferentes determinados por el algoritmo de la herramienta. Si el valor de penalización está establecido en 0, no se utilizarán los ejes preferentes, lo que se traduce en la producción de un polígono irregular simplificado. Por lo general, cuanto mayor es el valor, menor es la probabilidad de que se construya un eje diagonal.

Double
Radio mínimo

El radio más pequeño permitido para 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 Círculo.

Double
Radio máximo

El radio más grande permitido para un círculo regularizado. Esta opción solo está disponible con el método de Círculo.

Double
Entidad de alineación
(Opcional)

La entidad de línea que se utilizará para alinear la orientación de los polígonos regularizados. Cada polígono se alineará únicamente a una entidad de línea.

Feature Layer
Tolerancia de alineación
(Opcional)

El umbral de distancia máxima que se utilizará para buscar la entidad de alineación más cercana. Por ejemplo, un valor de 20 metros significa que se usará la línea más cercana que esté a una distancia máxima de 20 metros para alinear el polígono regularizado.

Linear Unit
Tipo de tolerancia
(Opcional)

Especifica cómo se aplicará la tolerancia cuando el parámetro Método se defina como Círculo.

  • DistanciaLa tolerancia que representará la distancia máxima desde el límite de la entidad que se está procesando. Esta es la opción predeterminada.
  • Relación de áreaLa tolerancia representará el límite máximo correspondiente a la relación entre el área de la entidad original que difiere del círculo regularizado y el área del círculo regularizado.
String

arcpy.ddd.RegularizeBuildingFootprint(in_features, out_feature_class, method, tolerance, densification, precision, diagonal_penalty, min_radius, max_radius, {alignment_feature}, {alignment_tolerance}, {tolerance_type})
NombreExplicació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á.

Feature Class
method

Especifica el método de regularización que se utilizará para procesar las entidades de entrada.

  • RIGHT_ANGLESSe construyen formas compuestas de ángulos de 90° entre ejes adyacentes.
  • RIGHT_ANGLES_AND_DIAGONALSSe construyen formas compuestas de ángulos de entre 45° y 90° entre ejes adyacentes.
  • ANY_ANGLESe construyen formas que forman cualquier ángulo entre ejes adyacentes.
  • CIRCLESe construye el círculo de mejor ajuste alrededor de las entidades de entrada.
String
tolerance

En la mayoría de los métodos, este valor representa la 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. Cuando se utiliza el método CIRCLE, esta opción también se puede interpretar como una relación de la diferencia entre la entidad original y su resultado regularizado respecto al área del resultado regularizado basado en la selección realizada en el parámetro tolerance_type.

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

La precisión de la cuadrícula espacial que se utiliza en el proceso de regularización. Los valores válidos varían de 0,05 a 0,25.

Double
diagonal_penalty

Si se utiliza el método RIGHT_ANGLES_AND_DIAGONALS, este valor identifica la probabilidad de construir ángulos rectos o ejes diagonales entre dos segmentos adyacentes. Si se utiliza el método ANY_ANGLES, este valor identifica la probabilidad de construir ejes diagonales que no se ajustan a los ejes preferentes determinados por el algoritmo de la herramienta. Por lo general, cuanto mayor es el valor, menor es la probabilidad de que se construya un eje diagonal.

Double
min_radius

El radio más pequeño permitido para 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 CIRCLE.

Double
max_radius

El radio más grande permitido para un círculo regularizado. Esta opción solo está disponible con el método CIRCLE.

Double
alignment_feature
(Opcional)

La entidad de línea que se utilizará para alinear la orientación de los polígonos regularizados. Cada polígono se alineará únicamente a una entidad de línea.

Feature Layer
alignment_tolerance
(Opcional)

El umbral de distancia máxima que se utilizará para buscar la entidad de alineación más cercana. Por ejemplo, un valor de 20 metros significa que se usará la línea más cercana que esté a una distancia máxima de 20 metros para alinear el polígono regularizado.

Linear Unit
tolerance_type
(Opcional)

Especifica cómo se aplicará la tolerancia cuando el parámetro method se establezca en CIRCLE.

  • DISTANCELa tolerancia que representará la distancia máxima desde el límite de la entidad que se está procesando. Esta es la opción predeterminada.
  • AREA_RATIOLa tolerancia representará el límite máximo correspondiente a la relación entre el área de la entidad original que difiere del círculo regularizado y el área del círculo regularizado.
String

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 una secuencia de comandos 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())

Información de licenciamiento

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

Temas relacionados