PostGIS es una extensión de la base de datos PostgreSQL que agrega soporte para objetos de datos geográficos. Esto nos permite utilizar la base de datos PostgreSQL para almacenar y consultar datos espaciales. Como puede adivinar, la combinación de PostGIS y Docker proporciona un método eficiente y extenso para administrar datos espaciales.
En este tutorial, aprenderemos cómo podemos configurar rápidamente una instancia de PostGIS dentro de un contenedor Docker. También cubriremos algunos conceptos básicos de PostGIS y aprenderemos cómo cargar datos espaciales y realizar algunas consultas básicas utilizando el contenedor.
Requisitos:
Para seguir este tutorial, asegúrese de tener lo siguiente:
- Instalé Docker Engine en su sistema. Puede consultar nuestros tutoriales sobre cómo instalar Docker en su sistema de destino.
- Conocimientos básicos de PostgreSQL y datos espaciales.
Una vez cumplidos los requisitos dados, podemos continuar con el tutorial.
Ejecute PostGIS en Docker
Procedamos y configuremos el contenedor PostGIS. Comenzamos extrayendo el contenedor PostGIS de Docker Hub con el siguiente comando:
$ ventana acoplable extrae postgis/postgis
Una vez que hayamos descargado la imagen, podemos ejecutar el contenedor usando la imagen como se muestra en el siguiente comando:
$ docker run --name postgis-server -e POSTGRES_PASSWORD =contraseña -d -p 5432:5432 postgis/postgis
En el comando dado, especificamos los siguientes parámetros:
- –nombre: esto nos permite especificar el nombre del contenedor.
- -e – Esto nos permite establecer la contraseña de PostgreSQL como variable de entorno. Esta es la contraseña que se utiliza para el usuario de postgres.
- -d: esto le indica a Docker que ejecute el contenedor en segundo plano o en modo independiente.
- -p 5432:5432: esto nos permite asignar el puerto 5432 dentro del contenedor al host en el puerto 5432.
Para verificar que el contenedor se esté ejecutando, use el siguiente comando:
$ ventana acoplable psDebería ver el contenedor PostGIS en la lista.
Cargar los datos espaciales en PostGIS
Ahora que tenemos el contenedor PostGIS ejecutándose, podemos cargar los datos espaciales usando varias herramientas y formatos como GeoJSON, CSV, etc.
Para este caso, usamos un Shapefile como se muestra en los siguientes comandos:
$ mkdir -p ~/datos$ cd ~/datos
wgethttps://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
$ descomprimir ne_110m_admin_0_countries.zip
En los comandos dados, comenzamos creando un directorio para almacenar los datos que deseamos cargar. Luego descargamos datos geográficos del enlace especificado y los extraemos en el directorio.
El siguiente paso es cargar los datos en la base de datos. Comenzamos conectándonos a la base de datos PostgreSQL usando el siguiente comando:
$ docker exec -it postgis-server psql -U postgres -d postgresSi se le solicita una contraseña, proporcione la contraseña que configuró al ejecutar el contenedor. Esto debería autenticarte y colocarte en el shell de PostgreSQL.
Una vez conectados a la base de datos, podemos usar la utilidad “shp2pgsql” para importar los datos de los Shapefiles que extrajimos en los pasos anteriores.
postgres=# shp2pgsql -I -s 4326 ne_110m_admin_0_countries | psql -U postgres -d postgresEn el comando anterior, usamos la opción -I para crear un índice espacial para una consulta más rápida de los datos espaciales. También especificamos el sistema de coordenadas como 4326 usando el parámetro -s. EPSG:4326 es el sistema de estado de coordenadas estándar para WGS 84.
Datos de consulta PostGIS
Una vez que cargamos los datos, podemos salir de la utilidad PSQL ejecutando el comando “\q” o salir.
A continuación, para verificar que tenemos los datos cargados, podemos volver a conectarnos a la base de datos ejecutando el siguiente comando:
$ docker exec -it postgis-container psql -U postgres -d postgresA continuación, puede ejecutar las consultas espaciales básicas para verificar que tiene los datos almacenados.
Conclusión
En este tutorial, aprendió cómo ejecutar el servidor PostGIS como un contenedor Docker y cargar los datos en la base de datos.