El Blog colaborativo sobre Geotecnologías, GIS y Mapas para la comunidad GEO
  • Política de cookies
  • Más información
  • Contacto
geomapik
  • Proyecto
  • Contacto
Sin resultados
Ver todos los resultados
geomapik

ogr2ogr para importar datos a PostGIS: Shapefile, Geopackage y GeoJSON

Raúl Estévez por Raúl Estévez
20 septiembre, 2021
en Desarrollo GIS, Spatial Data Science, Tutoriales
Home Spatial Data Science
1.8k
Vistas
CompartirTwitter

La librería geoespacial GDAL/OGR cuenta con la funcionalidad ogr2ogr que resulta de gran interés para realizar importación de datos vectoriales en formatos tan diversos como Shapefile, Geopackage, CSV o GeoJSON a nuestra base de datos PostgreSQL – PostGIS.

En este breve artículo vamos a ver cómo importar archivos Shapefile, Geopackage y GeoJSON a PostGIS con ogr2ogr fácilmente utilizando la línea de comandos.

Utilizando ogr2ogr para importar datos a PostGIS y transformar formatos GIS

¿Por qué utilizar GDAL/OGR para importar datos geoespaciales a PostGIS?

Las ventajas de utilizar esta funcionalidad son varias:

  • Permite lanzar procesos en cualquier máquina desde la terminal fácilmente, tanto en Linux como en Windows.
  • La carga es realmente rápida, ya que no utilizamos ningún software intermedio como puede ser QGIS o algún gestor de bases de datos como pgAdmin.
  • Podemos personalizar de forma sencilla los parámetros de ejecución mediante una serie de «flags» en el comando.
  • La documentación de GDAL/OGR está realmente bien preparada y es sencilla de interpretar.
  • Familiarizarnos con los comandos de GDAL/OGR nos ayudará a aprender a explotar su potencial más allá de la funcionalidad ogr2ogr que tratamos en este post.
  • Nos permite establecer rutinas y programar la ejecución de dichos procesos fácilmente para automatizar la importación de datos geoespaciales a PostGIS.
  • No necesitamos conocer ningún lenguaje de programación, aunque puede sacarse mayor partido combinándolo con conocimientos de Python para GIS.

Cómo ejecutar comandos de GDAL/OGR y utilizar la funcionalidad ogr2ogr

Los comandos de la funcionalidad ogr2ogr se ejecutan utilizando la consola o línea de comandos de Windows. Para acceder a ella basta con buscar «cmd» en el buscador de Windows (Símbolo del Sistema) o pulsando la tecla Windows + R y escribir a continuación «cmd». Se abrirá una sesión con tu usuario en la que puedes empezar a introducir comandos.

En el caso de Linux, deberás abrir la terminal que venga instalada con tu distribución. En Ubuntu puedes abrir la terminal de Gnome o pulsar Ctrl+Alt+T para acceder rápidamente.

Para poder utilizar la funcionalidad ogr2ogr deberás tener instalada GDAL/OGR o bien, si ya cuentas con una instalación de QGIS o PostgreSQL, añadir la ubicación de la funcionalidad a tu PATH en el caso de utilizar Windows. El lugar de instalación generalmente es C:\Program Files\PostgreSQL\version_de_PostgreSQL\bin para la instalación de PostgreSQL – PostGIS y C:\Program Files\version_de_QGIS\bin para la instalación de QGIS.

Efectivamente, tanto QGIS como PostgreSQL utilizan, entre otras librerías, GDAL/OGR en sus entrañas para conversión de datos y otros procesos geoespaciales.

Puedes asegurarte que ogr2ogr es accesible desde cualquier directorio escribiendo en tu sesión de consola/terminal el siguiente comando:

ogr2ogr --version

Este comando debería retornarte la versión de GDAL instalada. En ese caso, tu sistema debería estar listo para poder ejecutar comandos de GDAL/OGR. Si no es así, deberías revisar la configuración de las variables de entorno y añadir el directorio correspondiente al PATH.

Principios de ogr2ogr y patrones comunes en los comandos

La mayoría de los comandos de ogr2ogr se caracterizan por tener una seria de instrucciones comunes. Así pues, cuando queremos ejecutar comandos que modifiquen el formato de un archivo o interactuar con PostgreSQL – PostGIS veremos que se repiten estructuras en las sentencias.

Podríamos decir que, usualmente, se distinguen tres partes dentro de un comando:

  • En la primera parte de un comando primero se invoca la funcionalidad, posteriormente se indica el formato de salida del archivo o, mejor dicho, qué driver se va a utilizar para ejecutar la conversión, seguido de la ruta y el nombre del archivo resultante.
  • En la segunda parte del comando se establece el lugar de origen de la información, bien sea un archivo local o una base de datos PostgreSQL – PostGIS.
  • Finalmente, se añaden comandos opcionales para definir la estructura del archivo, parámetros que afecten a las geometrías, conversiones entre sistemas de referencia de coordenadas, etc… Es decir, opciones de creación que se establecen mediante el flag «-lco».

Veamos un ejemplo, convirtiendo un archivo shapefile a Geopackage:

:: primera parte
ogr2ogr -f GPKG archivo_destino.gpkg 

:: segunda parte
archivo_origen.shp

::tercera parte
-lco FID=gid -lco GEOMETRY_NAME=the_geom

Así, el comando completo para convertir un Shapefile al formato Geopackage con ogr2ogr sería el siguiente, indicando el driver usado (GPKG), la ruta y el archivo de destino, la ruta y el archivo de origen, y finalmente los flags «-lco» con las opciones de creación:

ogr2ogr -f GPKG archivo_destino.gpkg archivo_origen.shp -lco FID=gid -lco GEOMETRY_NAME=the_geom

¿Cómo importar un Shapefile a PostGIS con ogr2ogr?

Veamos un ejemplo de cómo importar un Shapefile con ogr2ogr sobre PostGIS. En el siguiente caso tratamos de cargar una capa del inventario forestal de Euskadi sobre nuestra base de datos PostGIS instalada en nuestra máquina local.

Utilizaremos el mismo esquema o patrón de comando que hemos visto anteriormente, aunque con ligeras variaciones:

ogr2ogr -f "PostgreSQL" PG:"dbname=eus_geodb host=localhost port=5432 user=postgres password=postgres" "inv_forestal_eus.shp" -lco GEOMETRY_NAME=geom -lco FID=gid -progress

En este caso no estamos indicando que el destino sea un archivo, sino que indicamos una conexión a una base de datos PostgreSQL – PostGIS. Para ello, definimos la conexión con PG:»parámetros de conexión». Entre ellos, el nombre de la base de datos, el anfitrión o host, el puerto de conexión, usuario, contraseña, esquema, etc…

Posteriormente indicamos, como viene siendo habitual, el archivo de origen (en este caso el shapefile del inventario forestal) que vamos a importar a la conexión PostGIS indicada.

importar shapefile ESRI a PostGIS con ogr2ogr GDAL/OGR
Vista previa en QGIS de la capa «inv_forestal_eus.shp» en formato Shapefile que queremos importar a PostGIS con ogr2ogr

Finalmente se detallan las opciones de creación de la capa (o Layer Creation Options, por eso «-lco» en referencia a sus iniciales…) donde indicamos que el nombre del campo de la geometría en PostGIS queremos que se denomine «geom» y el campo identificador único se denominará «gid».

Por último, el flag «-progress» permite mostrar una cuenta del avance del comando. Resulta útil para conocer el estado de ejecución del comando, sobre todo ante archivos pesados.

¿Cómo importar un Geopackage a PostGIS con ogr2ogr?

Del mismo modo que se pueden importar archivos Shapefile, también podemos importar archivos en formato Geopackage con ogr2ogr a PostGIS, otro de los principales estándares dentro del sector GIS hoy en día para intercambio de datos.

Dejando de lado las particularidades de éste formato (daría para uno o varios post en detalle), es imprescindible saber que un mismo archivo Geopackage puede contener múltiples capas. Mejor dicho, múltiples tablas, pues se trata sencillamente de una suerte de base de datos portátil y compacta basada en SQLite.

En el siguiente ejemplo, vamos a cargar la capa «t_poligonos» del archivo Geopackage «siose_2014_eus.gpkg» sobre la base de datos indicada.

ogr2ogr -f "PostgreSQL" PG:"dbname=eus_geodb host=localhost port=5432 user=postgres password=postgres" "siose_2014_eus.gpkg" "t_poligonos" -nln siose_euskadi_poligonos_2014 -lco GEOMETRY_NAME=geom -lco FID=gid -progress

El flag «-nln» que puedes observar hace referencia al nombre de la capa que se va a crear en la base de datos. Seguidamente añadimos los flags «-lco» y «-progress». De este modo, evitamos cargar todas las tablas del archivo Geopackage, sino únicamente la capa deseada y nombrándola bajo nuestro criterio.

importar Geopackage PostGIS con ogr2ogr
Vista de los datos cargados desde el archivo Geopackage en PostGIS mediante un gestor de base de datos como pgAdmin

Si obviásemos el flag «-nln» el nombre de la tabla en PostGIS sería el que recibe dentro del archivo Geopackage.

¿Cómo importar un archivo en formato GeoJSON a PostGIS usando ogr2ogr?

En el caso de querer importar un GeoJSON a PostGIS con ogr2ogr el procedimiento es muy similar al descrito anteriormente. El driver utilizado y la estructura del comando es muy similar.

En este caso, el formato GeoJSON es una adaptación del habitualmente usado formato JSON (JavaScript Object Notation) en el entorno web o en bases de datos NoSQL. En él los campos y valores se definen como pares de clave-valor. La definición de las geometrías se realiza mediante el formato WKT de la OGC.

Un ejemplo de importación de un GeoJSON a PostGIS con ogr2ogr:

ogr2ogr -f "PostgreSQL" PG:"dbname=eus_geodb host=localhost port=5432 user=postgres password=postgres" "municipios_eus.geojson" -lco GEOMETRY_NAME=geom -lco FID=gid -progress

Si quieres conocer más acerca de esta funcionalidad, puedes visitar la web oficial de la librería GDAL/OGR y visitar la sección de drivers vectoriales. Concretamente, en este espacio dedicado al driver PostgreSQL-PostGIS tienes más detalles y ejemplos acerca de cómo escribir comandos de conexión y manipulación de datos para su importación a una base de datos PostGIS.

Etiquetas: Bases de datosGDALGeoJSONGeopackageGISOGRogr2ogrPostGISQGISShapefileSistemas de Información Geográfica
Compartir58Tweet37
Post anterior

¿Qué es la Geoestadística? Análisis geoestadístico con R, ArcGIS y QGIS

Post siguiente

Librería GeoPandas de Python: qué es y para qué sirve

Raúl Estévez

Raúl Estévez

Post siguiente
GeoPandas librería geoespacial para Python

Librería GeoPandas de Python: qué es y para qué sirve

El futuro de los GIS según OpenAI

El futuro de los GIS y el sector geoespacial según OpenAI

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Posts Recomendados

bases de datos espaciales

¿Por qué trabajar con bases de datos espaciales en GIS?

12 abril, 2020
2.1k
Lenguajes de programación GIS

Lenguajes de programación GIS

30 noviembre, 2018
3.1k
Geotecnologías GIS Mapas Cartografía Digital

Geotecnologías, GIS y Mapas

Información, recursos de aprendizaje y novedades del sector GEO para los usuarios especializados en el manejo de la información geográfica, su análisis y su representación.

Posts Nuevos

Overture Maps. ¿Rival para Google Maps?

Overture Maps ¿una nueva plataforma de mapas con datos abiertos?

19 diciembre, 2022
152
El futuro de los GIS según OpenAI

El futuro de los GIS y el sector geoespacial según OpenAI

9 diciembre, 2022
149
GeoPandas librería geoespacial para Python

Librería GeoPandas de Python: qué es y para qué sirve

22 septiembre, 2021
2.1k
ogr2ogr-postgis-geopackage-shapefile

ogr2ogr para importar datos a PostGIS: Shapefile, Geopackage y GeoJSON

20 septiembre, 2021
1.8k
que es la geoestadistica

¿Qué es la Geoestadística? Análisis geoestadístico con R, ArcGIS y QGIS

8 mayo, 2020
9.3k
Geotecnologías GIS Mapas Cartografía Digital

El blog colaborativo sobre Geotecnologías, GIS y Mapas para la comunidad GEO

Información, recursos de aprendizaje y novedades del sector GEO para los usuarios especializados en el manejo de la información geográfica, su análisis y su representación.

Todo reunido en un blog colaborativo y abierto. ¿Te animas a colaborar con geomapik?

Categorías

  • Análisis GIS
  • Desarrollo GIS
  • Novedades GIS
  • Recursos GIS
  • Spatial Data Science
  • Tutoriales
  • Uncategorized
  • Webmapping
Sin resultados
Ver todos los resultados
Novedades GIS

Overture Maps ¿una nueva plataforma de mapas con datos abiertos?

19 diciembre, 2022
152
Novedades GIS

El futuro de los GIS y el sector geoespacial según OpenAI

9 diciembre, 2022
149
Spatial Data Science

Librería GeoPandas de Python: qué es y para qué sirve

22 septiembre, 2021
2.1k
Spatial Data Science

ogr2ogr para importar datos a PostGIS: Shapefile, Geopackage y GeoJSON

20 septiembre, 2021
1.8k

Etiquetas

Análisis (15) Análisis de datos (5) aprender GIS (5) ArcGIS (5) Bases de Datos Espaciales (5) Cartografía (28) Data Analysis (4) Data Science (4) Datos (9) Desarrollo GIS (16) Diseño cartográfico (6) ESRI (3) GDAL (2) geoestadística (2) Geoinformática (7) Geopandas (2) Geotecnología (4) GIS (41) Javascript (4) Jupyter Notebook (3) Linux (2) Mapas (19) Matplotlib (2) MDT (3) Medio Ambiente (2) OGC (2) OpenStreetMap (3) pgAdmin (2) plugins (7) PostGIS (7) PostgreSQL (6) Programación (14) Python (8) QGIS (25) R (5) ráster (2) Sistemas de Información Geográfica (33) SQL (6) Tutorial (12) visor de mapas (3) visualización (3) Webmapping (11) WKT (2) WMS (2) WMTS (2)

© 2018 geomapik - Geotecnologías, GIS y Mapas

Sin resultados
Ver todos los resultados
  • Proyecto
  • Contacto

© 2018 geomapik - Geotecnologías, GIS y Mapas

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies