Mostrando entradas con la etiqueta caso práctico. Mostrar todas las entradas
Mostrando entradas con la etiqueta caso práctico. Mostrar todas las entradas

lunes, 7 de octubre de 2019

Caso práctico QGIS: trabajando con atributos (1).

En nuestra línea de intentar explicar algunas de las funciones básicas que podemos utilizar trabajando datos vectoriales en QGIS, comenzamos una serie de casos prácticos con operaciones basadas en los atributos. Ya sabemos que la tabla de atributos de un archivo vectorial es aquella que contiene diferente información para cada uno de sus elementos, y que cuanto más rica y completa sea en datos, más opciones de trabajar y ejecutar análisis espaciales con ellos tendremos a nuestra disposición.

Objetivo: el conjunto de datos del estudio contiene la información puntual de toda la red de estaciones ferroviarias nacional. Nuestro objetivo es buscar y encontrar aquellas estaciones clasificadas como Apeadero y que además se encuentren fuera de servicio.

Conseguir los datos: desde el Centro de Descargas CNIG descargamos el archivo RT-ESPANA-PORMODOS.ZIP, perteneciente a la agrupación Información geográfica de referencia y dentro de ella al producto Redes de transporte

Procedimiento:
1.- Una vez descomprimido el archivo global cargamos en QGIS el vectorial con la información necesaria: rt_estacionffcc_p.shp

2.- Con la herramienta Identificar objetos espaciales podemos visualizar en ventana los atributos presentes para cada elemento. Prueba a mostrar la información de algunos de ello y una vez observados los diferentes campos puedes cerrar la ventana.

3.- En lugar de observar los atributos individuales de un elemento, podemos visualizar el conjunto desde la Tabla de atributos. Puedes abrirla desde la barra de botones o con click derecho sobre el archivo.

4.- Localizamos de entre sus campos aquellos con información de interés para nuestra búsqueda. En este caso el campo tipo_estfD contiene la clasificación por categoría de las estaciones y el campo estadofisD contiene la información sobre el estado de uso de las mismas.

5.- Con esta información estamos listos para ejecutar una búsqueda en estos atributos. Para ello usamos la herramienta Seleccionar objetos espaciales usando una expresión de la barra de iconos de nuestra tabla.

6.- En la ventana de expresiones construiremos la expresión definitiva de nuestra búsqueda:  "tipo_estfD"  =  'Apeadero'. Si no estamos seguros podemos utilizar los diferentes árboles de datos para localizar aquellos parámetros necesarios para configurar la expresión final.

7.- Con la expresión anterior ya tendríamos preparada la búsqueda de aquellas estaciones clasificadas como Apeadero. Pero como también queremos encontrar aquellos Apeaderos que se encuentran fuera de servicio, añadimos una segunda expresión acumulativa mediante el operador AND.
Expresión necesaria para combinar los dos parámetros de búsqueda:  "tipo_estfD"  =  'Apeadero' AND  "estadofisD"  =  'Fuera de servicio' 
8.- Pulsamos el botón "Seleccionar objetos especiales", cerramos la ventana y observamos cómo algunas de las filas de nuestra tabla de atributos se seleccionan, a la vez que en el lienzo de trabajo algunos elementos aparecen destacados en amarillo. Son aquellos que cumplen nuestros requisitos de búsqueda.


9.- Exportamos ahora los resultados a una nueva capa, en el formato de nuestro gusto, desde el botón derecho sobre la capa de trabajo, seleccionando Guardar objetos seleccionados como...
En la ventana de exportación elegimos ruta para el archivo a exportar, nombre, formato, etc... También podemos decidir qué campos se exportan y qué campos no. Marcamos la casilla "Añadir archivo guardado al mapa" si queremos que automáticamente la nueva capa se cargue en nuestro proyecto QGIS.
10.- Ya tenemos nuestra nueva capa conteniendo los Apeaderos fuera de servicio añadida en nuestro lienzo QGIS.

Saludos y hasta la próxima práctica básica sobre atributos.




miércoles, 24 de julio de 2019

Caso práctico QGIS: emergencias Copernicus.

Alguna vez hemos mencionado ya el programa europeo Copernicus de observación de la Tierra, un fundamental proyecto que abarca innumerables campos y utilidades. Una de sus aplicaciones es conocida como Copernicus EMS (Emergency Management Service) que podemos traducir por Servicio de Gestión de Emergencias, y que proporciona a todos los actores involucrados en la gestión de desastres naturales (incendios, inundaciones, terremotos, etc...), situaciones de emergencia provocadas por el hombre y crisis humanitarias, información geoespacial oportuna y precisa derivada de la detección remota por satélite y completada in situ o con fuentes de datos abiertas.
Uno de sus componentes es Copernicus EMS - Mapping, que con cobertura mundial proporciona a los actores mencionados (principalmente Autoridades de Protección Civil y Agencias de Ayuda Humanitaria) mapas basados ​​en imágenes satelitales. El servicio ha estado en pleno funcionamiento desde el 1 de abril de 2012 y está implementado por el Centro Común de Investigación de la Comisión Europea (JRC).
Página principal de Copernicus EMS - Mapping
Copernicus EMS - Mapping puede soportar todas las fases del ciclo de manejo de emergencias: preparación, prevención, reducción de riesgos de desastres, respuesta de emergencia y recuperación. Los productos generados por el servicio se pueden utilizar tal como se suministran (por ejemplo, como salidas de mapas digitales o impresas). También pueden combinarse con otras fuentes de datos (por ejemplo, como conjuntos digitales en un Sistema de Información Geográfica) para apoyar el análisis geoespacial y los procesos de toma de decisiones de los administradores de emergencias. Mapas digitales y fuente de datos para softwares SIG: imposible despertar más interés para Cartografía Digital.

Dejando el resto de detalles informativos y técnicos para su web, de la que dejamos numerosos enlaces en la introducción anterior, y como siempre intentamos en el blog, nos centramos en lo práctico, trabajando en este caso con los datos del reciente incendio en la Sierra de Gádor (Almería). En su portada, muy visible y accesible, disponemos de un mapa y un listado de las emergencias activas desde el que es muy sencillo localizar bajo diversos criterios la emergencia de interés y acceder a su página.
Una vez en la página del evento concreto, se nos presentan dos zonas muy diferenciadas. En la parte superior disponemos de toda la información general (tipo de evento, localización, fecha y hora de activación, breve resumen...) y mapas generales de localización y extensión de la emergencia.
Disponemos del Activation Extent Map en formato JPG, KMZ para Google Earth o en webmap.
Vista en Google Earth del enlace KMZ al Activation Extent Map
La parte inferior de la página del evento contiene los datos disponibles. Y estos constan de un mapa detallado de la emergencia (PDF y JPEG) y un paquete de vectores para descarga en ZIP.
Mapa JPEG detallado en alta calidad (A1 200 dpi) del evento. La versión PDF es en realidad un magnífico GeoPDF con varias capas y que, dependiendo el software, puede cargarse como ráster o vector.
La descarga del paquete vectorial ZIP contiene, en tres formatos (JSON, KMZ y SHP) los siguientes archivos:
Los abrimos todos en QGIS 3.4.6 para explicar su contenido, en este ejemplo con los SHP. Hay tres primeros vectores que contienen áreas delimitadoras del evento como la extensión de impresión (imageFootprint), el área de interés (areaOfInterest) y la zona analizada (observedEvent).
Otros cuatro vectores nos muestran elementos importantes para el estudio de la emergencia como los elementos de hidrografía (hydrography), la red de transporte (transportation), edificaciones (builtUp) y otras instalaciones relevantes, en este caso unos aerogeneradores (facilities).
Por último el fichero más importante, denominado naturalLandUse, contiene los polígonos valorados según su clasificación de suelo y el nivel de daño observado. Un vistazo a su tabla de atributos será más clarificador:
Como atributos relevantes la columna obj_type nos muestra la clasificación del suelo en grandes grupos temáticos (amarillo), la columna info una clasificación más detallada acorde con los códigos Corine Land Cover (verde), y la columna damage_gra (rojo) el grado de daño sufrido por cada polígono.
Categorizando pues mediante el atributo de daño, y por una escala de colores representativa, es muy sencillo obtener una primera vista de la zona afectada diferenciada por niveles de afección.
Y la herramienta Identificar objetos espaciales nos muestra la información completa de cualquiera de los polígonos de la zona:
O casi completa... Porque un atributo con la extensión de cada polígono se nos antoja vital para posteriores análisis de superficies afectadas. Se lo añadimos desde la Calculadora de Campos:
De igual forma podemos usar la función $perimeter para calcular el perímetro de los polígonos o cualquier otra que nos interese, así como combinar o extrapolar aquellas categorías de daño que necesitemos para conseguir los datos oportunos.
Extracción de estadísticas básicas sobre el campo "area" y solamente sobre los polígonos seleccionados (damage_gra=Damaged). 
Incluso exportar la capa a formato Excel para manipular y trabajar allí con los datos de una forma más matemática. Muchas son las posibles formas de usarlos, y muchos los formatos posibles.

Y si nos es suficiente con una visualización más sencilla, sin necesidad de interactuar con más datos o mapas, los datos en formato KMZ para Google Earth son siempre una excelente opción.

En definitiva, un servicio al alcance de todos que nos proporciona importantes datos de estudio para emergencias en tiempo récord. Sin duda de esas aplicaciones que podemos etiquetar de gran interés público y, sobre todo, de enorme potencial para aquellos que más lo necesitan y nos protegen a todos.
Ejemplo de composición rápida con los datos proporcionados por Copernicus EMS sobre fondo LIDAR IGN.

lunes, 11 de febrero de 2019

Caso práctico QGIS: acciones.

Las acciones de QGIS nos permiten añadir muchas funcionalidades extra a nuestros mapas, permitiendo por ejemplo obtener información visual de un objeto o enlazarlo con diverso contenido web. Por resumirlo con claridad, una acción es algo que ocurre cuando pinchamos en un elemento.

Para un primer ejemplo vamos a utilizar imágenes, de forma que al clicar sobre los elementos de nuestro mapa se nos muestre la imagen que hayamos predefinido en sus propiedades. Para este caso práctico vamos a utilizar el archivo de una hoja BTN25 (entidades de población-polígonos). Comenzamos:
Archivo con entidades de población para este caso práctico cargado en QGIS.
1.- Crear el campo para las imágenes.
Lo primero que necesitamos es que la tabla de atributos de nuestro elemento contenga el campo necesario para asociar las imágenes. Seleccionamos nuestra capa de entidades de población y entramos en sus Propiedades (doble click o click derecho sobre ella y Propiedades), y dentro de ellas en la pestaña Campos.

Activamos la edición de la capa (1), pulsamos crear nuevo campo (2) y lo rellenamos con las características (3) que veis en la siguiente secuencia:
Aceptamos y nuestro nuevo campo de nombre IMAGEN queda añadido a la tabla de atributos de nuestra capa de entidades de población. 
El siguiente paso no sería necesario pues podemos añadir la ruta a la imagen directamente en el campo, pero seguimos los consejos de nuestro artículo guía de mappingGIS, ya que de esta forma es más elegante y nos permite mayor control de las opciones.
A continuación vamos a la pestaña Formulario de atributos y seleccionamos nuestro nuevo atributo IMAGEN:
En Tipo de control seleccionamos Adjunto y marcamos la casilla Usar un hiperenlace para la ruta de documentos (esto nos genera un link clicable en la ruta del archivo). Podemos activar Mostrar la ruta completa (en el link a la imagen) y Integrated Document Viewer en Tipo: Imagen si queremos tener un thumbnail de la imagen.
Aplicamos y aceptamos.
2.- Vincular la imagen al elemento. 
Sin salir del modo edición utilizamos la herramienta Identificar objetos espaciales para hacer click en aquel al que deseamos vincular la imagen. En nuestro ejemplo el pueblo de San Martín del Castañar.
Al estar en modo edición tenemos activo el botón para buscar la ruta a nuestra fotografía en el campo IMAGEN (círculo rojo).



Tras buscar la ruta al destino de la fotografía seleccionada, nuestra ventana de atributos nos muestra en el campo IMAGEN el texto con el nombre de la imagen (que además es un hiperlink que ya por sí mismo nos abre la imagen en  nuestro visor de imágenes por defecto) y una miniatura de la misma adaptable al tamaño de la ventana.

Aceptamos y repetimos el mismo proceso con todas las imágenes que necesitemos vincular con cada elemento vectorial.

Una vez terminado guardamos los cambios y salimos del modo edición.







3.- Creando la acción.
De nuevo abrimos las Propiedades de la capa para entrar en la pestaña Acciones. Procedemos según esta secuencia:
1.- Pulsamos el botón + para añadir una nueva acción. 2.- En la ventana completamos campos: en Tipo seleccionamos Abrir, en Descripción añadimos el texto descriptivo de la acción, y en la ventana de texto de la acción debemos insertar el texto [%IMAGEN%]. Esto puede hacerse manualmente o buscando el atributo IMAGEN en la pestaña de campos y pulsando el botón Insertar.
Cuando esté todo listo aceptamos y la acción creada aparece en la ventana de la lista de acciones.
Aplicamos y aceptamos.
4.- Ejecutando la acción.
Con nuestra capa de entidades de población activa clicamos el botón de acciones y seleccionamos la acción que acabamos de crear "Mostrar imagen".
Si hubiera más acciones disponibles aparecerían en la lista desplegable como veremos más adelante.
El cursor cambia a una cruz y hacemos click sobre el elemento en cuestión:
Nuestro visor de imágenes por defecto (en mi caso XnView) nos muestra la imagen enlazada al elemento.
Conseguido. Este es el proceso básico de añadir una acción explicado al detalle. En base a él podemos añadir muchos tipos de acciones, algunas válidas para todos los elementos de la capa y sin necesidad de crear campos específicos, como por ejemplo Buscar en la web por valor de un atributo.

En la imagen de la izquierda vemos la configuración de la acción, en la que aprovecharemos como elemento de búsqueda el atributo ETIQUETA de nuestra capa de entidades de población, ya que es el que contiene el nombre de los pueblos y por tanto el ideal para una búsqueda en Google.

Una vez añadida la acción nos aparecerá para elegirla en el desplegable del botón de acciones.








Usando la acción en tres entidades diferentes cada una nos abre una ventana del explorador con la búsqueda de Google.

Ejemplo de acción "Abrir archivo" con un PDF enlazado al polígono de San Martín del Castañar.
Acciones hay muchas y puede haber las que os dicte vuestra imaginación o los conocimientos de códigos para crearlas. En la ventana de acciones están disponibles unas cuantas predeterminadas con las que podemos empezar a hacer nuestros pinitos. Y a partir de ahí es cuestión de maña enriquecer nuestros proyectos con este montón de posibilidades paralelas que nos dan las acciones. Saludos.
Abriendo directamente la búsqueda en la web de Wikipedia por el atributo ETIQUETA del elemento (nombre el pueblo).

miércoles, 3 de octubre de 2018

Caso práctico QGIS: estilo Tanaka en curvas de nivel.

Hoy vamos a intentar desarrollar un caso práctico con QGIS consistente en aplicar un estilo a las curvas de nivel conocido como Tanaka. Dicho en tres palabras este método consiste en aplicar una fuente de luz a los contornos de las curvas, con lo que se consigue una representación similar al 3D proporcionando un efecto de sombra realista sin necesidad de datos de relieve verdaderos. Dibujando en tonos más claros las líneas que miran directamente a la fuente de luz y en tonos más oscuros las que caen en sombra, y apoyados también en diferentes grosores (más delgadas las perpendiculares a la luz) se termina de pulir ese efecto realista del paisaje.
Dado que para este tipo de operaciones se requieren conocimientos avanzados de expresiones y funciones (que yo por desgracia no tengo), seguimos el excelente tutorial de LandscapeArchaeology. Todo lo que necesitamos para este caso práctico es un MDT (o DEM). Vamos con ello:

1.- Cargar en QGIS el MDT sobre el que trabajar.
Hemos elegido para este caso práctico una zona costera de las Rías Baixas para una mejor visualización del efecto.
2.- Extraer las curvas de nivel.
En QGIS disponemos de varias fórmulas para realizar esta operación: SAGA, GRASS, GDAL... Según nuestro guía parece conveniente para un resultado más óptimo que las curvas tengan la misma orientación o sentido (a favor o en contra de las agujas del reloj, pero nunca ambas). Y parece también que el algoritmo GDAL es el que nos asegura la consistencia en este proceso. Así pues, procedemos a generar las curvas de nivel con él.
Con los parámetros por defecto simplemente generamos las curvas con una equidistancia de p,ej. 20 metros.
Una rápida comprobación usando la simbología de flechas para comprobar que la orientación de las curvas es uniforme.

3.- Aplicando el estilo.
Dado que el método Tanaka busca aplicar el estilo a cada tramo de línea, es necesario segmentar la curva para disponer de polilíneas individualizadas cada dos nodos. Entendemos que este es uno de los quiz de la cuestión: a tramos más cortos el estilo se aplicará con mayor precisión que tratando la curva completa, pues cada segmento de la misma dispone de una orientación diferente respecto a la fuente de luz.
Aunque ya Anita Graser utilizó esta segmentación previa, parece que las últimas versiones de QGIS permiten integrarla dentro de la misma fórmula de estilo ahorrando este paso adicional.
  • Usamos Geometry generator como tipo de símbolo de la línea y la expresión segments_to_lines( $geometry) para conseguir la división de la línea en segmentos (split).
  • Introducimos el estilo como una expresión mediante el botón Edit. Primero para el color:
color_hsl( 0,0,
  scale_linear(
    abs(
      (135 +
        degrees(
          azimuth(
             end_point(geometry_n($geometry,@geometry_part_num)),
            start_point(geometry_n($geometry,@geometry_part_num))
     )))
      % 360 - 180),
  0, 180 ,0, 100))
  • Y después la expresión para el grosor:
scale_linear(
  abs(
    (135 +
      degrees(
        azimuth(
          end_point(geometry_n($geometry,@geometry_part_num)),
          start_point(geometry_n($geometry,@geometry_part_num))
      ) ))
    % 180 - 90),
 0, 90 ,0.2, 1)

Obviamente, sin tener los conocimientos necesarios de Python, la explicación técnica completa de estas expresiones a nosotros se nos escapa en gran parte (sigo sin entender por qué situar el Noroeste en 135° en vez de los 315° habituales depende de que las curvas estén en el sentido de las agujas del reloj o en el sentido contrario...), por lo que es conveniente que recurráis al artículo original para los detalles extra. Para variaciones en la dirección de la luz podéis modificar el "135" en ambas fórmulas (color y grosor).
  • Un par de retoques finales redondeando los extremos de línea y aplicando el modo de representación Overlay (Superponer) para un resultado más fino e integrado...

... y ya podemos Aplicar todos los cambios para ver el resultado.

4.- Podemos dar algún color al DEM para estar más cerca de un resultado realista mediante el uso de un Singleband pseudocolor.

Aunque creemos que la magia de este método es conseguir el efecto sin necesitar un DEM degradado por alturas, por lo que la prueba con un fondo plano es igualmente efectista. Hemos añadido algunos elementos básicos del mapa para comprobar el efecto conjunto:

Aún así, y a falta de probarlo a fondo, compartimos la impresión de Zoran Čučković cuando dice que "los ejemplos originales de Tanaka de contornos sombreados se usan principalmente para representar la topografía natural. Encuentro ese acercamiento visualmente demasiado pesado; es difícil agregar información adicional sin sobrecargar el mapa (pero eso es solo una impresión ...). Lo que funciona mejor son todos esos mapas de calor que, de otro modo, son salpicaduras de colores: ¡los contornos de Tanaka les dan vida! Solo echa un vistazo al hermoso mapa de profundidad a continuación ...".
Maravilloso ejemplo en el artículo original en el que se aprecia el radical efecto tras el cambio del color base y el ángulo de iluminación.
Decir por último que en el artículo original que nos ha servido de guía está disponible para descarga el archivo de definición de estilo generado con este efecto (tanaka_style.qml), y que como sabéis podemos cargar directamente en nuestra capa ahorrándonos todo el proceso, pero... ¿y lo bonito que es descubrir cómo se hacen las cosas?

Desde Cartografía Digital agradecemos de nuevo la impagable labor de estos profesionales que gracias a sus conocimientos descubren nuevas fórmulas de representación cartográfica, enriqueciendo desde la nada las posibilidades estéticas de nuestros mapas. 
Y brindamos por ellos.