Importando a PostGis datos de OpenStreetMap con el comando osm2pgsql en Debian

OpenStreetMap es un proyecto cooperativo muy popular que crea mapas en formato libre del mundo. Cada usuario que participa del proyecto puede editar los datos y, al mismo tiempo, es posible bajarlos como archivos .osm (un formato XML) bajo los términos de la licencia ODbL (Open Data Commons Open Database). Para incorporar estos archivos vectoriales a una base PostGis en Debian necesitamos el paquete osm2pgsql que en Debian se instala, como superusuario, con:

apt-get install osm2pgsql

Una vez instalado, ahora necesitamos datos para probar. Vamos a emplear los mismos que se utilizan en el ejemplo del libro ‘PostGIS Cookbook’ (página 34) cuyo link es:

http://www.openstreetmap.org/export?lat=41.88745&lon=12.4899&zoom=15&layers=M

y que nos remite a esta porción del área de Roma (San Giovanni, Appio-Latino, Municipio Roma VII, Rome, Roma Capitale, Lazio, 00183, Italy):

osm1

Sin embargo, ni en Google ni en Firefox funcionó la opción de exportación. Por tanto, voy a bajar la zona correspondiente utilizando el plugin OSMDownloader de QGIS.

osm2

Lo grabé como rome.osm y pesó 11.4 MB. Si lo abren, por ejemplo, con leafpad se darán cuenta que contiene 301.874 líneas de información.

Una vez bajados los datos, hay que crear la base de datos rome (bajo esquema public) y habilitar las extensiones postgis y hstore. Para ello, nos conectamos primero como usuario postgres:

su
********* [password]
su - postgres
psql
postgres=# CREATE DATABASE rome OWNER zeito;
CREATE DATABASE
postgres=# \connect rome
Ahora está conectado a la base de datos «rome» con el usuario «postgres».
rome=#CREATE EXTENSION postgis;
CREATE EXTENSION
rome=# CREATE EXTENSION hstore;
CREATE EXTENSION

Una vez creada la base de datos y las extensiones, nos cambiamos al directorio donde bajamos rome.osm y ejecutamos, esta vez en consola de bash, el comando que sugería el libro ya referido (‘PostGIS Cookbook’):

osm2pgsql -d rome -U zeito --hstore rome.osm

lo que me arrojó este error:

osm2pgsql SVN version 0.86.0 (64bit id space)

Error: Connection to database failed: fe_sendauth: no password supplied

Después de un buen tiempo explorando la razón de por qué no funcionaba, apelé al help del comando (osm2pgsql -h) llegando finalmente a:

osm2pgsql -d rome -W --hstore rome.osm

el cual se ejecutó sin errores.

En QGIS, creé la conexión a la database rome y la cargué en la Map View; siendo este el resultado:

osm3

Observen que en la imagen no se despliega el EPSG pero este corresponde al EPSG:3857, es decir, el sistema de proyección de coordenadas “Spherical Mercator”; anteriormente referido como el ya en desuso EPSG: 900913 (popularizado por Google y luego por OpenStreetMap).

Otro aspecto interesante que propone la ya mencionada bibliografía es la de generar una vista PostGIS extrayendo todos los polígonos ‘tagged’ con ‘trees’ como ‘landcover’. El código sería el siguiente:

rome=# CREATE VIEW rome_trees AS
SELECT way, tags FROM planet_osm_polygon
WHERE (tags -> 'landcover') = 'trees';

Aunque se supone que QGIS soporta “vistas” PostGis y fue creada exitosamente como rome_trees, ésta no pudo visualizarse como capa válida. Sólo pude hacerlo en OpenJUMP; tal como se observa en la imagen siguiente en color verde pálido:

osm4

Esta entrada fue publicada en Debian, Postgres+postgis, SIG, Software Libre. Guarda el enlace permanente.

Una respuesta a Importando a PostGis datos de OpenStreetMap con el comando osm2pgsql en Debian

  1. Ariel E. Fuentes Díaz dijo:

    Dale una mirada a esto: http://www.qgistutorials.com/en/docs/downloading_osm_data.html
    Usa SpatialLITE
    Saludos!

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s