Cómo importar shapefiles a PostGIS (con vídeo)

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 plugin PostGIS manager).

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 2.0 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.

Videotutorial:

Utilizando QGIS para importar las capas

QGIS fue el primero Sistema de Información Geográfica que soportaba la visualización de las tablas contenidas en una base de datos espacial PostGIS y esa experiencia se nota: es el programas que mejor trabaja con PostGIS.

QGIS cuenta con un interesante complemento llamado Administrador de BBDD. El Administrador de BBDD sirve para gestionar tus bases de datos de Oracle Spatial, PostGIS, SpatialLite/GeoPackage.

En primer lugar debemos instalar el complemento, aquí tienes unas sencillas instrucciones para realizar esta operación.

Una vez instalado para abrirlo debemos ir al menú superior Bases de datos > Administrador de BBDD > Administrador de BBDD.

Cuando se inicia Administrador de BBDD, éste intenta conectarse a la base de datos utilizada más recientemente. Por lo tanto para trabajar con el Administrador de BBDD en primer lugar debemos añadir una conexión desde la configuración de QGIS. En el  menú superior de QGIS vamos a Capa > Añadir capa > Añadir capas PostGIS… (Ctrl +D)

En esta entrada te mostramos cómo conectar con PostGIS desde QGIS.

Una vez realizada la conexión, en el Administrador de BBDD veremos nuestras bases de datos:

Ahora ya podemos importar shapefiles a nuestra base de datos PostGIS.

Debemos hacer clic en el botón Importar capa/archivo:

A continuación se abrirá un cuadro de diálogo «Importar capa vectorial».

El cuadro de diálogo actúa como una interfaz simple para la utilidad shp2pgsql de PostGIS.


Podemos importar todos o solo los objetos espaciales seleccionados.

Es interesante el botón «Actualizar opciones» ya que nos rellena automáticamente los campos:

  • Columna de geometría.
  • SRID.
  • Codificación.

Basta rellenar estos campos y listo. Pulsamos en Aceptar y se importa la capa a la base de datos.

El administrador de BBDD dispone de la opción Vista preliminar. Esto es muy interesante para visualizar las tablas sin necesidad de agregarlas como capa:

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

Let’s connect!

Date de alta en nuestro newsletter
y recibe este ebook gratuito

Y una vez al mes recibirás las últimas novedades del sector GIS y de nuestros cursos

11 comentarios en “Cómo importar shapefiles a PostGIS (con vídeo)”

  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.