David's blog

To content | To menu | To search

Open Street Map

Entries feed - Comments feed

Wednesday, March 10 2010

Standing on the shoulders of giants: MapOSMatic in a sea of Free Software

One thing that stroked me after the two hackfests we made to develop MapOSMatic: the little amount of code we really developed! In fact, we are re-using a lot of other Free Software.

Using the excellent sloccount, I tried to get some figures. MapOSMatic is about 3150 lines of code, 90% made of Python. MapOSMatic dependencies count for more than 600,000 lines of code, counting PostgreSQL, PostGIS, Apache 2 httpd, Django framework and some small libraries.[1] So we only developed about 0.5% of the code needed to run the MapOSMatic service. And I obviously do not count the OpenStreetMap data itself, which is about 70 GB!

That's why we can say, as most of software developers, that we are standing on the shoulders of giants: we are re-using knowledge, hard-work and polishing of a lot of other people. MapOSMatic is a glaring example of this fact and of the power of Free Software.

Notes

[1] Counting all MapOSMatic dependencies is nearly impossible: it is hard to draw a line between what is part of the system and what is a specific dependency of MapOSMatic (e.g. Python).

Thursday, September 24 2009

Absences...

Règle n°23 : ne jamais dire qu'on fera un billet tous les jeudis. Rien que de l'annoncer est suffisant pour ne jamais le faire.

Sinon, le projet dont je parlais dans mon précédent billet a été largement diffusé (avec même un petit article dans SVM), c'est MapOSMatic. C'est un générateur automatique de plans de ville à partir des données libres d'OpenStreetMap. Vous donnez le nom de votre ville est zoouuu vous avez un joli plan avec l'index des rues.

La version actuelle est une première version, on a encore une foule de bugs et de choses à améliorer. Mais les premiers retours sont très positifs : ça fait plaisir ! :-)

Sinon, côté activité libriste sur la région, je suis actif dans plusieurs projets :

Ceci explique peut-être cela. ;-)

Thursday, July 2 2009

Quelques rues et quartiers de plus dans Saint-Grégoire, Ille-et-Vilaine

Encore un dimanche de cartographie, ce coup-ci sur Saint-Grégoire, commune au nord de Rennes. Le côté à l'ouest de la rue du Général de Gaulle est bien cartographiée mais bizarrement pas la partie à l'est. J'ai essayé d'y remédier. :-)

L'inévitable comparaison avant :

Saint Grégoire, avant cartographie du 2009-06-28

Et après :

Saint-Grégoire, après cartographie du 2009-06-28

J'ai notamment ajouté deux quartiers au nord-est, juste avant la D29. Le deuxième quartier à droite vient juste d'être construit, ça m'étonnerait qu'il soit sur les autres cartes ! ;-)

J'ai quelques incertitudes sur le centre ville, il y aura peut-être quelques corrections mineures à faire.

Monday, June 22 2009

OpenStreetMap : et hop quelques routes de plus sur Fougères et Lécousse !

Un de ces récents dimanches, j'ai cartographié quelques routes de plus sur Fougères et Lécousse pour le projet de cartographie Libre OpenStreetMap. Fougères est maintenant quasiment terminée grâce à l'énorme travail de Jean-Philippe. Pour Lécousse, il y a encore un peu de boulot. :-) Je ne me suis concentré que sur les routes des quartiers résidentiels, mais il y a énormément de petits chemins que l'on peut prendre à pied ou à vélo.

L'inévitable avant : Fougères et Lécousse avant et après: Fougères et Lécousse après

Et un zoom plus centré sur les rues ajoutées : Fougères et Lécousse après (zoom)

Il n'y a pas à dire, passer de l'état « carte blanche » à l'état « carte avec des rues nommées » fait énormément plaisir. Sans compter que la carte ainsi créée est de meilleur qualité que Google Maps car on se base sur des infos de terrain et pas une cartographie des routes par reconnaissance d'image et import d'informations non vérifiées. ;-)

Monday, June 1 2009

Faire une carte pour un GPS Garmin eTrex à partir d'Open Street Map

Ce billet est sous licence Art Libre 1.3, mauvaise illustration comprise.

Carte OSM sur un Garmin eTrex Les GPS Garmin (comme par exemple le eTrex Legend HCx que possède Gulliver) utilisent un format de carte propriétaire. Mais il est néanmoins possible de charger une carte générée à partir des données d'Open Street Map alias OSM (donc libre !) sur le Garmin.

À la louche, la création d'une telle carte se fait en deux étapes : découper les données de france.osm en plusieurs morceaux grâce au programme libre splitter puis générer par mkgmap (libre aussi) la carte au format Garmin à partir de ces morceaux.

En premier lieu, on crée la structure de répertoires pour stocker les données générées :

 $ mkdir splitted-osm && mkdir garmin-maps

splitted-osm/ contiendra les morceaux de données OSM de la France et garmin-maps/ contiendra la carte générée au format Garmin.

On récupère les données OSM de la France[1] :

 $ wget http://download.geofabrik.de/osm/europe/france.osm.bz2

On découpe ce gros fichiers france.osm en plusieurs fichiers plus petits en utilisant le programme libre splitter :

 $ wget http://www.mkgmap.org.uk/splitter/splitter.jar
 $ cd splitted-osm/
 $ java -Xmx2G -jar ../splitter.jar ../france.osm.bz2
 $ cd ..

L'option -Xmx2G permet d'utiliser une taille de pile plus important (2 Go) pour la machine virtuelle Java. Vous pouvez essayer avec une taille moins importante (-Xmx1G ou -Xmx512m) et passer à une taille supérieure si vous avez une exception java.lang.OutOfMemoryError: Java heap space.

On récupère ensuite la dernière version de mkgmap et on l'utilise pour créer la carte au format Garmin :

 $ wget http://www.mkgmap.org.uk/snapshots/mkgmap-r1051.tar.gz
 $ tar zxf mkgmap-r1051.tar.gz
 $ cd garmin-maps/
 $ java -Xmx2G -jar ../mkgmap-r1051/mkgmap.jar --gmapsupp --latin1 --net ../splitted-osm/*.osm.gz

Les options utilisées :

  • --gmapsupp : on génère le fichier gmapsupp.img qui résume tous les morceaux de carte générés ;
  • --latin1 : encodage des caractères au format Latin1 pour pouvoir afficher les accents ;
  • --net : on génère une carte routable qui permette au GPS d'indiquer une route[2].

Et voilà ! Il ne reste plus qu'à transférer toutes les données du répertoire garmin-maps/ (63240001.img, gmapsupp.img, ...) dans le répertoire Garmin/ (à créer si nécessaire) du GPS Garmin monté on USB Mass Storage ou sur sa carte mémoire micro-SD mise dans un lecteur.

Mais si vous ne voulez pas vous fatiguer, des cartes toutes faites sont disponibles ici : http://fredericbonifas.free.fr/osm/....

Liens utiles utilisés pour écrire ce billet :

Dernière minute : on m'a soufflé à l'oreille que GroundTruth est un autre programme intéressant pour générer des cartes Garmin. Je suis preneur de retours. :-)

Notes

[1] Ne pas utiliser les données d'hexagone.openstreetmap.fr qui sont invalides !

[2] Mise à jour 2009-06-29 : j'ai testé et ça marche.

Monday, March 30 2009

Convertir une URL Google Maps en Open Street Map

Xavier a déjà fait un billet dessus mais tant pis ! J'ai fait un petit script PHP pour convertir une URL de Google Maps en URL Open Street Map (source libre).

Mais après avoir montré le code sur la liste talk-fr d'openstreetmap, on m'a suggéré de faire la même chose en bookmarlet. Grâce à l'aide de Yann Coupin, c'est maintenant chose faite et disponible sur la même page que le script, idem pour le source.

Au passage, ça m'a permis d'apprendre ce qu'est un bookmarklet : c'est un bout de JavaScript qu'on stocke dans ses Marque-pages et qui fait des transformations sur la page courante lorsque on le sélectionne. Amusant. Maintenant je pourrais presque passer pour un pro du Web 2.0, presque... :-)

Et au passage, c'est un micro-exemple du travail en logiciel libre : quelqu'un fait une proposition, quelqu'un d'autre arrive et propose une extension auquel il n'avait pas pensé au départ, voir même propose un morceau de code. On construit beaucoup mieux en coopérant !