Etiqueta | Explicación | Tipo de datos |
Dataset LAS de entrada | El dataset LAS que contiene los puntos que definirán la cubierta del edificio. | LAS Dataset Layer |
Entidades de entrada | Las entidades poligonales que definen la huella del edificio. | Feature Layer |
Altura del suelo | El origen de los valores de la altura del suelo puede ser un campo numérico de la tabla de atributos de la huella del edificio o una superficie ráster o TIN. Un origen de suelo basado en un campo se procesará más deprisa que un origen de suelo basado en superficie. | Field; Raster Layer; TIN Layer |
Clase de entidad multiparche de salida | La clase de entidad multiparche que almacenará los modelos de edificios de salida. | Feature Class |
Selección de puntos del tejado LAS (Opcional) | Especifica los puntos LAS que se utilizarán para definir la cubierta del edificio.
| String |
Tolerancia de simplificación (Opcional) | Un valor de tolerancia z que se utilizará para simplificar la geometría de la cubierta. Este valor define la desviación máxima del modelo de cubierta de salida respecto de la superficie TIN creada con los puntos LAS. | Linear Unit |
Resolución de muestreo (Opcional) | El tamaño de agrupación en bins utilizado para simplificar la nube de puntos antes de construir la superficie de cubierta. | Linear Unit |
Campo de altura mínima (Opcional) | Campo numérico que contiene la altura mínima de los puntos que se utilizarán para definir el tejado. Se puede especificar cualquier campo numérico. Se ignorarán los puntos que están por debajo del valor de este campo. | Field |
Campo de altura máxima (Opcional) | Campo numérico que contiene la altura máxima de los puntos que se utilizarán para definir el tejado. Se puede especificar cualquier campo numérico. Se ignorarán los puntos que están por encima del valor de este campo. | Field |
Resumen
Crea modelos de edificios con puntos de tejados de un dataset LAS.
Ilustración
Uso
Esta herramienta crea edificios como entidades multiparche con puntos de tejados de un dataset LAS, datos de altura del suelo y polígonos de huella de edificios. Cada modelo de edificio se genera construyendo un TIN a partir de los puntos LAS que se superponen al polígono de la huella del edificio. La huella se incorpora a este TIN como un polígono de recorte cuya altura se deriva del valor del parámetro Altura del suelo. Este TIN se convierte en un multiparche que se cierra a la altura de la base. Como el multiparche resultante se basa en una superficie TIN, el multiparche no incluirá detalles a lo largo del perfil vertical del edificio.
Los puntos LAS de entrada deberían capturar el tejado del edificio. Cuando sea posible, excluya los puntos que representan los elementos de los edificios que no sean el tejado, ya que suelen hacer que la salida tenga características no deseadas. La herramienta Clasificar edificio LAS puede utilizarse para asignar un valor de código de clase de 6 a los puntos de tejados de edificios. La herramienta asignará un valor de código de clase de 6 a los puntos que representen cubiertas de edificios, pero la herramienta tiene opciones para clasificar puntos que están por debajo y por encima del tejado. Cuando clasifique estos puntos, utilice un código de clase distinto de 6 para definirlas de forma que puedan excluirse cuando se utilicen para crear entidades de edificio. Revise el resultado de la clasificación del edificio y haga las correcciones necesarias por medio de la edición interactiva o ejecutando de nuevo la herramienta Clasificar edificio LAS con una configuración de parámetros diferente. Si el dataset LAS no contiene puntos que no sean de edificios sobre las huellas de edificios, todos los puntos pueden utilizarse para definir la superficie de la cubierta.
El valor del parámetro Resolución de muestreo se utiliza para simplificar los puntos del dataset LAS antes de construir el TIN. Este parámetro optimiza el rendimiento de la herramienta cuando la entrada es una nube de puntos con alta densidad de puntos o cuando se procesan los puntos a lo largo del perfil vertical del edificio. El valor del parámetro representa la longitud y la anchura del área que se está simplificando, de manera que la distancia de 2 pies dará lugar a la agrupación en bins de la nube de puntos en una cuadrícula de 2 pies. El punto más alto de cada bin se utilizará para construir el TIN de la cubierta. De esta forma se puede mitigar el impacto de los puntos del costado del edificio.
Esta herramienta no admite los polígonos de huella de edificios que contengan segmentos de arco. Utilice la herramienta Densidad para sustituir los segmentos de arco por segmentos de línea.
El valor del parámetro Altura del suelo puede ser una superficie de elevación o un campo en la tabla de atributos del polígono de huella. Cuando se utiliza una superficie, la altura base del edificio será el valor z más pequeño a lo largo del límite de la huella. La superficie debería tener el mismo sistema de coordenadas verticales que el dataset LAS. Se puede derivar la superficie del suelo a partir de un dataset LAS para garantizar que los edificios coincidan en altura en la nube de puntos originaria. Para crear una superficie de elevación a partir del dataset LAS, realice lo siguiente:
- Asegúrese de que los puntos clasificados del suelo están presentes en el dataset LAS. Si no lo están, utilice la herramienta Clasificar el terreno LAS para asignar un valor de código de clase de 2 para los puntos del suelo.
- Filtre la capa del dataset LAS para los puntos de suelo con las propiedades de capa o la herramienta Crear capa de dataset LAS.
- Utilice la herramienta Dataset LAS a ráster o Dataset LAS a TIN para crear un ráster o una superficie TIN que pueda utilizarse como entrada de esta herramienta.
Si la altura del suelo se deriva de un campo de la tabla de atributos del polígono de huella, se asume que las unidades de altura son las mismas que la unidad z del dataset LAS de entrada. Si la altura de la tabla de atributos se encuentra en una unidad lineal distinta, utilice la herramienta Calcular campo para calcular nuevos valores de altura en unidades lineales del dataset LAS. La altura del suelo mínima se puede atribuir al polígono de la huella del edificio desde la superficie de elevación del suelo usando la herramienta Agregar información de superficie.
Si se generan las entidades de edificio para estructuras adyacentes con tejados que tienen alturas muy diferentes, la entidad resultante de cada edificio puede definirse en función de los puntos del edificio cercano. Una estrategia para minimizar este problema consiste en atribuir a cada entidad el rango de altura del tejado del edificio y utilizar estos campos como los valores de los parámetros Campo de altura mínima y Campo de altura máxima.
Los puntos LAS se procesan de un modo más eficiente cuando el dataset LAS contiene estadísticas. Use la herramienta Estadísticas de dataset LAS para calcular estadísticas.
Parámetros
arcpy.ddd.LasBuildingMultipatch(in_las_dataset, in_features, ground, out_feature_class, {point_selection}, {simplification}, {sampling_resolution}, {min_height_field}, {max_height_field})
Nombre | Explicación | Tipo de datos |
in_las_dataset | El dataset LAS que contiene los puntos que definirán la cubierta del edificio. | LAS Dataset Layer |
in_features | Las entidades poligonales que definen la huella del edificio. | Feature Layer |
ground | El origen de los valores de la altura del suelo puede ser un campo numérico de la tabla de atributos de la huella del edificio o una superficie ráster o TIN. Un origen de suelo basado en un campo se procesará más deprisa que un origen de suelo basado en superficie. | Field; Raster Layer; TIN Layer |
out_feature_class | La clase de entidad multiparche que almacenará los modelos de edificios de salida. | Feature Class |
point_selection (Opcional) | Especifica los puntos LAS que se utilizarán para definir la cubierta del edificio.
| String |
simplification (Opcional) | Un valor de tolerancia z que se utilizará para simplificar la geometría de la cubierta. Este valor define la desviación máxima del modelo de cubierta de salida respecto de la superficie TIN creada con los puntos LAS. | Linear Unit |
sampling_resolution (Opcional) | El tamaño de agrupación en bins utilizado para simplificar la nube de puntos antes de construir la superficie de cubierta. | Linear Unit |
min_height_field (Opcional) | Campo numérico que contiene la altura mínima de los puntos que se utilizarán para definir el tejado. Se puede especificar cualquier campo numérico. Se ignorarán los puntos que están por debajo del valor de este campo. | Field |
max_height_field (Opcional) | Campo numérico que contiene la altura máxima de los puntos que se utilizarán para definir el tejado. Se puede especificar cualquier campo numérico. Se ignorarán los puntos que están por encima del valor de este campo. | Field |
Muestra de código
En el siguiente ejemplo se muestra cómo usar esta herramienta en la ventana de Python.
arcpy.env.workspace = 'C:/data'
arcpy.LasBuildingMultipatch_3d('Highland.lasd', 'footprint.shp', 'dem.tif',
'highland_3d_bldgs.shp', simplification='4 Feet')
En el siguiente ejemplo se muestra cómo usar esta herramienta en una secuencia de comandos independiente de Python.
'''****************************************************************************
Name: Extract Building Footprints & Generate 3D Models
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)
model = arcpy.GetParameterAsText(2)
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')
simplification = arcpy.Describe(lasd).pointSpacing * 4
arcpy.ddd.LasBuildingMultipatch(lasd_layer, footprint, 'Z_MIN', model,
'BUILDING_CLASSIFIED_POINTS', simplification)
except arcpy.ExecuteError:
print(arcpy.GetMessages())