Jour 15 – Données pour un tableur

Il est souvent utile de pouvoir exporter les données pour les utiliser dans un tableur. Overpass permet de produire le résultat au format CSV : chaque élément est exporté sur une ligne dont les tags sont séparées par une virgule (ou un autre séparateur). Le résultat n'est évidemment pas visible sur la carte mais dans l'onglet Données.

Exporter au format CSV se définit dans l'entête de la requête, avec la syntaxe [out:csv(<colonnes>], où <colonnes> énumère les tags à exporter, séparés par une virgule. Cet exemple produit la liste de tous les commerces de Montrouge portant le tag “opening_hours:covid19”

[out:csv(shop, name, "opening_hours:covid19")];
area[admin_level=8][name="Montrouge"];
nwr[shop]["opening_hours:covid19"](area);
out;

Notez que la présence d'un double-point dans la clef opening_hours:covid19 exige de l'entourer de simple ou double-quotes.

Vous ne connaissez pas le tag opening_hours:covid19 ? Allez voir la carte des lieux ouverts pendant le confinement, un beau projet initié par le groupe OSM de Montrouge : https://www.caresteouvert.fr/

Il est également possible d'exporter les coordonnées géographiques en utilisant les marqueurs ::lat et ::lon. Ceux-ci ne sont disponibles que pour les nodes, mais il est possible de les utiliser pour les ways et relations, en utilisant l'option d'export out center, qui produit un point à partir d'une ligne ou d'un polygone – attention ce point n'est pas garanti de se trouver à l'intérieur du polygone ou sur la ligne dont il est issu.

[out:csv(shop, name, "opening_hours:covid19", ::lat, ::lon)];
area[admin_level=8][name="Montrouge"];
nwr[shop]["opening_hours:covid19"](area);
out center;

Le séparateur par défaut est la tabulation. Il est possible de définir le séparateur en ajoutant après la liste des clefs un point-virgule (et non plus une virgule qui sépare chaque clef), suivi d'un booléen qui contrôle l'export des noms de colonnes en première ligne, puis du séparateur après un autre point-virgule. Exemple :

[out:csv(shop, name, "opening_hours:covid19", ::lat, ::lon; true; ";")];

Remarquez que si la valeur d'un tag contient le séparateur (ce qui est courant avec le point-virgule, séparateur de valeurs pour les tags OSM), cette valeur est placée entre double-quotes.

À condition d'utiliser l'option d'export out meta, il est également possible d'exporter certaines méta-données :

::version → version de l'objet OSM

::timestamp → date et heure de la dernière modification

::user → contributeur ayant fait cette modification

::type → type de l'objet (node, way ou relation)

::id → identifiant OSM de l'objet

La requête ci-dessous utilise une partie de ces options :

[out:csv(
shop, name, "opening_hours:covid19", ::lat, ::lon,
::user, ::version, ::timestamp; true; ";")];
area[admin_level=8][name="Montrouge"];
nwr[shop]["opening_hours:covid19"](area);
out center meta;

© CC-by-sa Carto’Cité