GeoPackage para novatos: ventajas y uso en ArcGIS, QGIS y GeoServer

GeoPackage es un formato de archivo universal construido sobre la base de SQLite, para compartir y transferir datos espaciales vectoriales y raster. Es por tanto la alternativa a formatos raster como el GeoTIFF y vectoriales como por ejemplo el obsoleto shapefile.

La especificación GeoPackage describe un conjunto de convenciones para el almacenamiento dentro de una base de datos SQLite de:

  • Entidades vectoriales.
  • Una matriz de teselas de imágenes y mapas raster a diferentes escalas.
  • Atributos alfanuméricos.
  • Extensiones.

En este artículo analizaremos las principales ventajas del formato GeoPackage y cómo utilizarlo en los principales SIG de escritorio: ArcGIS y QGIS. Además veremos cómo trabajar con él en el servidor espacial GeoServer y en el cliente de mapas web Leaflet.

Ventajas de utilizar GeoPackage

Veamos algunas ventajas de utilizar GeoPackage:

  1. Es un formato compacto, abierto, basado en estándares de la OGC, e independiente de plataformas o aplicaciones. Los archivos GeoPackages que cumplan los requisitos de la norma y que no implementen otras extensiones específicas de proveedores externos son interoperables en todos los entornos empresariales y de computación personal.
  2. Dispone de índices espaciales. Se recomienda el uso de índices espaciales cuando el número de registros excede del millar. El uso de índices espaciales incrementa la velocidad de búsquedas espaciales y su visualización en los SIG de escritorio.
  3. Se trata de un único archivo .gpkg, por lo que es ideal para transferir información geoespacial.
  4. Podemos almacenar multitud de tipos de geometrías en un mismo archivo .gpkg: Point, Line, Polygon, MultiPoint, MultiLine, MultiPolygon, CompoundCurve, CurvedPolygon, MultiCurve y MultiSurface.
  5. Soporta el uso directo, lo que significa que podemos acceder y actualizar sus datos en un formato de almacenamiento nativo sin necesidad de conversiones intermedias. Podemos acceder a los datos de GeoPackage de forma «nativa» sin traducciones de formato intermedio.
  6. GeoPackage destaca por su flexibilidad y se puede utilizar de muchas maneras, por lo que puede reemplazar al formato shapefile. GeoPackage, a diferencia de un shapefile, se ha diseñado para almacenar datos complejos y voluminosos (hasta 140 TB). Además los atributos de  las geometrías pueden contener nombre muy largos.
  7. GDAL soporta entidades de GeoPackage. Esta librería de código abierto escrita en C sirve para convertir formatos de datos. GDAL es la librería más ampliamente utilizada. 100 programas de GIS utilizan la librería GDAL internamente en sus procesos espaciales, lo que nos lleva al siguiente punto:
  8. Casi todos los software GIS de referencia son capaces de leer archivos GeoPackage. Por ejemplo ArcGIS o QGIS pueden leer y escribir. Y se pueden utilizar en ArcGIS Pro, GeoServer (importando y sirviendo los datos como estándar web de la OGC), o Leaflet. Otros programas que soportan GeoPackage son: GeoTools, OpenJUMP PLUS, Skyline, Luciad, Envitia MapLink, SpatiaLite, FME Desktop y FME Server, TerraGO. Es decir, no vamos a tener problema para compartir nuestros datos con otros colegas de trabajo.
  9. Los GeoPackages son particularmente útiles en dispositivos móviles y en entornos de comunicación en los que hay conectividad y ancho de banda limitados.

Descarga de archivos .gpkg

Puedes descargar aquí algunos archivos GeoPackage de ejemplo.

Uso de GeoPackage en ArcGIS

Desde la versión 10.3, ArcGIS soporta entidades vectoriales y raster. Con ArcGIS podemos crear un GeoPackage vacío y rellenar el GeoPackage copiando datos de otras entidades en él.

También es posible visualizar estos archivos como si de una geodatabase se tratase:

GeoPackage para novatos - uso en ArcGIS

O editar los GeoPackage existentes utilizando las herramientas SQLite.

En ArcGIS 10.5 disponemos del conjunto de herramientas A GeoPackage, que contiene una herramienta para convertir datasets al formato de GeoPackage de OGC. La herramienta «Agregar ráster a GeoPackage» carga datasets ráster en una pirámide ráster de GeoPackage de OGC.

Importación de archivos GeoPackage a QGIS

QGIS  puede abrir y mostrar todos los formatos admitidos por OGR/GDAL, lo que incluye el formato GeoPackage.

Desde el menú superior Capa > Añadir Capa > Añadir capa vectorial… podemos abrir una capa vectorial con formato GeoPackage (.gpkg)

Creación de nueva capa GeoPackage en QGIS

La opción de crear una capa Geopackage desde cero está disponible desde la versión 2.16 y en QGIS 3.x.

Para ello debemos ir al menú superior Capa > Crear Capa… > Nueva capa GeoPackage.

O desde el icono de la barra de herramientas Administrar capas:

Una vez seleccionado se abre la ventana en la que debemos introducir:

  1. Un nombre y una ubicación del archivo.
  2. El tipo de geometría (punto, línea o polígono, etc)
  3. Creamos los campos que tendrá (nombre, tipo de campo y longitud en el caso que el tipo sea texto).
  4. Es interesante desplegar las opciones avanzadas y dejar marcada la opción de crear índices espaciales, ya que esto acelerará las búsquedas espaciales y la representación de geometrías en los SIG de escritorio.

Al hacer clic en Aceptar se habrá creado el archivo GeoPackage.

Crear un archivo GeoPackage a partir de un shapefile con QGIS

En QGIS 2.x, el shapefile ha sido el formato de archivo predeterminado para la exportación de datos.

Ahora, en QGIS 3.x, el formato de salida estándar es el GeoPackage.

Para exportar una capa, en primer lugar debemos añadir cualquier archivo vectorial admitido por OGR a QGIS e ir al menú superior Capa > Guardar como…

En la ventana de dialogo que se abre seleccionaremos como formato GeoPackage y le asignamos un nombre y un directorio de salida.

Publicación de GeoPackage en GeoServer

Una vez que se crea el archivo GeoPackage, es hora de publicarlo en GeoServer.

En GeoServer 2.13 el rendimiento en cuanto a la lectura y representación de GeoPackage ha mejorado de forma significativa. Es hasta dos veces más rápido en extracciones completas de grandes conjuntos de datos y un 50% más rápido en búsquedas de recuadros delimitadores pequeños, lo que equipara a GeoPackage con PostGISHoja de cálculo de Google con más detalles.

El Shapefile sigue siendo el rey de las extracciones de conjunto de datos completos y es la fuente de datos más rápida para las consultas puramente espaciales.

La lectura de archivos de GeoPackage es parte de la funcionalidad principal de GeoServer y no requiere ninguna extensión.

GeoPackage se puede utilizar como un formato de salida para crear WFS GetFeature (creando una capa de datos vectoriales) y WMS GetMap (creando una capa de datos raster). La extensión GeoPackage también permite crear un GeoPackage completamente personalizado con múltiples capas, utilizando el proceso GeoPackage.

Importar un GeoPackage a GeoServer

Podemos utilizar GeoPackage tanto como almacén de datos vectoriales, como almacén de datos raster.

Simplemente en la columna izquierda de la página de administración de GeoServer, en el apartado «Datos» elegimos «Almacenes de datos»  .

Seleccionamos «Agregar nuevo almacén» y escogemos la opción «GeoPackage» en «Fuentes de datos vectoriales»:

A continuación, debemos configurar el nuevo origen de datos de GeoPackage.

Debemos seleccionar el espacio de trabajo, darle un nombre (apartado «Nombre del origen de datos») y la ubicación de archivo (apartado «database»). Podemos dejar el resto de campos con los valores predeterminados:

Después de configurar el origen de datos, hacemos clic en «Publicar».

Una vez que haya configurado y publicado su capa, podemos usar la herramienta GeoServer «Layer Preview» para verificarlo. Podemos utilizar la opción OpenLayers para ver e interactuar con los datos.

Ya podemos trabajar como si de una layer más se tratase. En este momento ya tenemos la capa publicada como WMS, WFS, etc.

Exportación a formato GeoPackage con GeoServer

GeoServer no admite la exportación al formato GeoPackage por defecto. Es necesario instalar la extensión WPS y la extensión GeoPackage en ese orden:

  1. Descargar e instalar la extensión WPS.

  2. Descarga los archivos de la extensión Geopkg desde la web nightly GeoServer community module builds. Existe un módulo de la comunidad (Community modules) considerado como «pendiente» en el sentido de que no forman parte de las versiones oficiales de GeoServer.

  1. Extraemos el contenido de los archivos en el directorio de instalación de GeoServer C:\GeoServer 2.13.0\webapps\geoserver\WEB-INF\lib.

Una vez que estas extensiones estén instaladas y funcionando, podemos utilizar GeoPackage como formato de salida.

Cualquier petición WMS GetMap se puede devolver un Geopackage especificando el parámetro:

format=geopackage

como formato de salida. Ejemplo:

http://localhost:8080/geoserver/earth/wms?service=WMS&version=1.1.0&request=GetMap&layers=earth:cities&styles=&bbox=-175.220564477617,-41.2999739392764,179.216647094029,64.1500236197392&width=768&height=330&srs=EPSG:4326&format=geopackage

O desde la interfaz de GeoServer, sección Datos > Previsualización de Capas:

El resultado que obtenemos será un archivo GeoPackage.

De igual modo que con en el caso de las peticones WMS, una solicitud WFS GetFeature puede devolver un Geopackage especificando el parámetro:

 format=geopackage

como formato de salida. El resultado igualmente es un archivo GeoPackage.

Carga de capas GeoPackage en un visor webmapping creado con Leaflet

Bien, en este caso cargaremos capas GeoPackage directamente en el visor Leaflet, del mismo modo que podemos utilizar un GeoJSON y de esta manera prescindir del uso de un servidor espacial, que siempre es más complejo (hace algunos años ya os explicábamos cómo crear un visor de mapas web utilizando un GeoJSON).

El plugin leaflet-geopackage nos permite cargar capas GeoPackage en un visor webmapping creado con Leaflet.

Podemos añadir tanto teselas como objetos geográficos de GeoPackage. Cuando una capa se añade al mapa, el GeoPackage se descarga y después la capa específica se añade al mapa.

El primer paso es añadir la librería a la cabecera:

<script src="https://unpkg.com/@ngageoint/leaflet-geopackage@2.0.5/dist/leaflet-geopackage.min.js"></script>

Y después podemos añadir las capas bien como teselas o como feature:

// Load the Rivers GeoPackage and display the tile layer
L.geoPackageTileLayer({
    geoPackageUrl: 'http://ngageoint.github.io/GeoPackage/examples/rivers.gpkg',
    layerName: 'rivers_tiles'
}).addTo(map);

// Load the Rivers GeoPackage and display the feature layer
L.geoPackageFeatureLayer([], {
    geoPackageUrl: 'http://ngageoint.github.io/GeoPackage/examples/rivers.gpkg',
    layerName: 'rivers'
}).addTo(map);

Artículos relacionados:

6 comentarios en «GeoPackage para novatos: ventajas y uso en ArcGIS, QGIS y GeoServer»

  1. Buenas noche que me recomiendan como novato de estsos temas resulta que son Metereologo que manejo imagenes de forma automatica pero me gustaria elaborar como veo que lo hacen, por donde seria recomendable comenzar con programacion? yo soy ing pero metereologo graduado en la ex urrs pero no aprendimos a programar pero creo que ahi seria lo recomendable y no se que mes recomiendan ustedes, a soy de Nicaragua

  2. Hola Aurelio,
    ¿Conoces algún plugin o herramienta de QGIS que te permita exportar varios archivos a un único geopackage de manera más o menos automática?
    Sí lo he podido hacer desde postgres via GDAL, pero me gustaría saber si esta herramienta está ya en el desktop de QGIS.
    Gracias de antemano.

    • Hola Xavi, Desde QGIS creo que no existe ningún plugin a día de hoy que lo haga de forma automática. Pero se podría automatizar mediante Python (PyQGIS) replicando el proceso que has hecho desde Postgres. Saludos!

  3. Hola. Tengo una duda sobre geopakage y es si se puede trabajar con ella como si fuese una base de datos espacial en sustitución de postgis por ejemplo. En caso afirmativo, que diferencias habrían?
    Gracias!

    • Hola Juan,
      GeoPackage es un contenedor SQLite y el estándar de codificación GeoPackage regula las reglas y los requisitos del contenido almacenado en un contenedor GeoPackage.

      No sería una alternativa a una base de datos PostGIS, la alternativa a PostGIS podría ser SQLite. GeoPackage es una alternativa al trabajo con shapefiles. Es decir no puedes tener varios GeoPackages en una base de datos, ya que realmente esto sería trabajar con una base de datos SQLite y varias tablas dentro.

      Sin embargo SQLite no tiene una extensión espacial, sino que se ha desarrollado el estandar GeoPackage basado en SQLite para almcenar datos espaciales.

      Las diferencias entre PostgreSQL-PostGIS y SQLite son evidentes, PostgreSQL es la base de datos libre más avanzada y la extensión espacial PostGIS contiene funciones de análisis espacial nunca vistas hasta el momento.

      Una diferencia fundamental entre ambas BBDD es que a diferencia de los sistema de gestión de bases de datos cliente-servidor, el motor de SQLite no es un proceso independiente con el que el programa principal se comunica. En lugar de eso, la biblioteca SQLite se enlaza con el programa pasando a ser parte integral del mismo.

      Saludos

Los comentarios están cerrados.