Tutorial: Cálculo del porcentaje de cobertura terrestre por subcuenca

Sitio: OpenCourseWare for GIS
Curso: QGIS para Aplicaciones Hidrológicas
Libro: Tutorial: Cálculo del porcentaje de cobertura terrestre por subcuenca
Imprimido por: Guest user
Día: jueves, 28 de marzo de 2024, 16:08

1. Introducción

Para los estudios sobre la hidrología de una Cuenca, es importante conocer el porcentaje de cobertura terrestre por Subcuenca.




1.1. Teoría de la superposición de capas vectoriales

En esta lección, utilizaremos algunas herramientas vectoriales de superposición.

Revisa el video para aprender los conceptos.

2. Preparación de la capa de subcuenca

Ejecutemos un QGIS con un nuevo proyecto.

We'll start with a new QGIS project.

1. Descarga el shapefile  catchpolygons.shp  ya agrégalo desde un proyecto vacío de QGIS.

2. Abre la tabla de atributos de la capa catchpolygons.

Esta capa fue calculada utilizando la delineación de la Cuenca en la lección 4. El resultado es que cada subCuenca tiene un valor de 100. Para nuestro propósito, sin embargo, cada Subcuenca requiere un Identificador único.

3. Habilta el modo de edición utilizando el botón Toggle editing button.

4. En la sección de expresiones  indica la ecuación DN = $id y da un  click en  Update All. Guarda con el botón Save layer editspara salvar las ediciones.

number features

La función $id asigna un objeto geométrico único en la tabla de atributos.

Ahora requerimos agregar un atributo a el área de cada polígono de la Subcuenca.

5. Da Click  add new field para agregar una columna a la tabla de atributo.

6. Nombre al nuevo campo como CatchArea, indica que es del tipo Decimal number (real) con un tamaño Length of  10 caracteres y una precisión de 2 decimales. Da Click OK para crear la columna.

add catcharea field

7. En el cuadro de expresiones formula la ecuación CatchArea = $area  y da un click Update All.

La tabla de atributo ahora tiene un identificador único id's y el área de la superficie de cada subcuenca.

calculate catchmentareas

8. Ha un Click en el icono  Toggle editing button para salvar las ediciones y deshabilitar la edición.

Ahora preparemos los datos de cobertura del suelo.

3. Preparación de los datos de cobertura del suelo

Ahora preparemos los datos de cobertura del suelo, los cuales consisten de los siguientes pasos que seguirás en las siguientes secciones:

  • Descarga los datos CORINE 2018
  • Estiliza la capa de cobertura terrestre
  • Recorta y reproyecta la capa de cobertura terrestre
  • Agrega clases de cobertura terrestre
  • Disuelve los objetos geométricos de la capa de cobertura terrestre

3.1. Descarga datos CORINE 2018

En los capítulos previos, hemos utilizados datos WMS CORINE 2012 . Para calculos, sin embargo, no podemos utilizar imágenes WMS, requerimos acceso a los datos CORINE 2018 que pueden descargarse desde la Internet.

1. Abre un navegador y dirígete a https://land.copernicus.eu/pan-european/corine-land-cover.

2. Da un Click sobre CLC 2018.

Observa los mapas en línea con una vista previa de la capa.

3. Da un Click en la pestaña Download.

4. Para la descarga de datos, es necesario una cuenta. Da un Click en el enlace de registro.

Una vez que hayas ingresado al sistema, puedes elegir varios formatos de datos distintos.

corine download

Aquí utilizaremos el formato GeoPackage, porque requerimos datos vectoriales.

5. Habilita el checkbox del formato  GeoPackage.

6. Da un Click en el botón Download.

El archivo tiene 3.5GB. Si tienes un ancho de banda reducido, puedes descargar un subconjunto de datos desde la sección de materiales del curso en la página principal.

7. Descomprime el contenido a un nuevo folder que utilices en este ejercicio.

8. Arrastra la capa del GeoPackage  U2018_CLC2018_V2020_20u1 al Map Canvas.

9. En la ventana de Select Transformation sólo haz un click en  OK para utilizar la ecuación de transformación por default.

10. Haz que los polígonos de la capa catchpolygons transparentes con un contorno negro (black outline) y un asurado con un ancho de 0.66 mm y asegurate que se encuentre en la parte superior de la capa de cobertura terrestre.

3.2. Estiliza el mapa de cobertura terrestre CORINE 2018

Ahora, estilizaremos el mapa de cobertura terrestre CORINE 2018. En el conjunto de datos descargados encontrarás la carpeta  Legend. El folder contiene los archivos de leyendas en distintos formatos. Utilizaremos el archivo  clc_legend.qml, un archivo de estilizado QGIS.

1. Haz un Click  derecho sobre la capa de cobertura terrestre y selecciona las propiedades - Properties. Cambia a la pestaña de Simbología.

2. En la parte inferior de la ventana de diálogo dírigete Style | Load Style.

load style

3. Ahora, se presenta la ventana de diálogo  Database styles manager. Navega al archivo legend\clc_legend.qml  y da un click en  Load style.

database styles manager

La leyenda se aplica con las configuraciones correctas sobre la capa de cobertura terrestre.

corine layer style

4. Da un Click en  OK para aceptar y regresa al  Map Canvas.

3.3. Recorta y reproyecta el mapa de cobertura terrestre

La capa de cobertura terrestre es aún muy grande (incluso si haz descargado un subconjunto de datos) así prepararemos un subconjunto que sólo cubra a las subcuencas. Además, reproyectaremos la capa de cobertura terrestres (EPSG:3035) en la misma proyección como la capa catchpolygons (EPSG:32632). Ambos procesos pueden realizarse con una herramienta.

1. Haz un click derecho sobre la capa U2018_CLC2018_V2020_20u1 y selecciona Export | Save Features As.

2. Escoge el formato Format GeoPackage para la capa  Corine2018_repr y para el  CRS, el  CRS del proyecto (EPSG:32632).

3. Verifica el checkbox antes del  Extent y un click en Calculate from Layer y escoge catchpolygons. Da un Click en OK.



4. Copia el estilo desde la capa U2018_CLC2018_V2020_20u1 a la capa Corine2018_repr y borra la capa U2018_CLC2018_V2020_20u1.

Los resultados debería lucir como:

result export corine

3.4. Agrega clases de cobertura terrestre

CORINE tiene diferentes niveles de clases de cobertura terrestre. Los datos CORINE que tenemos son de nivel 3. En la tabla de atributos el campo code_18 tiene un valor para el nivel 3, indicado por 3 dígitos. En esta sección agregaremos la clasificación detallada de nivel 3 a nivel 1. Por lo tanto requerimos crear un campo nuevo con sólo el primer dígito de cada objeto.

1. Abre la tabla de atributos de la capa Corine2018_repr y habilita el modo de edición.

2. Agrega un nuevo campo. Indica el nombre de Level1, escoge el tipo de dato Type Whole number (integer) y Length 1.


3. Usa el botón field-calculator-button.png para abrir la ventana de Expression Dialog.

Vamos a escribir una expresión que recodifique todos las clases del nivel 3 al nivel 1.

4. Escribe la expresión como se muestra en la figura inferior.

La función left regresa una cadena de los caracteres en el extremo derecho . Requerimos el primer carácter, así que indicamos  1 para el tamaño (length). Utilizaremos la función to_int para convertir la cadena a entero.

left

5. Actualiza el nivel 1 en el campo.

La tabla de atributos debería lucir como esto:

result level 1

6. Deshabilita el modo de edición  y guarda las ediciones.

3.5. Disolver objetos de la capa de cobertura terrestre

Ahora hay muchos polígonos contiguos con la clase nivel 1. Estos polígonos se fusionaran en un sólo objetos. Esto se hará con la operación disolver (dissolve).

1. Desde el menú principal dírigete a Vector | Geoprocessing tools | Dissolve.

2. En la ventana de diálogo de Disolver (Dissolve)  y escoge  como capa de entrada corine2018_repr y selecciona el campo level1 como campo de disolución (Dissolve field). Guarda el archivo como corine2018_dissolved y haz un click en Run.

dissolve-level1.png

3. Haz un Click en  Close para regresar al Map Canvas cuando el procesamiento este completo.

4. Abre la tabla de atributos de corine2018_dissolved para verificar el resultado. Se deben mostrar sólo 5 registros nivel 1 con clases de 1 a 5. Considera que puedes dar un click en el nombre del campo para ordenar los registros.

attribute-table-corine-after-dissolve.png

5. Borra la capa corine2018_repr desde el panel de capas (Layers Panel) y estiliza la capa corine2018_dissolved con los colores basados en la leyenda CORINE nivel 3.

corine-level1-styled.png

4. Interseca la capa de cobertura terrestre con la capa de Subcuenca

Ahora que hemos preparado la capa de cobertura terrestre y la capa de subcuenca, el paso siguiente es intersectar las dos capas para agregar los límites de las Subcuencas al mapa de cobertura terrestre.

1. Desde el menú principal, selecciona Vector | Geoprocessing tools | Intersection.

intersection-menu.png

2. Selecciona la capa corine2018_dissolved como capa de entrada (Input layer), escoge la capa catchpolygons como Overlay layer. Indica corine_catch_intersected.shp como el archivo de salida y después da un click en  Run.

intersect-corine-catchments.png

Observarás el siguiente error.

invalid-geometry-error.png

Esto esta relacionado con los errores de geometría que pueden ocurrir en la delineación de la Cuenca, en el paso  de poligonizar una capa ráster.

El error puede correguirse.

3. En la caja de herramientas (Processing Toolbox) busca la herramienta Fix geometries.

fix-geometries-tool.PNG

4. En la ventana de diálogo  Fix geometries selecciona como capa de entrada catchpolygons e indica como archivo de salida catchpoly_fixed.shp y da click en Run.

5. Da un Click en Close después de que el procesamiento se haya realizado.

6. Copia el estilo de la capa catchpolygons a la capa catchpoly_fixed y borra la capa catchpolygons.

7. Repite los pasos  1 y  2 y nombra al archivo de la intersección como corine_catch_intersected_cor.shp

8. Estiliza la capa corine_catch_intersected_cor por la copia del estilo desde estilos previos de la capa corine2018_dissolved. Verifica los resultados de la intersección.

9. Borra la capa corine2018_dissolved desde el panel de capa (Layers panel).

5. Calcula el área de cobertura terrestre por Subcuenca

Ahora requerimos calcular el área CORINE nivel 1 por Subcuenca.

1. Abre la tabla de atributos de la capa corine_catch_intersected_cor.

En la tabla de atributos encontraremos el campo CatchArea dentro del área de cada Subcuenca, el campo DN con el  ID único para cada Subcuenca, y el campo Level1 con el valor CORINE nivel 1 para cada registro.

Agregaremos un campo y calcularemos el área de cada objeto que corresponda con el área de cada clase nivel 1 en una Subcuenca en forma similar como hemos hecho previamente para las áreas de las subcuencas.

2. Habilita el modo de edición.

3. Agrega el campo ClassArea con el tipo como Decimal number (real), tamaño 10, y precisión 2.

4. Usa la calculadora de campos para calcular ClassArea = $area y da un click en Update all.

5. Ahora agrega  un campo para el porcentaje de cada clase CORINE nivel 1 por Subcuenca. Nombra el campo Percentage de tipo Decimal number (real), Length 4 y  Precision 1.

6. Usa la calculadora de campos para calcular Percentage = (ClassArea/CatchArea) * 100. Puedes utilizar el cuadro de expresiones para formular la ecuación.

7. Haz un Click en  Update all para asignar el porcentaje de cada objeto.

8. Para completar la tabla de atributos, agrega un campo con los nombre de clase 1 como tipo Texto, ombra al campo como Landcover. Utiliza la función  CASE...WHEN para ello:

case-when.PNG

Dentro de esta funcion puedes escribir condiciones. Para este ejemplo significa: Si el atributo Level1 es igual al valor 1 entonces el resultado es una cadena : Artificial, etc.

9. Deshabilita el modo de edición y guarda las ediciones.

La tabla de atributos luce como la figura:

attribute-table-percentage-complete.png

6. Crea una gráfica de pastel usando el complemento Data Plotly

Ahora, que contamos con el porcentaje de cobertura terreste de cada  Subcuenca, crearemos una gráfica de pastel. Una forma es copiar las columnas y pegarlas en una hoja de cálculo para su posterior procesamiento. Otra forma es utilizar el complemento Data Plotly, el cual utilizaremos aquí.

1. Instala el complento Data Plotly desde el administrador de complementos (Plugin Manager).

Realizaremos una gráfica de pastel para cada  Subcuenca. Previamente hemos asignado un ID único para cada subucuenca en el campo DN.


2. Desde la tabla de atributos de la capa corine_catch_intersected_cor, selecciona todos los registros con valores DN = 0. Puedes utilizar la ventana de diálogo de Select features by expression con un Click sobre el botón select-features-by-expression-button.png . Alternativamente puedes ordenar la tabla de atributos sobre el campo DN y utilizar el botón Ctrl que selecciona mútilples registros con valores DN = 0 .

select-by-expression-dialog.png

3. Da un Click sobre el botón del complemento Data Plotlydataplotly-button.pngpara abrir el panel Data Plotly.

4. Para el tipo de gráfico (Plot Type) selecciona Gráfico de pastel  (Pie Plot). Bajo los parámetros del gráfico (Plot Parameters)  escoge la capa  corine_catch_intersected_cor , verifica el checkbox antes de Use only selected features, para el campo de agrupación (Grouping field)  escoge la capa Landcover, y el campo Y Field Percentage.

5.Da un Click sobre el botón dataplotly-legend-settings-button.png  que define las propiedades de la leyenda.

dataplotly-legend-settings-dialog.png

6. Da un Click en el botón  Create Plot y verifica los resultados.

7. Con el botón de exportar imagen (Export to image) dataplotly-export-as-image-button.png puedes exportar la gráfica a un archivo .png.

El resultado debería verse como este:

dataplotly-plot.png

Puedes repetir el procedimiento para otras Subcuencas.

7. Conclusiones

En esta lección aprendiste a :

  • agregar un valor único a una capa vectorial
  • calcular el área de polígonos en la tabla de atributos
  • estilizar una capa vectorial utilizando un archivo  .qml
  • recortar, reproyectar y exportar capas vectoriales a otro formato
  • usar condiciones en la calculadora de campos
  • aplicar herramientas de geoprocesamiento como  disolver, intersección ybuffer
  • correguir errores geométricos
  • crear gráficas de pastel utilizando el complementos  DataPlotly
  • Puedes revisar el  webinar para conocer el procedimiento completo: