El objetivo de este artículo es mostrar la mejor manera de crear un nDSM a partir de determinados datos de Modelos Digitales de Superficies (Digital Surface Model – DSM) y Modelos Digitales del Terreno (Digital Terrain Model – DTM), así como su uso como referencia futura. En este artículo se organizan los datos de elevación mediante Mosaic Dataset y funciones ráster para su visualización y análisis.
El Modelo Digital de Superficies normalizado (nDSM) es la diferencia entre la superficie construida/cubierta (DSM) y el suelo desnudo (DTM). En este cálculo, el suelo desnudo es 0 en todas partes por definición. Objetos como árboles o edificios se representarán como alturas absolutas por encima del terreno. La función ráster más simple para crear nDSM a partir de DSM y DTM es utilizar únicamente la función Arithmetic para restar el DTM del DSM:
Sin embargo, los datos de elevación pueden contener errores. Para los DSM derivados de datos LiDAR, este riesgo es bastante alto (p.ej.: aves, aviones…). El control de calidad de los datos es un requisito previo. En las ciudades, los edificios más altos son generalmente conocidos; con la vegetación, esto podría llegar a ser más difícil. Para más información, consulte cómo detectar anomalías (Locate Outliers – 3D Analyst) y cómo corregir valores nulos de datos de elevación (mediante la función Elevation Void Fill).
En otros casos, el DSM podría ser más correcto (p.ej.: una mina a cielo abierto reciente está presente en el DSM, pero no en el DTM si este es más antiguo). Esto es más fácil de corregir – suponiendo que un nDSM nunca puede estar por debajo de 0. Esta corrección podría integrarse en la cadena de funciones ráster, utilizando las funciones Less Than y Con (ambas disponibles con licencias de ArcGIS Spatial Analyst y/o ArcGIS Image Analyst):
Esta versión de la cadena de funciones ráster nDSM restará el DTM del DSM a través de la función Arithmetic (igual que la anterior), pero enviará el resultado a la función Less Than. El segundo ráster para la función Less Than es un ráster constante de 0. Less Than es una función booleana: si el valor de elevación es menor que el valor constante (de 0), la condición es True, else False. Este resultado booleano se entrega a la función Con, que realiza un condicional If, then, else y asignará el valor (positivo) de la función Arithmetic a la celda de salida o el valor de Con 0.
En los 2 casos de uso explicados a continuación, se emplea el segundo modelo y se explican todos los ajustes. Basado en este modelo, se pueden aplicar personalizaciones para cubrir más necesidades.
La siguiente descripción es básicamente independiente de los orígenes de datos utilizados como fuente de datos de elevación. Podrían ser datos de puntos ASCII, LiDAR o el resultado del procesamiento de drones. El único requisito previo importante es que necesita tener datos DSM y DTM de un área superpuesta. Aquí es donde los dos casos de uso difieren:
Al recopilar conjuntos de datos DSM y DTM a lo largo del tiempo y agregarlos a un Mosaic Dataset, puede haber diferentes conjuntos de datos de diferentes fuentes. Puede mantenerlos de forma independiente y crear el nDSM como una función, disponible en uno de ellos o en ambos.
A continuación, se muestra el flujo de trabajo para agregar la función ráster nDSM al Mosaic Dataset creado:
Aquí están los dos Mosaic Datasets: a la izquierda, el Modelo Digital de Superficies (DSM); a la derecha, el Modelo Digital del Terreno (DTM).
En la ventana Catalog, tiene este aspecto:
En esta vista Catalog, haga clic con el botón derecho en la capa que contiene el DSM y seleccione Manage processing templates:
Si aún no hay plantillas de procesamiento, o para crear la que necesita, agregue una nueva plantilla seleccionando Create New Template:
El Editor de funciones se abrirá con una plantilla vacía denominada None. Abra primero las propiedades con Edit Properties:
Se abrirá la ventana para editar propiedades—ver la configuración importante que se indica en rojo:
Pulse OK para confirmar.
El Editor de funciones se mantiene todavía vacío. Seleccione Raster Functions:
En el cuadro de búsqueda de la ventana Raster Functions, escriba «Arith» – para encontrar rápidamente la función Arithmetic. Arrástrelo al Editor de funciones:
Ahora se ve así:
Haga doble clic en Arithmetic para abrir la configuración y complete de la siguiente manera:
Deje los otros valores predeterminados y pulse en OK.
El editor de funciones ahora tiene un aspecto similar al de esto. Haga clic en el botón Save para salvar la plantilla:
Una vez que haga clic en Save, las propiedades aparecerán de nuevo. Simplemente haga clic en OK. Como resultado, el nombre de la plantilla debería haber cambiado:
En este punto todavía no hay ningún Mosaic Dataset conectado a la entrada ráster. Una vez cerrado y reabierto, se mostrará.
Si no hay ningún mensaje de error, la plantilla de función ráster está bien y realmente se puede utilizar (esta es la versión simple descrita anteriormente). Pero ahora lo mejorará con la configuración del modelo que evita valores por debajo de 0.
Abra de nuevo el panel Funciones ráster y primero busque «Less Than«, luego «Con» y agregue ambos al editor de funciones:
Una vez que se agregan, tendrá que hacer las conexiones necesarias. Comience conectando la salida de la función Arithmetic con la función Less Than. La salida de la función Arithmetic es el primer ráster en la función Less Than:
Como Raster2, el segundo ráster, es el que se debe comprobar con la función Less Than, necesita un ráster que solo tenga 0 valores. Esto se obtiene mediante la creación en el Editor de funciones, pulsando el botón Add Constant:
Como esto es por defecto 0, sólo tiene que conectar este 0-raster al Raster2 de la función Less Than:
Ahora tendrá que conectar las tres entradas que necesita la función Con. Estos se llaman Raster, True Raster y False Raster—y esos tres tienen que estar conectados de la siguiente manera:
Así es como se ve una vez que haya terminado de conectarse:
Puede organizarlo pulsando el botón Auto Layout, entonces debería tener este aspecto:
Guardar y cerrar y volver a abrir de nuevo desde la ventana Manage Processing Template:
Ahora también verá la referencia (mostrada en verde) al DSM, el mosaico en sí, como se mencionó anteriormente:
Ahora puede utilizar esta plantilla en la interfaz de usuario de ArcGIS Pro y ArcMap o a través de servicios. Para ello, debe seleccionar el Mosaic Dataset que contiene el DSM, ir a la pestaña Data, abrir el desplegable Processing Template y seleccionar la plantilla:
Una vez aplicado, ir a la pestaña Appearance y seleccionar DRA (Dynamic Range Adjustment):
A continuación, pulsar Symbology y en la ventana seleccionar Mask y marcar Display background value:
Desde la perspectiva de uso de un Mosaic Dataset, este caso de uso es el más avanzado e interesante, y es aplicable a grandes conjuntos de datos de elevación. Aunque la función Ráster como tal no es diferente del primer caso de uso, la forma de especificar los datos es diferente y muestra la flexibilidad del Mosaic Dataset. Los conjuntos de datos DSM y DTM deben filtrarse y asignarse como entrada.
Comenzará como en el primer caso de uso y verá el resultado de una consulta en el mapa y la tabla del Mosaic Dataset:
En este conjunto de datos, para cualquier elemento seleccionado en el mapa, se encontrarán dos registros en la tabla de atributos de Footprint:
Importante: lo que debe cumplir el Mosaic Dataset es que cada solicitud de un elemento común (en este ejemplo el campo Name se corresponde con las hojas del PNOA) devuelve sólo un elemento del grupo especificado (en este ejemplo el campo GroupName es igual a DSM o DTM). No necesariamente tienen que superponerse al 100% (en este ejemplo las hojas de PNOA coinciden). Cada solicitud puede contener más de un ítem del Mosaic Dataset.
Este es el diseño de datos y tabla necesarios para utilizar la segunda versión de una plantilla de función ráster, que utilizará los registros dentro del Mosaic Dataset para realizar el cálculo nDSM.
Una sugerencia antes de pasar al flujo de trabajo: para usar el DTM o el DSM de este conjunto de datos combinados en un único Mosaic Dataset y basar cualquier plantilla de función ráster, sólo tiene que utilizar una consulta:
En este ejemplo, la consulta (resaltada) ‘filtraría’ solo los elementos del Mosaic Dataset con el atributo ‘DSM’ para su uso con esta función Ráster.
Volviendo al flujo de trabajo para el caso de uso: un único Mosaic Dataset y nDSM.
Este conjunto de datos con DSM y DTM se ve así en la ventana Catalog:
Haga clic con el botón derecho sobre el Mosaic Dataset y seleccione la entrada Manage Processing Templates:
Si aún no hay plantillas de procesamiento, o para crear la que necesita, agregue una nueva plantilla de nuevo con Create New Template:
El Editor de funciones se abrirá con una plantilla vacía denominada None. Abra primero las propiedades con Edit Properties:
Se abrirá la ventana para editar propiedades—ver la configuración importante que se indica en rojo:
Elija un nombre y una descripción diferentes (así como la imagen) y asegúrese de ajustar los ajustes importantes marcados en rojo:
A continuación, haga clic en OK para confirmar.
El Editor de funciones se mantiene todavía vacío, como en el caso de uso anterior. Seleccione Raster Functions:
En el cuadro de búsqueda de la ventana Raster Functions, escriba «Arith» – para encontrar rápidamente la función Arithmetic. Arrástrelo al Editor de funciones:
Ahora se ve así:
Haga doble clic en la función Arithmetic para abrir las propiedades y complete de forma diferente esta vez:
El operador Minus de la sección Parameters va a ser similar. Pero ahora cambiará a la sección Variables:
Recuerde que, en las propiedades del panel Raster Functions, había especificado en el campo Name. Aquí tiene que introducir los valores en este campo que se van a utilizar.
A continuación, haga clic en OK para confirmar.
Después de esta configuración a la función Arithmetic, el procedimiento restante es idéntico a la cadena de funciones anterior. Así que los siguientes pasos repetidos aquí son solo para repasar el procedimiento, no contiene cambios.
Abra de nuevo el panel Raster Functions y busque primero «Less Than«, luego «Con» y agregue ambos al editor de funciones:
Una vez añadidos, es necesario hacer las conexiones necesarias. Comience conectando la salida de la función Arithmetic con la función Less Than. La salida de la función Arithmetic es el primer ráster de la función Less Than:
Como Raster2, el segundo ráster, es el que se debe comprobar con la función Less Than, necesita un Ráster que solo tenga 0 valores. Esto se obtiene mediante la creación en el Editor de funciones, pulsando el botón Add Constant:
Como esto es por defecto 0, sólo tiene que conectar este 0-raster a Raster2 de la función Less Than:
Ahora, tiene que conectar las tres entradas que la función Con necesita. Estos se llaman Raster, True Raster y False Raster—y estos tres tienen que estar conectados de esta manera:
Así es como se ve una vez conectado por completo:
Puede organizarlo usando el botón Auto Layout, entonces debería tener este aspecto:
Por último, guarde esta función ráster. Al volver a abrirla lo verá así:
Ahora puede utilizar esta plantilla en la interfaz de usuario de ArcGIS Pro y ArcMap o a través de servicios. Para ello, debe seleccionar el Mosaic Dataset que contiene el DSM, ir a la pestaña Data, abrir el desplegable Processing Template y seleccionar la plantilla:
Una vez aplicado, ir a la pestaña Appearance y seleccionar DRA (Dynamic Range Adjustment):
A continuación, pulsar Symbology y en la ventana seleccionar Mask y marcar Display background value:
Las dos plantillas Raster Function Template (RFT) resultantes se han exportado y se adjuntan a este artículo para analizarlas en detalle. Tenga en cuenta ajustar el nombre del archivo de entrada en el campo nombre del Mosaic Dataset y la estructura de datos.
Autor del artículo en castellano: Antonio San José