Análisis espacial de la accesibilidad de pozos utilizando álgebra de mapas.

Sitio: OpenCourseWare for GIS
Curso: Capacitación SIG (Sistema de Información Geográfica) orientado a aplicaciones hidrogeológicas.
Libro: Análisis espacial de la accesibilidad de pozos utilizando álgebra de mapas.
Imprimido por: Guest user
Día: jueves, 21 de noviembre de 2024, 13:34

Descripción

En este tutorial aplicaremos el álgebra de mapas para la determinación de la accesibilidad de pozos. Este tutorial fue elaborado en conjunto con Kurt Menke (Bird's Eye View GIS).


1. Introducción

Con el Álgebra de Mapas (map algebra ) es posible  hacer cálculos con capas rásters, muy útil en el análisis espacial. Por ejemplo, cuando requerimos la evaluación de diferentes criterios de búsqueda de ubicaciones adecuadas y no adecuadas.

Después de esta lección serás capaz de:

  • Aplicar el álgebra de mapas (map algebra) para el análisis ráster
  • Distinguir entre ráster binarios (Boolean), discretos (discrete), y continuos (continuous) .
  • Realizar leyendas de mapas booleanos, discretos y continuos
  • Entender el uso de datos tipo Nodata
  • Usar los operadores lógicos (logical operators)
  • Calcular distancias desde los rasters
  • Reclasificar (reclassify) rasters
  • Convertir raster a una capa de puntos
  • Muetrear  valores ráster con una capa de puntos

En está lección abordaremos el siguiente caso:
La municipalidad de un oasis (imaginario)  Aïn Kju Dzjis te ha contratado para analizar que pozos no son aptos para sus habitantes en función de las siguientes condiciones:

Condición 1:
   Los pozos deben encontrarse a menos de 150 metros de casas o carreteras.

Condición 2:
    Ninguna industria, mina o vertedero a menos de 300 metros de los pozos.

Condición 3:
    Los pozos deben tener menos de 40 metros de profundidad.

Utilizará álgebra de mapas para realizar el análisis requerido.
Utilizarás álgebra de mapas para realizar el análisis requerido.

En la lección seguirá el siguiente diagrama de flujo:

Flowchart map algebra


Las capas ráster para esta lección se pueden descargar desde la página principal de la lección.


2. Preparación


Para esta tarea, se  proporcionan las siguientes capas ráster: buildg.tif, roads.tif, dtm.tif, y  gwlevel.tif.

Bien, inspeccionemos los metadatos de las capas. Después configuraremos la caja de herramientas (Processing Toolbox) en QGIS.


2.1. Verificación del metadato

1. En el panel de Browser has un click derecho sobre Favorites y selecciona Add a directory.


add to favorites


2. Escoge una carpeta donde guardaste las capas.

Agregando la carpeta a los Favoritos (Favorites) puedes acceder rápidamente a los archivos del proyecto.

3. Da un click en el signo de  +  que expande el contenido de la carpeta.

4. Realiza una vista previa de los mapas y metadatos de las capas ráster con un click derecho de la capa y escoge la opción Layer Properties...

browser layer properties

La ventana de las propiedades de la capa (Layer Properties)  que muestra el metadato de la capa.

layer properties

5. Revisa e interpreta el metadato.


2.2. Utilizar la caja de procesamiento (Processing Toolbox)

La caja de procesamiento (Processing Toolbox) en QGIS proporciona gran cantidad de herramientas para el geoprocesamiento de datos GIS. Además de las herramientas QGIS, también tiene herramientas de GDAL, GRASS y SAGA que son muy útiles.

1. Antes que nada, activa la caja de herramientas (Processing Toolbox) seleccionado Processing | Toolbox desde el menú principal.

processing toolbox menu

Ahora el panel muestra la caja de herramienta (Processing Toolbox).


3. Condición 1: Los pozos deben encontrarse a menos de 150 metros de casas o carreteras.

Después de verificar los metadatos de las capas de entrada y configurar la caja de procesamiento (Processing Toolbox), es momento para proceder con el análisis de las tres condiciones:

  • Condición 1: Los pozos deben encontrarse a menos de 150 metros de casas o carreteras.
  • Condición 2: Ninguna industria, mina o vertedero a menos de 300 metros de los pozos.
  • Condición 3:  Los pozos deben tener menos de 40 metros de profundidad.

En la condición 1, primero buscaremos las casas y haremos lo siguiente:

  • Estilizar la capa ráster buildg 
  • Crear una capa booleana con valores de verdadero (True) para las casas y falso (False) en el caso de otras construcciones
  • Crear zonas de 150 metros alrededor de las casas
Después repetiremos los pasos en el caso de los caminos (roads).

3.1. Estilizar la capa ráster

Primero identificaremos los pixeles correspondientes a las casas, las cuales son una clase de la capa buildg. Las capas Rasters normalmente sólo almacenan un valor, así que, requerimos asignar la apropiada leyenda a las capas ráster.

1.  En el panel Layers da click en el icono Open layer styling panel button que abre el panel Layer styling.

2. Escoge como tipo de render (render type) a Paletted/Unique values as render type. Manten la rampa de color (Color ramp) como tipo Random y clasifica los valores con el botón Classify.

3. Usa la captura de pantalla como referencia en la parte inferior y agrega las etiquetas a las clases por medio de hacer un click derecho en cada etiqueta.  Cambia con un doble click derecho sobre el color como se muestra en el ejemplo.

buildg styling


Debido a que buildg es un ráster discreto, usamos el tipo de render como Paletted/Unique values. Esta clasificación tiene un valor entero único en la capa ráster.


3.2. Crear una capa binaria con valor verdadero (True) para casas y valores (False) para otras construcciones

En el caso de la creación de la capa ráster binaria con valores verdaderos (True -1) o falsos (False - 0) para otras clases en la capa buildg, utilizaremos la calculadora ráster (Raster Calculator).

1. Desde el menú principal selecciona  Raster | Raster Calculator.

2. En la ventana de la calculadora ráster (Raster Calculator) da doble click sobre la capa buildg@1,  da click al botón de = y después teclear el valor de  1. 

Ahora la ecuación se lee buildg@1 = 1, lo cual indica: si la capa buildg@1 les igual a 1 (clase houses),entonces la capa de salida tendrá un valor "True" (1),  en caso contrario tendrá un valor False (0). @1 significa que se trata de la banda 1. En nuestro caso sólo utilizaremos las capas ráster (bandas múltiples son utilizadas en otras aplicaciones como en Teledetección).

house raster calculator

3. Nombra a la capa de salida comor houses.tif  y da click en el botón OK para realizar el cálculo.

Una buena practica es la estilización de la capa binaria, para ello utilizaremos el tipo de render  Paletted/Unique values.

4.  Repite los pasos 1 y 2 de la lección 4.1 que estiliza la capa  houses y escoge los colores intuitivamente para los valores True y False.


3.3. Crear zonas de 150 metros alrededor de las casas (houses)

Tenemos una capa con sólo valores de houses, procederemos con el cálculo de las zonas alrededor de 150 m alrededor de las casas. Crearemos una capa binaria con valores True (1) dentro de una zona de  150 m alrededor de las casas y  valores False (0) en zonas mayores de 150 m de las casas.

1. Desde el menú principal selecciona Raster | Analysis | Proximity (Raster Distance).

proximity menu


2. En la ventana de diálogo de  Proximity (Raster Distance) asegurate que la capa houses se encuentra seleccionada como capa de entrada (Input layer). En el campo Distance units elige Georeferenced coordinates. Teclea en Maximum distance to be generated el valor de 150 metros y teclea 1 para el valor Value to be applied to all pixels that are within the -maxdist of target pixels. Coloca como tipo de dato de salida (Output data type) a Byte (sólo utilizaremos el valor 0 y 1), a la capa de salida Proximity map le llamaremos  houses150m.tif. Mantén los demás parámetros de configuración como default.

proximity dialog

3. Da click en el botón Run, entonces cierra la ventana con el botón Close cuando los calculos se realizan.

4. Estiliza el mapa binario.  Los pixeles con valores verdaderos (True) en color verder y los pixeles con valores falsos (Flase) en color rojo.

house zone styled


3.4. Crear zonas de 150 metros alrededor de las caminos (roads)

En forma similar podemos calcular un buffer alrededor de los caminos.

1. Estiliza la capa roads. Utiliza las clases:

0: no roads
1: dirt road
2: tarmac

2. Repite los pasos utilizados en las zonas de 150 m alrededor de las casas (houses), en este caso usa la capa caminos (roads) como capa de entrada (Input layer) y nombra a la capa de salida comot roads150m.tif.

3. Estiliza el mapa boleano. Asegurate de que los pixeles en color verde tienen un valor verdadero (1) y los pixeles en color rojo tienen un valor falso (0).


4. Condición 2: Ninguna industria, mina o vertedero a menos de 300 metros de los pozos.

En la segunda condición, se requiere la reclasificación de la capa  ráster buildg , de manera que el mapa binario con valores de  True (1)  en el caso de la presencia de industria, minas  o vertederos  y False (0) para otras clases.  Entonces requerimos el cálculo de la distancia a los pixeles verdaderos (True) y finalmente el cálculo de los pixeles más lejos de 300 m de la industria, minas y vertederos.

4.1. Crear una capa ráster binaria con valores (True) para valores de industria, mina y vertederos y (False) para otras construcciones.

1. Selecciona en la caja de herramienta (Processing Toolbox)  con la siguiente categoría Raster analysis | Reclassify by table.

reclassify by table menu


En la ventana de diálogo de  (Reclassify table) . Reclasificaremos la capa ráster buildg utilizando la tabla lookup table.

2. Introduce los siguientes parámetros como se muestra en la imagen abajo.

reclassify by table

Identificaremos los valores NoData en la capa de salida para los valores que son excluídos desde la tabla de búsqueda (lokkup table). El campo Range boundaries  define si los valores  son incluidos o excluidos desde los rangos en un renglón de la tabla de búsqueda (lookup table).  No utilices  rangos, aunque si se reclasifican los valores.  Por lo tanto, seleccionamos  min <= value <= max. Para el tipo de salida Output data type utilizaremos Int16  porque los valores de salida son números enteros.

3. Después ve a la tabla de búsqueda (Lookup table) y da click en el botón Browse button.

4. Llena la tabla con los valores mostrados en la figura inferior:
lookup table

5. Has un click en el botón OK y después en el botón Run.  Cierra la ventana de diálogo después del que termine con el botón Close.

6. Verifica el resultado: valor 1 para minas, industria y vertederos; valor 0 para las otras clases. Utiliza la herramienta de identificación  identify tool button y has un click sobre el mapa. En la parte inferior derecha del panel puedes observar los resultados de identificación. Se desplegara el valor del pixel de la capa seleccionada en el panel Layers. Podrías redimensionar las columnas para observar los valores de pixeles.

Ahora la capa industry es binaria, estilizaremos la capa con el render Paletted/Unique Values como hemos hecho anteriormente.

7. Estiliza la capa industry.


4.2. Crear zonas de 300 metros alrededor de industrias, minas y vertederos

Con el mapa binario con valor verdadero (True) para la industria, minas y vertederos podemos calcular la distancia a los pixeles. La herramienta Proximity (Raster Distance)  no permite la asignación de valores a los pixeles mayores que un umbral, calcularemos las distancias y después utilizaremos la calculadora ráster (Raster Calculator)  que calculará el mapa binario con los valores Verdadero (True) para los pixeles  mayores a 300 metros de la ubicación de industrias, minas y vertederos.

1. Ejecuta la herramienta Proximity (Raster Distance) .

2. Asegurate que la capa  Industry es la entrada Input layer. Mantén todas las demás configuraciones por default. Nombra a la capa de salida (Output proximity map)  como inddist.tif.

proximity industry dialog


3. Verifica el resultado.

La capa inddist es un ráster continuo, con valores reales que representan las distancias.

4. Realiza una leyenda que es apropiada para este tipo de ráster utilizando el tipo de render Singleband pseudocolor . Utiliza los colores en forma intuitiva (e.g.  una rampa desde el color rojo a verde).

5. Utiliza la calculadora ráster( Raster Calculator) y realiza la siguiente expresión inddist@1 >= 300.  Nombra a la capa de salida como ind300m.tif.

Nuevamente tendremos como resultado una capa ráster binaria.


6. Style the ind300m layer.

ind300m result


5. Condición3: Los pozos deben tener menos de 40 metros de profundidad

Para la útlima condición, requerimos la identificación de los pozos con una profundidad menor a 40 m.

La capa gwlevel contiene la elevación  del nivel del agua subterránea en el pozo en metros sobre el nivel del mar. El orden para calcular la elevación del  agua subterránea, es  la diferencia de la superficie del terreno en el Modelo Dígital de elevación (DTM) y la profundidad del nivel del agua.


1. Ejecuta la calculadora ráster (Raster Calculator).

2.  Resta la profundidad absoluta del Modelo Digital de Elevación (DTM) utilizando la calculadora: dtm@1 - gwlevel@1. Nombra a la capa de salida como welldepth.tif.

3. Estiliza la capa welldepth con el apropiado render para este tipo de ráster raster type.

4. A continuación, realizaremos en la calculadora  ráster (Raster Calculator)  un mapa binario con los pozos con profundidades menores a 40 metros. Nombra a la capa de salida como notdeep.tif.

5. Estiliza la capa notdeep.

notdeep result


6. Combina las tres condiciones

Después del cálculo de los mapas binarios de las tres condiciones, requerimos la combinación de ellos para obtener el resultado final.

1. Usa la calculadora ráster (Raster Calculator)  para combinar las tres condiciones . Debido a que los valores son verdaderos para las condiciones, utilizaremos el operador AND.   Nombra a la capa de salida como accessiblewells.tif.

calculate accessible wells

2. Verifica la capa ráster y estilizala.


7. Realizar un reporte de los resultados

Hemos identificado los pozos accesibles e inaccesibles, ahora requerimos preparar los mapas de salida para el cliente.

En los siguientes pasos, realizaremos:

  • Convertir las celdas ráster de los pozos a una capa de puntos, esto mejorará la visualización
  • Muestrear  los valores ráster para agregar atributos desde las capas de los cálculos
  • Estiliza los resultados del análisis

7.1. Convertir las celdas ráster a una capa de puntos

Para la presentación de los resultados finales, requerimos estilizar la capa accessiblewells. Sin embargo, es mucho mejor mostrar a los pozos como puntos sobre el mapa, por lo tanto convertiremos los pixeles correspondientes a los pozos como puntos vectoriales.

1. En la caja de herramientas (Processing Toolbox)  selecciona Vector creation | Raster pixels to points.

raster pixels to points

2. En la ventana de diálogo escoge la capa accessiblewells como entrada ráster (Raster layer). Para el campo Field name, llamalo Accessibility.  Loas valores ráster serán salvados con este nombre de campo en la tabla de atributos.

Escoge el nombre wells.shp para la capa Vector points .

raster pixels to points dialog

3. Da un click al botón Run, después de esto cierra cuando la conversión haya terminado.


7.2. Muestrea los valores Raster

Sin embargo, es más informativo incluir también otros datos en la tabla de atributos. Con el complemento de la herramienta de muestreo de puntos, podemos muestrear las capas ráster en este proyecto y agregar esa información a la tabla de atributos de puntos.

La capa vectorial de  wells  ahora contienen el campo Accessibility.  Sin embargo, es más informativo incluir otros datos en la tabal de atributos. Con el complementoe Point sampling tool   podemos muestrear los valores de las capas ráster y agregar esos datos a la tabla de atributos de la capa de puntos.


1. Instala el complemento (plugin) Point sampling tool .

2. En el panel Layers verifica los checkbox de las capas que requieras muestrear y deshabilita los demás checkbox. Escoge las siguientes capas: dtm, welldepth, gwdepth, notdeep, ind300m, roads150m, y houses150m.

3. Da click al botón Point sampling tool  point sampling tool button.

4. En la pestaña  General de la ventana de diálogo Point Sampling Tool selecciona wells.shp como la capa layer containing sampling points, selecciona todas en  Layers with fields/bands to get values from y salva la salida (Output point vector layer) como wells_final.shp.

point sampling tool general

5. Da click en la pestaña Fields.

6. Edita el nombre (name) de los atributos dandolé un nombre al campo de salida si es necesario.

point sampling tool fields

7. Da click en el botón OK y Close.

8. Abre la tabla de atributos de la capa wells_final y verifica los resultados.
wells final attribute table


7.3. Estiliza los resultados del análisis

Estilizaremos las capas.

El primer paso es mostrar los resultados que serán estilizados de la capa wells_final ya sea que los pozos sean accesible o inaccesibles.

1. En e panel Layers  da click en el botón Open layer styling panel buttonpara abrir el panel Layer styling. Coloca wells_final  como la capa de destino.

2. Cambia el render desde  Single symbol al tipo Categorized. Después coloca el valor de  Column a Accessible. Da click en Classify.

3. Cuando usamos este tipo de render QGIS crearemos una categoría que captura los valores NULL. No hay pozos con valores Nulos en la columna  Accessible . Selecciona la entrada donde el parámetro Value lea all other values , después da click en el botón Delete minus button y borralo. Indica el valor de 1 a los pozos, con un símbolo verde y un tamaño de 4 mm. Indica el valor de cero al color rojo con un tamaño de 2 mm.

4. En la columna Legend renombra la entrada  Value de 1 a  Accessible  y la entrada con el Value de cero  a Inaccessible.

styling wells

5. Desplazate hacia abajo en el panel Layer styling y encuentra la sección Layer Rendering . Expande y selecciona Draw effects. Activa el icono Customize effects customize effects icon. Da click sobre este para abrir el panel Effects properties . Es posible agregar efectos como Inner, Outer Glows, Drop Shadows, y otros. Da un click en el checkbox junto a Drop Shadow. Selecciona el efecto Drop Shadow. Reduce la distancia Offset a 1.0 mm. Da click en el botón Go back go back buttonque regresa al panel de estilizado.

styling dock labels

6. Cambia a la pestaña de de etiquetas Labels  labeling settings del panel de  Layer styling.

7. Cambia la configuración de No labels a Single labels. Coloca la columnaLabel with a welldepth.

Utilizaremos la expresión en el etiquetado similar al utilizado en el capítulo "Preparing Data from Hardcopy Maps" donde etiquetamos  "peaks". Colocaremos una expresión que luzca como: Well Depth: 76.4 m.

8. Da click en el icono de Expression expression buttonque abre la ventana ed diálogo de Expression Dialog.
delante del valor de profundidad del pozo agregando 'Well Depth:' antes de la expresión existente.

9. Iniciemos, agregando la cadena Well Depth

frente del valor de profundidad con la cadena 'Well Depth: ' antes de la expresión existente.

10.  Para realizar el segundo componente, utilizaremos la función format_number. Utiliza el botón de búsqueda para  format_number. Inserta en la parte derecha antes del campo welldepth . Recuerda, esta función requiere un tipo número y los lugares decimales. La parte numérica será el campo  welldepth y lugares decimales serán 2.

11. Concatenaremos las cadenas con el operador String Concatenation String concatenation y el operador de nuela línea new line operatorque proporcionará un formato adecuado y agregará las unidades.

12. La expresión es: 'Well Depth:'|| '\n' || format_number(welldepth,2) || ' m'.

13. Coloca el tipo de fuente Font a sans serif con un tamaño Size de 9 puntos.

14. Cambia a la pestaña Placement label placement tab icon e indica el parámetro  Placement a Offset from point.  Selecciona la parte inferior en la opción Quadrant con una configuración  Offset X Y de 1.5 mm cada una.

well label placement

15. Finalmente da un click en el botón Automated placement settings Automated placement settings que abre la ventana Automated Placement Engine. Deshabilita el checkbox de la opción Allow truncated labels on edges of map.  Esto evitará que las etiquetas se corten.

16.  Completaremos el estilizado de la capa dtm. Esta capa destino en el panel Layer styling. Despliega la rampa de color (Color ramp) y seleccionado Create new color ramp.

17. En la ventana de Color ramp type . Selecciona el tipo Catalog:cpt-city. Da click en el botón OK.

18. La ventana Cpt-city Color Ramp se abrirá. Selecciona la categoría "Topography".

19. Escoge sd-a y da click en el botón OK.

¿Sabías que puedes guardar esta rampo a tu biblioteca de estilos? Para esto, accede al menú contextual de la rampa de color y seleccionar  Save color ramp. La ventana Save New Color Ramp  ite permitirá indicar un nombre y etiquetas.

20. Despliega la sección  Layer Rendering y selecciona el modo de mezcla (Blending mode)  a Normal.

21. Finalmente has un click derecho sobre la capa dtm y selecciona Duplicate del menú contextual.

22. Arrastra la capa dtm copy  arriba de la capa dtm y activala.

23. El duplicado de la capa dtm como la capa destino (target) en el panel Layer styling . Cambia el tipo de render a  Hillshade. Despliega la sección Layer Rendering y selecciona el modo de mezcla (Blending mode) a la opción Multiply.

wells final



8. Conclusiones

En esta sección hemos aprendido a:

  • Aplicar el álgebra de mapas map algebra para realizar análisis ráster
  • Distinguir tipos de rásters Boolean (binarios), discrete (discretos), y continuous (continuos)
  • Realizar leyendas en los mapas binarios (Boolean), discretos (discrete), y continuos.
  • Entender el uso de valores Nodata
  • Usar operadores lógicos (logical operators)
  • Calcular distancias (distances) desde las capas rásters
  • Reclasificar  valores en las capas rásters
  • Convertir valores ráster a puntos vectoriales
  • Muestrear valores ráster con valores de puntos vectoriales
Puedes seguir este webinar que describe todo el proceso: