Une carte des caméras de vidéosurveillance avec overpass-turbo

Suite à une petite discussion autour des caméras de vidéosurveillance, je me suis aperçu que je n’ai écrit qu’un seul tutoriel sur overpass-turbo. Pourtant cette API est particulièrement utile pour récupérer des données, notamment au format GeoJSON.
Donc, histoire de passer le temps intelligemment, j’ai écrit le petit billet suivant. En espérant qu’il soit utile à autre chose que le référencement du blog.

Utiliser l’assistant pour se simplifier la vie

L’assistant d’overpass-turbo – cliquer pour agrandir

Le but de la démarche est de récupérer les données concernant les caméras de vidéosurveillance installées dans la ville de Saint-Denis.
Quand on est développeur on est fainéant, c’est la soft skill de base d’ailleurs, donc on va utiliser l’assistant pour écrire la requête.

La requête est tout simplement : man_made=surveillance in Saint-Denis
La liste des tags disponibles se trouve sur le wiki d’OpenStreetMap, je vous invite à aller y faire un tour. Selon vos besoins vous pourrez utiliser d’autres tags, notamment pour affiner la recherche.
Pour la localisation il suffit d’utiliser le mot-clé « in » et de préciser le nom de la zone recherchée.

Une fois la requête saisie, cliquer « construire et exécuter la requête » pour obtenir les données.

Analyse de la requête de base

Première version de la requête – cliquer pour agrandir

Overpass-turbo a généré et exécuté la requête suivante :

[out:json][timeout:25];
// fetch area “Saint-Denis” to search in
{{geocodeArea:Saint-Denis}}->.searchArea;
// gather results
nwr["man_made"="surveillance"](area.searchArea);
// print results
out geom;

La requête est assez simple.
La première ligne indique que les données sont encodées via JSON (ce qui permet d’avoir un fichier GeoJSON).
«  geocodeArea:Saint-Denis » indique que la recherche est réalisée à Saint-Denis. Pour une autre ville il suffira de modifier cette ligne.
« nwr["man_made"="surveillance"](area.searchArea); » correspond à la recherche en elle-même.
La dernière ligne exécute la requête et renvoie les données.

Il s’agit d’une requête très simple et facilement réutilisable.

Gestion des géométries

Version définitive de la requête – cliquer pour agrandir

Si vous regardez en bas à droite de votre écran, vous noterez que le nombre d’objets chargés et affichés est indiqué.
Les objets sont classés par géométrie. Pour les caméras la géométrie à utiliser est « node ».
Si votre requête charge, et affiche, d’autres géométries il va falloir modifier la requête pour filtrer les données.

Dans la ligne « nwr["man_made"="surveillance"](area.searchArea); » il suffit de modifier le « nwr ». En effet, ce paramètre sert à indiquer le type de géométrie qui doit être chargé. Dans le cas présent toutes les géométries (node, way, relation) doivent être chargées.
La ligne doit simplement être réécrite de cette manière :
« node["man_made"="surveillance"](area.searchArea); »

Après avoir exécuté une nouvelle fois la requête, vous pourrez remarquer que seul les nodes ont été chargés.

GeoJSON

Arrivé à ce stade, la requête a été parfaitement exécutée et les données sont chargées et affichées.
Pour les récupérer il existe deux méthodes.
Soit vous cliquez sur le bouton « données », en haut à droite. Les données s’afficheront et vous pourrez les vérifier et les copier.
Soit vous cliquez sur le bouton « exporter ». Vous pourrez choisir différents formats de fichier en fonction de vos besoins.
Une fois exporté, le fichier GeoJSON sera parfaitement utilisable dans une application , Web notamment, ou avec un logiciel comme QGIS.

Trucs et astuces

Un vrai professionnel ce n’est pas juste une grosse faignasse qui vous pompe jusqu’à l’os avec un tarif journalier à 500 €, plus les frais. C’est aussi un gars qui connaît plein de tours de passe-passe pour survivre dans la jungle de l’entreprise.
Une fois votre requête fonctionnelle pensez à la sauvegarder proprement, en lui donnant un nom explicite. N’hésitez pas à écrire des commentaires pour expliquer le fonctionnement de votre requête, en commençant chaque ligne par des //. Dans six mois vous aurez oublié le sens de la requête et son fonctionnement, donc autant être prévoyant.
Et, petit bonus, parce que je vous aime bien, quand on se renverse une tasse de café dessus, on ne doit jamais se laver à l’eau chaude. Parce que comme dit l’adage : « café bouillu, chemise blanche 100 % coton à 200 balles foutue ! ».

Sur ce, je vous laisse avec un petit peu de musique.

Liens

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/344

Fil des commentaires de ce billet