Este artículo completa la serie de artículos sobre la creación de una base de datos geopackage para gestionar las cartas náuticas ENC en QGis y la simbología de las distintas capas de datos. Trabajar con un número reducido de mapas no presenta especiales problemas, pero en cuanto el número aumenta se producen una serie de operaciones que se complican o consumen mucho tiempo.
Hemos desarrollado una serie de scripts en Python que simplifican el trabajo con grandes bases de datos de geopaquetes.
1- Carga de capas
El primer problema es el gran número de capas que hay que cargar en el proyecto QGis. Mientras que un mapa puede tener unas veinte capas, en cuanto el número de mapas aumenta puedes encontrarte rápidamente con más de cien capas que cargar.
QGis permite cargar todas las capas de un geopackage en bloque. Así no tienes que cargar el centenar de capas una a una. Pero una vez cargadas, hay dos tareas que realizar:
- eliminar capas irrelevantes, como las capas de metadatos
- ordenar la visualización de las capas para evitar que ciertas capas sean completamente invisibles por estar superpuestas a otras capas. Las capas superficiales como DEPARE y LNDARE (profundidades y terreno) deben estar siempre por debajo de los objetos marinos y terrestres, de lo contrario estos objetos no serán visibles.
Además, siempre es más agradable trabajar con escalas de visualización mínimas, de forma que sólo se muestren determinadas capas al ampliar a escalas muy pequeñas y la información detallada sólo se muestre al ampliar a una escala mayor.
Selección de capas a cargar
Hemos proporcionado un script en python que resuelve todos estos problemas por sí solo. Puede descargarlo desde este enlace.
El script incluye una lista de 210 capas S57, ordenadas para su correcta visualización:
Capas de superficie representadas por polígonos sólidos, luego capas de superficie representadas por polígonos vacíos (sólo se muestran los perímetros), luego capas de tipo lineal y finalmente capas de tipo puntual. Dentro de cada categoría, el orden se ha diseñado para evitar enmascarar la información.
Cada capa va acompañada de un valor mínimo de escala de visualización, siendo el valor por defecto 100000000.
He aquí un ejemplo:
#Liste des couches dans l’ordre de chargement
couches_a_charger = [
(‘pl_DEPARE’, 100000000),
(‘pl_UNSARE’, 100000000),
(‘pl_TIDEWY’, 100000000),
(‘pl_DAMCON’, 100000000),
(‘pl_CAUSWY’, 100000000),
(‘pl_HULKES’, 100000000),
(‘pl_LOKBSN’, 100000000),
(‘pl_OBSTRN’, 100000000),
(‘pl_PONTON’, 100000000),
(‘pl_PYLONS’, 100000000),
Si no quieres que el script cargue capas que no te interesan, puedes simplemente comentar la línea correspondiente añadiendo un ‘#’ al principio de la línea:
#Liste des couches dans l’ordre de chargement
couches_a_charger = [
(‘pl_DEPARE’, 100000000),
(‘pl_UNSARE’, 100000000),
#(‘pl_TIDEWY’, 100000000),
#(‘pl_DAMCON’, 100000000),
En este ejemplo, las capas TIDEWY y DAMCON no se cargarán.
Además, si desea definir una escala de visualización mínima para una capa, basta con cambiar el valor correspondiente:
‘pl_DEPARE’, 100000000),
(‘pl_UNSARE’, 100000000),
(‘pl_TIDEWY’, 100000),
#(‘pl_DAMCON’, 100000000),
#(‘pl_CAUSWY’, 100000000),
(‘pl_HULKES’, 100000000),
(‘pl_LOKBSN’, 100000000),
(‘pl_OBSTRN’, 50000),
En este ejemplo, la capa TIDEWY sólo se mostrará cuando el valor del zoom de la ventana del mapa sea inferior a 100000 y la capa OBSTRN cuando el valor sea inferior a 50000.
Para utilizar el script
- descargue el archivo .py
- guárdelo en un directorio de su elección
- Abra la consola Python de QGis (Extensiones ->Consola Python)
- Abra la ventana Editor (1)
- Haga clic en el icono Examinar (2) y apunte al archivo .py descargado
- Cambie la ruta del geopackage por la ruta y el nombre de su geopackage (3)
- Ejecute el script (4)
Antes de ejecutarlo, puedes hacer cambios para evitar que se carguen las capas o para asignarles una escala mínima diferente. No olvides guardar estos cambios antes de cerrar el proyecto.
El código del script es el siguiente:
Gestión de la escala de visualización
El script anterior se utiliza para definir una escala mínima cuando las capas se cargan por primera vez en el proyecto. Al guardar el proyecto, se guarda el valor del campo Escala_mínima de la capa. Cuando se abre el proyecto, se tiene en cuenta la configuración de visualización en el momento de cerrar el proyecto. Por lo tanto, sólo se utilizará el guión anterior al empezar a trabajar en un proyecto. Sin embargo, las escalas definidas en el script load_layers pueden no ser adecuadas para su área de trabajo. Por lo tanto, es posible que tenga que modificar los valores mínimos de escala para determinadas capas.
Le proporcionamos un script Python que le permite definir la escala mínima de visualización para todas las capas seleccionadas en el panel Capas. Una vez guardado el proyecto, estos ajustes se utilizarán cada vez que se abra el proyecto.
Para usarlo, primero cárgalo en la consola Python de QGis, selecciona (resalta) las capas que quieras modificar en el panel Capas y, lo más importante, cambia la línea
#Define la escala mínima (por ejemplo, 1:50000)
min_escala = 250000
con el valor deseado para la escala mínima de visualización.
El script de Python para definir la escala mínima de visualización de las capas seleccionadas es el siguiente:
Un script de Python para filtrar capas por «propósito»
Las tablas de su geopackage incluyen un atributo llamado «propósito», que es un valor entre 1 y 6 y corresponde al propósito principal del mapa:
- 1: Visión general
- 2: General
- 3: Litoral
- 4: Aproximación
- 5: Puerto
- 6: Atraque
Si tiene mapas con propósitos diferentes cubriendo la misma área, por ejemplo un mapa de tipo General y un mapa de tipo Aproximación, tendrá información duplicada. Si las entidades de dos mapas no son del mismo tipo (una entidad de superficie en un mapa de Aproximación corresponderá a una entidad de punto en el mapa General, por ejemplo), la representación puede volverse rápidamente muy desordenada. La solución propuesta es sencilla
Puedes descargar el script aquí.
Cargue el script en la consola de python, modifique la línea:
#Define el valor del atributo «purpose» a filtrar
valor_propósito = 5
con el valor de propósito deseado, luego ejecute el script. Se filtrarán todas las capas presentes en el panel Capas del proyecto.
Si desea eliminar todos los filtros activos de todas las capas del proyecto, el siguiente script le permite hacerlo: