Cómo importar shapefiles a PostGIS

Esta entrada se centra en una tarea básica: cómo importar shapefiles a una base de datos PostGIS. Para ello hay varias opciones, las más extendidas son:

  • Mediante el uso del comando shp2pgsql, que se invoca desde la consola de comandos.
  • Mediante el uso de la versión gráfica del importador shp2pgsql (PostGIS shapefile Import/Export Manager).
  • Mediante el uso de un cliente SIG de escritorio (utilizaremos QGIS y el administrador de bases de datos).

La herramienta shp2pgsql

La utilidad shp2pgsql nos permite convertir shapefiles a tablas PostGIS (y viceversa con pgsql2shp). El comando shp2pgsql se invoca desde la consola. Aunque esta versión puede resultar menos agradable que la versión gráfica, al contar con más opciones es más potente.

1. Debemos entrar en la ventana de comandos o símbolo del sistema y situarnos en la carpeta en la que tengamos instalado el archivo shp2pgsql.exe, en nuestro caso C:\Program Files\OpenGeo\OpenGeo Suite\pgsql\9.1\bin

shp2pgsql

2. El siguiente comando lee el archivo ocean.shp y crea la tabla espacial con el mismo nombre.

> shp2pgsql -s 4326  -I C:\ruta\ocean.shp public.ocean > ocean.sql

El comando shp2pgsql crea un código SQL de PostGIS en el que se especifica:

  • el sistema de coordenadas
  • la creación de un índice espacial
  • la ruta completa
  • el esquema y nombre de la tabla
  • nombre del archivo sql.

3. Con un comando en psql para que pueda crear la tabla espacial PostGIS.

> psql -d basededatos -h localhost -U postgres -p54321 -f ocean.sql
  • se indica la base de datos en la que se creará la tabla.
  • host.
  • usuario.
  • puerto.
  • fichero que queremos cargar.

Al ejecutar el código se creará la nueva tabla.

El plugin  PostGIS Shapefile and DBF Loader Exporter

En la instalación de PostGIS se encuentra esta utilidad que es la versión gráfica del comando shp2pgsql y se puede ejecutar abriendo el archivo shp2pgsql-gui.exe

import gui

En primer lugar debemos introducir los parámetros de la conexión pinchando en el botón “View connection details...” y rellenando la información solicitada con los datos de la conexión.

Verificamos que la conexión es correcta y después abrimos el explorador de shapefiles asegurándonos de que la pestaña Import está seleccionada.

Clic en el botón Add File, navegamos hasta el directorio en el que se encuentra el archivo y pinchamos sobre el botón Import para iniciar el proceso de importación.

Mediante el uso de QGIS y su administrador de bases de datos

En este artículo vemos cómo importar archivos vectoriales a PostGIS con el administrador de bases de datos. La ventaja clara es que podemos importar cualquier tipo de archivo vectorial que soporte QGIS.

GeoJSON a PostGIS

Si quieres aprender a trabajar con PostGIS inscríbete ya en nuestro curso online de bases de datos espaciales: PostGIS

11 comentarios en «Cómo importar shapefiles a PostGIS»

  1. Tengo un problema con la extracción de datos desde postgres. Tengo cartografía en postgres y cargo esta en Qgis, sin embargo, al realizar exportaciones a .shp no me respeta el tipo de dato y me convierte los integer en string. ¿Cómo debo exportar los datos para que me respete el tipo de dato de la tabla?

  2. Hola muchas gracias por el post, me encontre con el detalle de trabajar con la versión 2.1.0 de postgis con PG Admin III en linux y la versión Chugiak de QGIS, esto me sirvió a mí dado que QGIS no tiene esta herramienta de conversión shafile a tablas en postgres ni tampoco PG Admin tiene la consola de transformación de forma gráfica directa: espero le sirva a alguien que use LInux 😉

    https://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS21UbuntuPGSQL93Apt

  3. Excelente post.!! Una consulta, se puede automatizar el proceso por medio de una aplicativo web?? es decir que unicamente se ingrese el archivo .shp y cargue automaticamente en la base de datos? Abría una forma de realizarlo?

  4. estimados cuando trato de importar un shape a postGis me aparece un error solo puedo importar puntos pero no lo puedo hacer con lineas ni poligonos, que puedo hacer?

Los comentarios están cerrados.