Edición OpenStreetMap offline

Durante mis viajes con Argentina en Python una de las cosas que me gusta hacer es colaborar con la comunidad de OpenStreetMap. Siento que esto es bastante útil ya que estoy todos los días en movimiento y visitando lugares que, en su mayoría, no está correctamente mapeados o falta información.

Sin embargo, en la mayoría de los casos, la cantidad de información que tiene los mapas de OpenStreetMap es la mejor que tenemos disponible hoy en día. Incluso, mejor que Google Maps. Como todo, no es perfecto y siempre encuentro algo que falta: en mayor o menor medida.

Utilizo mucho osmtracker para realizar mis trazas GPS y añadir puntos a estas trazas. Luego, las importo en JOSM, las corrijo, las adapto y las subo a OSM.

El problema

Uno de los problemas que tengo con esto es que siempre necesito estar OnLine para hacer mis ediciones ya que, primero, necesito bajar la zona del mapa en la que necesito laburar. Eso es algo que no tiene ningún problema en realidad, pero para mí sí lo es. Esto es porque muchas veces no tengo internet (ya que suelo estar en lugares donde no es tan accesible) y, cuando tengo internet, necesito hacer otras cosas.

Entonces, la mayoría de las veces que tengo tiempo disponible para colaborar con OpenStreetMap es cuando no tengo internet.

Hoy, en la Python Paraguay #1 Meetup aprendí a cortar los mapas de OSM en pedazos utilizando osmconvert y aproveché ese conocimiento que adquirí para resolver este problema.

La solución

Básicamente lo que hago es, cuando tengo internet:

  1. Bajo los mapas de Latino América del mirror geofabrik

    wget -c http://download.geofabrik.de/south-america-latest.osm.pbf
    
  2. Descargo el archivo .poly del país en el que me interesa trabajar utilizando esta web: http://polygons.openstreetmap.fr/


Cuando no tengo internet:

  1. Abro el archivo .poly con JOSM.

    visualizar-poly.thumbnail.jpg

    paraguay.poly abierto en JOSM

  2. Creo una capa nueva.

  3. Dibujo un cuadrado con la herramienta "Dibujar nodos (A)" cubriendo la zona en la que me interesa trabajar dentro de ese país.

    zona-a-trabajar.thumbnail.jpg

    Cuadrado dibujado para trabajar offline en esa zona

  4. Guardo esa capa como .poly

  5. Utilizo osmconvert para recortar el mapa de South America utilizando el archivo de polígonos que acabo de crear:

    ./osmconvert \
           south-america.osm.pbf \
           -B=paraguay.poly \
           --out-osm \
           -o=south-america-my_region.osm
    
  6. Abro el archivo south-america-my_region.osm desde el JOSM y trabajo offline con los GPX que guardé con osmtracker.

    zona-offline.thumbnail.jpg

    Zona para trabajar offline (recortada del archivo de mi pc -sin conexión)

  7. Una vez finalizado el trabajo, lo guardo.


Cuando vuelvo a tener internet:

  1. Abro con JOSM el archivo que guardé.
  2. Voy a Archivo -> Actualizar Datos (Control + U)
  3. Subo los datos de la capa que agregué yo

Los agradecimientos

Esto me permite trabajar cómodo desde cualquier lado y offline sin preocuparme si voy a tener internet o no cuando llegue a un lugar donde esté cómodo y pueda trabajar tranquilo escuchando música y tomando mates :)

Por favor, dejá un comentario con feedback sobre los pro- y cons- de esta forma de trabajo y otras alternativas en caso de que conozcas.

Gracias a @51114u9, a @proyectosbeta por el apoyo de siempre en todo lo referido a OpenStreetMap y a toda la comunidad de @PythonParaguay ya que esta idea salió en la Meetup de hoy ;)

Comentarios

Comments powered by Disqus