Blog del Máster
en Tecnologías de la Información Geográfica y Ciencia de Datos
Espaciales

osm

Cómo importar una geometría concreta de OpenStreetMap a una base de datos PostgreSQL/PostGIS

En este artículo vamos a ver cómo podemos extraer una geometría concreta de la base de datos de OpenStreetMap en formato EWKT (Extended Well Know Text) para su posterior importación a una base de datos PostgreSQL/PostGIS.

Localizar la geometría a importar dentro de OpenStreetMap

Accediendo al sitio http://www.openstreetmap.org buscamos la geometría  que deseamos importar a nuestra base de datos. En nuestro ejemplo, vamos a importar la geometría que define la ciudad de Barcelona.

01.locate

De todos los resultados obtenidos para “Barcelona” seleccionamos la “ciudad” de Cataluña, España.
Tras pinchar sobre el resultado deseado, accedemos a otra pantalla como la que podemos ver en la siguiente imagen:

02.found


Extraer la geometría en formato EWKT

Entre la información que nos muestra la imagen anterior aparece el identificador de la relación Barcelona cuyo valor es 347950. Los polígonos dentro de OpenStreetMap se tratan como relaciones. Este valor identifica la geometría de la ciudad de Barcelona dentro de la base de datos de OpenStreetMap. Nos apuntamos ese valor y accedemos al sitio http://polygons.openstreetmap.org donde lo introducimos tal y como se muestra a continuación.

03.relation

Al pulsar sobre “Submit Query” nos aparece una nueva pantalla donde podemos seleccionar el formato en el que deseamos obtener la geometría. Seleccionamos WKT (Well Known Text) y obtenemos nuestra geometría en un formato legible donde se indica el sistema de referencia (SRID=4326), el tipo de geometría (MULTIPOLYGON) y un listado con todas las coordenadas que componen esa geometría.

04.format

05.EWKT

Ahora que conocemos las coordenadas de nuestra geometría, podemos utilizar la función de PostGIS St_GeomFromEWKT para insertar esa geometría a nuestra base de datos PostgreSQL/PostGIS. St_GeomFromEWKT recibe como parámetro de entrada una geometría en formato EWKT y retorna un objeto binario de tipo geometry que posteriormente podemos insertar en nuestra base de datos.

Suponiendo que disponemos de una tabla llamada barcelona con una columna geom que contiene datos de tipo geometry, podemos insertar nuestra geometría del siguiente modo:

INSERT INTO barcelona (geom)
VALUES (‘St_GeomFromEWKT (‘SRID=4326;MULTIPOLYGON(((2.0547371 41.4140393……
………..’);

Y si queremos generar la geometría, sin importarla, podemos utilizar la sentencia SQL:

SELECT St_GeomFromEWKT(‘SRID=4326;MULTIPOLYGON(((2.0547371 41.4140393……
………..
‘);

SIGTE
Servicio de Sistemas de Información Geográfica (SIGTE) de la Universitat de Girona


Suscríbete a nuestra newsletter