Este post está orientado principalmente a usuarios y profesionales que utilizan QGIS, ArcGIS o cualquier otro usuario de software de sistemas de información geográfica (SIG).
En el mundo de los SIG, existe un formato de datos espaciales que todo el mundo conoce y que es común a todos los software del mercado, ese formato es el Shapefile.
Ya seas una persona totalmente nueva en SIG o seas un usuario avanzado, habrás usado este formato de datos en algún momento.
Puede que el formato Shapefile te guste o puede que no. Puede también que te resulte indiferente y que no te hayas parado a pensar si existe un formato mejor a la hora de trabajar con datos espaciales.
En este post voy a hablar de los GeoPackges, un formato OGC opensource que es una opción real para reemplazar a los Shapefiles por su enorme versatilidad, sencillez y funcionalidad.
¿Que es un geopackge?
Este formato OGC nació en 2014 y poco a poco ha ido ganando popularidad. Puedes encontrar toda la información que necesites sobre Geopackge aquí, no obstante yo te cuento lo fundamental: GeoPackge se comporta como una base de datos SQLite.
Se puede trabajar de distintas maneras con este formato. Tanto para leer como para generar un GeoPackge, puedes hacerlo desde la línea de comandos usando comandos SQL, desde QGIS o incluso GDAL/OGR. También puedes usar librerías de Python como Geopandas. Esto no es exclusivo de GeoPackge, hasta aquí, se comporta igual que un Shapefile.
¿Entonces, que es lo que convierte a GeoPackge en un formato mejor para almacenar, trabajar y compartir datos espaciales?
Principales diferencias entre GeoPackge y Shapefiles
Un Shapefile y un Geopackge, en esencia, son lo mismo. Un usuario podría «cargar» en QGIS un Shapefile y un GeoPackage, ambos conteniendo datos vectoriales de una cuenca hidrográfica y no apreciar ninguna diferencia in-situ.
Sin embargo, a la hora de trabajar con la tabla de atributos, usar herramientas espaciales o exportar/importar datos a una base de datos espacial, el usuario descubriría que en GeoPackge es mucho más versátil y eficiente que un Shapefile.
En la breve descripción que hemos hecho de GeoPackge no hemos visto nada nuevo con respecto al formato Shapefile, entonces, ¿dónde se encuentra su principal ventaja?
Como he mencionado anteriormente, GeoPackge se comporta como una base de datos SQLite. Por tanto, si estás familiarizado con PostgreSQL/PostGIS sabrás que una base de datos espaciales puede almacenar múltiples tipos de geometrías (entidades vectoriales), rasters, mosaicos, datos tabulares no espaciales, proyectos, metadatos etc.

Un Shapefile únicamente te permite almacenar datos vectoriales de un solo tipo de geometría a la vez y como mínimo, si trabajas con SIG, va a generar 4 archivos (prj, dbf, shp y shx).
Un GeoPackage nos va a permitir almacenar múltiples tipos de geometrías (entre otros formatos espaciales) y todo ello en un solo archivo.

Existe una web llamada «Switch from Shapefile» que anima a abandonar el formato Shapefile y da una serie de razones para ello. Basándome en dicha página web y en mi propia experiencia, voy a dejar una serie de pros y contras sobre usar Shapefile y GeoPackage.
Pros y contras sobre el formato shapefile
Pros:
- Shapefile es un formato muy extendido
- Lleva tanto tiempo en la industria, que la gente se siente cómoda usándolo, incluso habiendo mejores formatos (más vale malo conocido que bueno por conocer)
- Todos los software SIG que conozco pueden leer el formato Shapefile
- Incluso muchos software CAD son capaces de leer este formato
- Para la mayoría de las tareas SIG del día a día, el formato Shapefile cumple con su función.
Contras:
- Es un formato multi-archivo, a todo el mundo le ha ocurrido alguna vez que ha recibido un SHP de alguien (un cliente, un compañero) que solamente contenía el archivo «.shp»
- Para trabajar con SIG, necesitas al menos 4 archivos (prj, shp, dbf y shx). La perdida de alguno de ellos puede hacer que nuestros datos queden inutilizados.
- Solo permite almacenar datos vectoriales de un único tipo de geometría al mismo tiempo, es decir, no puedes almacenar dentro de un Shapefile un polígono y una línea.
- Tiene un tamaño restringido a 2 GB y conforme nos acercamos a ese l’imite se vuelve mucho más ineficiente y difícil de manejar
- No puede almacenar relaciones espaciales.
- Los nombres de los atributos se encuentran limitados a 10 caracteres. Esto resulta especialmente molesto cuando exportamos Shapefile desde una base de datos espaciales.
- Los atributos se almacenan en el archivo .dbf que no permite almacenar más de 255 atributos
- Solo permite 3 tipos de geometrías: punto, línea y polígono. No es muy seguro a la hora de trabajar con multipolígonos.
- Se comporta muy bien con datos 2D, pero presenta limitaciones a la hora de trabajar con datos 3D.
- Solo se pueden almacenar 4 tipos de datos: real, entero, fecha y texto (limitado a su vez a 255 caracteres)
- Por si solo, el formato Shapefile es tan solo un «shape» es decir, una geometría (punto, línea o polígono). Si no lo acompañamos con un archivo prj, el Shapefile no dispondrá de proyección espacial por si solo.
PROS Y CONTRAS SOBRE EL FORMATO GEOPACKGE
Pros:
- Un GeoPackage se compone de un solo archivo
- Puede almacenar vectores, rasters, etc.
- Si trabajas con QGIS, puedes usar GeoPackage para almacenar tus datos espaciales y posteriormente guardar el propio proyecto de QGIS dentro del GeoPackage, como se muestra en la captura inferior.

- Es tan eficiente como una base de datos espacial tipo PostgreSQL y, sin embargo, mucho más ligero y puede funcionar de forma «standalone»
- Dentro de los datos vectoriales, permite almacenar las siguientes geometrías: puntos, líneas, polígonos, multipuntos, multilínea y multipolígonos.
- Como tipos de datos, se pueden usar números reales, enteros, enteros (64 bit) texto, JSON, fechas, fechas y hora, objetos binarios (BLOB) y booleanos.

- Puede ampliamente superar 2 GB de espacio límite, en principio hasta 140 TB
- No hay limitación de caracteres en el nombre de atributos, lo que facilita «mapear» los nombres de atributos cuando importamos/exportamos datos desde/hacia otra base de datos espaciales.
- A la hora de insertar datos desde un GeoPackage a una base de datos y viceversa, es más rápido este formato que el formato Shapefile o GeoJSON.
- Cuando trabajamos con QGIS, a la hora de hacer uniones, intersecciones, etc., es mucho más eficiente, ya que los datos están espacialmente indexados.
Contras:
Es difícil encontrar puntos negativos al formato GeoPackage. Existen 2 factores que hacen que el GeoPackage por el momento no haya desplazado 100% al formato SHP:
- Falta de experiencia por parte del usuario: Es un formato relativamente nuevo. Es normal que al principio nos pueda resultar costoso usar un formato nuevo al que no estamos muy acostumbrados, y prefiramos quedarnos en nuestra zona de confort.
- No todos los software comerciales lo han implementado totalmente: Un ejemplo sería ESRI, aunque se puede usar el formato GeoPackage en ArcMAP y en ArcGIS Pro, no se puede usar 100% su funcionalidad, como se describe en este post.
CONCLUSIÓN
El formato GeoPackage está cada vez más extendido. QGIS incorpora GeoPackage como su formato por defecto a la hora de crear o exportar una nueva capa.
Si no conoces este formato, te invito a que lo pruebes, empieza por algo sencillo, coge cualquier Shapefile que tengas, cárgalo en QGIS y expórtalo en formato GeoPackage.
Después te animo a que añadas más capas dentro del mismo GeoPackage y ejecutes algunos procesos espaciales como uniones, intersecciones, etc.
Te advierto que es posible que después de hacer esto, no quieras volver a usar un Shapefile 🙂
Si ya conocías el formato GeoPackage, espero que hayas encontrado este post interesante y te invito a que comentes cosas que se me hayan escapado o con las que no estés desacuerdo.