Limites des communes dans Google Maps

Depuis quelques mots Google Maps affiche les limites administratives des communes.
Pour l'instant je n'ai pas trouvé comment les récupérer directement, ce qui serait utile pour les afficher dans un mashup.
Mais bon, avec un esprit tordu, on arrive toujours à ses fins.

Petite mise à jour de janvier 2013 : si vous désirez intégrer un contour dans une carte vous pouvez lire ce billet " Dessiner les limites des communes dans Google Maps. "

Mise à jour de juillet 2015 : pour les utilisateurs d'OpenStreetMap ou pour les développeurs pressés un nouveau tuto est disponible dans ce billet "Limite des communes avec Leaflet et overpass-turbo: version statique"

OpenStreetMap à la rescousse

Les contributeurs d'OSM ont eu la gentillesse de géocoder pas mal de communes de France, et d'ailleurs. Quand on sait que le cadastre est géocodé en Lambert et que les SIG comme Google Maps et OSM n'acceptent que des coordonnées GPS en base 10 (et non pas en Degré/Minute/Seconde, c'est à dire en sexagésinal) on se rend compte du boulot que c'est.

En trainant un peu sur les sites liés à OSM il est possible de récupérer ces données.
Par exemple ici : http://export.openstreetmap.fr/contours-administratifs/
Seul hic, en général il s'agit de fichier du genre *.shp.

Shapefile

Si le shapefile est un format bien documenté, il n'est pas directement utilisable dans Google Maps.
Il faudra donc convertir vers un autre format, de préférence du JSON.

Un SIG, un vrai !

Pour ce travail j'utilise gvSIG.
Vous pouvez le télécharger à cette adresse : http://www.gvsig.org/web/
Vous trouverez ici un tutoriel sur ce logiciel : http://www.geonet.fr/upload/gedit/18/dec_concepts_interface1.1.pdf

Une fois la carte ouverte dans gvSIG il faut transformer les limites de la carte en layer (un claque en bon français). Puis il suffit d'exporter ce layer en KML.
L'opération est assez simple et ne demande pas de réelles compétences dans la gestion d'un SIG.

KML vers JSON

Pourquoi exporter en KML ?

Parce que c'est utilisable dans Google Earth (entre autre), ce qui permet de tester le chemin, et que c'est du XML. Et qui dit XML dit « facile à manipuler ».
Passer du KML ou JSON est une opération toute bête. Dans un éditeur de texte, notepad++ par exemple, il suffit d'effacer les balises XML et de modifier avec l'outil « rechercher-remplacer » la structure des données (points virgules, ajout de parenthèse, etc.).
Il faut toutefois faire attention au premier point de la liste. En effet la latitude de ce point est au début de la liste et la longitude à la fin. Il faudra donc faire une petite opération manuelle pour corriger ça. Vous n'avez plus qu'à vérifier votre fichier est l'affaire est jouée.

JSON ou SQL ?

Une fois la liste nettoyée des balises XML vous avez deux manières de l'utiliser. Soit vous faites des fichiers JSON, soit vous importez les données point par point dans vote base de données.
À l'arriver ça ne fera pas une grosse différence vu que l'api Google Maps utilise JavaScript. La question est juste de savoir si vous êtes meilleurs côté client ou côté serveur.

Conclusion

J'en connais qui vont me dire qu'utiliser des données OSM avec Google Maps est limite stupide. C'est vrai qu'on peut directement utiliser OpenLayer. Mais tant qu'Arles sur Tech ne sera pas correctement géocoder, je crois pas que je ferais le portage. Et puis je suis plutôt fainéant, faut dire.

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

La discussion continue ailleurs

URL de rétrolien : http://blog.philippe-poisse.eu/index.php?trackback/31

Fil des commentaires de ce billet