Bonjour, Un petit retour d'expérience sur un exercice pratique auquel je me suis livré : Récupérer les limites des 24 communes de l'agglomération nantaise le plus _ rapidement, _ proprement (pas de noeuds ni de limites importées deux fois) _ et simplement (pas de recours à une base postgis perso par ex.) possible.
Je me suis tourné vers l'Overpass API [1] qui a pour avantage d'être rapide, à jour et qui ne craint pas les requêtes lourdes. Il y a un minuteur de sécurité sur les requêtes qui satureraient le système. Un script qui prend plus de 3 minutes est stoppé. On peut l'interroger par le biais d'un script, même assez long,ce qui s'est révélé très pratique. Le script peut être collé dans une interface sur le web [2] ou bien enregistré dans un fichier texte (portant l'extension .osm3s) dont le contenu sera envoyé vers le serveur par une ligne de commande [3] Pour mon exercice, je me suis orienté sur une recherche des limites en ciblant la référence insee incluse dans chacune des relations [4], et en indiquant une bbox pour préciser un peu la zone géographique de la recherche. Pour une commune seule (ici Nantes), la requête est comme suit : <union> * <query type="relation"> * <bbox-query s="47.0" n="47.5" w="-2.0" e="-1.5"/> * <has-kv k="ref:INSEE" v="44109"/> * </query> * <recurse type="relation-node" into="nodes"/> * <recurse type="relation-way"/> * <recurse type="way-node"/> </union> <print mode="meta"/> Il est possible de faire soi-même la longue requête en faisant des copier coller des lignes marquées d'un * et en y modifiant pour chaque bloc le code insee. C'est jouable, mais pas vraiment top. J'ai demandé à Roland Ollbricht (qui développe l'outil) s'il y avait moyen de faire plus simple. Il m'a proposé de faire un script bash. [N'étant pas un dieu sous linux, je ne savais pas que l'on pouvait y faire des boucles] Résultat, le fichier .sh en pièce jointe, où l'on retrouve en bloc tous les codes INSEE. Une fois exécuté, il renvoie le fichier insee.osm3s (pièce jointe) Ne reste plus qu'à faire la requête en [3] et on obtient le fichier .osm qui s'ouvre nickel dans JOSM Le fichier .sh est à ajuster pour changer les bbox si l'on s'intéresse à une autre zone. On peut aussi changer la formulation de la boucle. Par exemple, pour un département qui est au complet niveau des limites administratives on peut faire incrémenter le code insee par pas de 1 du premier au dernier code commune du département et récupérer les limites d'un département au grand complet. Comme je trouve la démarche assez sympathique, je me permets de la partager ici ! ------------- [1] http://wiki.openstreetmap.org/wiki/Overpass_API [2] http://www.overpass-api.de/query_form.html http://overpass.osm.rambler.ru/query_form.html [3] Pour un script dans le fichier insee.osm3s & une sortie dans le fichier insee.osm.xml wget --post-file=insee.osm3s -O insee.osm.xml " http://overpass-api.de/api/interpreter" [4] les codes INSEE des 24 communes de Nantes Métropole sont 44009 44018 44020 44024 44026 44047 44074 44035 44101 44120 44198 44094 44109 44114 44143 44150 44172 44166 44171 44194 44162 44190 44204 44215 -- ab_fab <http://wiki.openstreetmap.org/wiki/User:Ab_fab> "Il n'y a pas de pas perdus"
get_admin_bnd.sh
Description: Bourne shell script
_______________________________________________ Talk-fr mailing list [email protected] http://lists.openstreetmap.org/listinfo/talk-fr

