Mégalithes : overpass > umap

Bonjour,

Histoire d’approfondir mes connaissances sur OSM et ses utilisations dérivées, je tente la création d’une carte Umap des Mégalithes (Dolmens, menhirs, …) de France.
Voici ce que ça donne pour l’instant :
http://umap.openstreetmap.fr/fr/map/megalithes-en-france_28896

J’ai d’abord créé une requête Overpass-turbo :

[out:xml][timeout:50];
{{geocodeArea:france}}->.searchArea;
(
  node["site_type"="megalith"](area.searchArea);
  way["site_type"="megalith"](area.searchArea);
  relation["site_type"="megalith"](area.searchArea);
);
out body;
>;
out skel qt;

Puis j’ai chargé un calque dynamique dans OSM à partir de cette requête.
http://overpass-api.de/api/interpreter?data=[out%3Axml][timeout%3A50]%3B area(3602202162)->.searchArea%3B ( %20%20node[“site_type”%3D"megalith"](area.searchArea)%3B %20%20way[“site_type”%3D"megalith"](area.searchArea)%3B %20%20relation[“site_type”%3D"megalith"](area.searchArea)%3B )%3B out%20body%3B >%3B out%20skel%20qt%3B

Je me demande s’il n’y aurai pas des optimisations à faire pour que ce soit moins long à charger : avez-vous des conseils à me donner au niveau performances ?

Sinon, pour être encore plus efficace, cette carte pourrait symboliser de manière différente les Dolmens (megalith_type=dolmen), les Menhirs (megalith_type=menhir), … Pensez-vous qu’il vaut mieux :

  • créer un calque pour chaque type, et donc une requête Overpass dédiée à chaque calque ?
  • créer dans une seule requête une mise en forme des données ? (et est-ce que Umap pourra la prendre en compte ?)

Enfin, lorsque l’on clic sur un mégalith dans Umap, on a le nom de la couche, et non les Tags du Mégalith. Est-il possible de modifier ce comportement ?
[edit] en fait, je me rends compte que ça le fait bien déjà pour une majorité de mégalithes, mais pas sur tous (certainement ceux qui n’ont pas de name). Dans l’idéal, il serait intéressant d’afficher d’autres tags (tous?) dans l’info-bulle : c’est possible ? [/edit]

Merci à vous, et bravo à la communauté qui permet de rendre ce genre de réalisations possibles !

Sylvain M.

Retire les conditions sur la surface {{geocodeArea:france}}->.searchArea; et tente d’utiliser l’api sur la france uniquement :

https://wiki.openstreetmap.org/wiki/FR:Servers/api.openstreetmap.fr#Pour_la_France_seulement

Bonjour,
J’ai essayer de regarder http://oapi-fr.openstreetmap.fr/ mais je ne comprends pas trop comment y écrire mes requêtes overpass. :blush:
D’ailleurs, quelle que soit les requêtes d’exemples de cette page, j’obtiens des messages d’erreurs… Par exemple :

Sinon, j’ai regardé du côté du style (map css) directement dans la requête, avec :

{{style:
  node, way relation {
    symbol_size:2; icon-image: url('http://url/megalith.png'); icon-width: 18; text: name;
  }
node[megalith_type=dolmen]
{ symbol_size:4; icon-image: url('http://url/dolmen.png'); icon-width: 24; }
}}

Ca fonctionne bien sur Overpass, et je parviens bien à styliser les dolmens, les menhirs, …, mais cela n’est pas conservé lors de l’appel depuis Umap.
Voyez-vous une autre solution, ou dois-je faire une requête par “sous-type” / picto, comme autant de couches Umap ?

Merci à vous.

Sylvain M.

je rajoute une petite question concernant les tags des mégalithes.
En regardant un peu plus les données, je constate une vraisemblable erreur : l’usage de “megalith_site=?” au lieu de “megalith_type=?” (d’après le Wiki).
Cela pourrait-il faire l’objet d’une correction automatique ? (osmose ?)

Sylvain M.

Le plus simple a mon avis, c’est de retourner sur overpass turbo, puis paramètres puis Serveur : http://oapi-fr.openstreetmap.fr/oapi/
et regénérer ta requête, mais sans le area


ps: pour l’autre question umap, ouvre un nouveau sujet, ça sera plus claire à lire
ps: pour l’autre question de comment tagguer, peux-tu déplacer ta question sur http://forum.openstreetmap.fr/viewforum.php?f=2

Le plus simple a mon avis, c’est de retourner sur overpass turbo, puis paramètres puis Serveur : > http://oapi-fr.openstreetmap.fr/oapi/

Super : encore une fonctionnalité d’overpass-turbo que je ne connaissais pas ! :sunglasses:
Bon, par contre la requête n’est vraiment pas plus rapide… :cry:
Peut-être lié au nombre important d’objets à retourner (3226 nœuds, 30 ways) ?

Effectivement, je vais ouvrir un sujet dédié sur Umap, et un sur la “tagologie” des mégalithes !

Merci.

Sylvain M.

Ouais, je vois ça, j’obtiens entre 15 et 25 secondes sur l’api que j’ai indiqué.
Pas extraordinaire.

Après, bon, si tu fais cette requête en automatique et une fois par jour (ça ne change pas si souvent les menhirs !) c’est largement acceptable il me semble.

Ce qui m’amène donc à penser que :

  1. tu n’utilises pas umap de la meilleure façon (le plus probable, désolé :wink: )
    ou
  2. umap devrait fournir une option de “mise en cache” optionnelle quand les données sont longues à récupérer
  3. devrait permettre un appel limité en surface en passant un paramètre bbox par exemple

Ne connaissant pas umap mais étant magnanime, je suis aller lire la documentation pour toi (humour, blague, tout ça !), que chacun pourra trouver ici :
http://wiki.openstreetmap.org/wiki/UMap dans la section “tutoriels”

Et tu peux soit faire 2) par pré-téléchargement du fichier et le donner à umap (quitte à le remettre à jour de temps en temps) : http://wiki.openstreetmap.org/wiki/FR:UMap/Guide#Importer_des_donn.C3.A9es
Soit faire 3) en suivant ce guide : http://www.mappa-mercia.org/2014/09/creating-an-always-up-to-date-map.html qui explique comment faire que umap indique la zone d’intérêt à l’api overpass.
Cette solution ayant l’avantage de pouvoir complètement se passer de la restriction “en france seulement” vu que c’est la zone que l’on affiche qui sera prioritaire.

Bonne lecture !

  1. tu n’utilises pas umap de la meilleure façon (le plus probable, désolé > :wink: > )

Ne sois pas désolé, je ne demande qu’à apprendre ! :sunglasses:

  1. umap devrait fournir une option de “mise en cache” optionnelle quand les données sont longues à récupérer

Effectivement, car dans mon cas, une mise à jour quotidienne (voire hebdomadaire) serait largement suffisante.
Malheureusement, je n’ai que 2 options : dynamique ou pas… Ce serait bien d’ajouter une option intermédiaire : “fréquence d’actualisation de la requête”, histoire de ne pas trop surcharger les serveurs.

  1. devrait permettre un appel limité en surface en passant un paramètre bbox par exemple

Quel intérêt y aurait-il à ce que la surface soit limitée par Umap plutôt que par Overpass ?
Car, à mon avis, ce sera aussi long dans tous les cas (je testerai quand même, au cas où).

je suis aller lire la documentation pour toi (humour, blague, tout ça !)

Tu as raison, c’est toujours mieux de remonter au sources, mais j’avoue que j’ai plus de facilités à discuter en Français qu’explorer des ressources en Anglais (ce que je vais faire cependant). Et je me dis que discuter en Français de ce cas pratique peut aussi donner des idées à d’autres débutants francophones comme moi (c’est en lisant les discussions ici que je découvre toutes ces fonctionnalités).
Par ailleurs, la documentation officielle (http://wiki.openstreetmap.org/wiki/UMap/Guide) est encore très lacunaire. Sauf erreur, pas d’infos sur les couches dynamiques…

Donc, pour conclure, dans mon cas précis, il faudrait que je trouve un endroit pour stocker le résultat de ma requête Umap, et un outil pour lancer cette requête de manière périodique. Créer une instance OverPass serait certainement la solution, mais ce n’est clairement pas encore dans mes compétences ! :frowning: D’autres solutions selon vous ? (et pour l’option de la périodicité de MAJ sur Umap, si les dévellopeurs de ce SUPER outil sont là, ont-ils un avis sur l’intérêt ?)

Sylvain M.

J’ai pas tester, donc je te laisse essayer, mais à mon avis, tu va être surpris :wink:
Toute l’idée c’est que umap ne demandera des données que sur la zone affichable, alors certes, si tu regardes la terre entière, ça va être maxi long, mais si tu zoom sur un petit bout de terrain, la demande ne récupérera que les objets visible donc qu’une fraction de tout ce qu’il y a sur la terre !

Un point pour toi :wink: Il y a en effet tellement de fonctionnalités de partout que associer entre elles celles qui arrivent au résultat que lire les docs prend un temps des ordres de grandeur plus long qu’a un type comme moi qui a en tête un tiers des outils existants.
(google n’a pas encore la capacité de surpasser le cerveau humain dans ces cas et c’est tant mieux ! :wink: )
Mais bon, tu y étais tellement à un cheveu avec umap + overpass que je me suis dis, il aurait lu la page du wiki d’umap, la réponse était à portée.

Toute l’idée c’est que umap ne demandera des données que sur la zone affichable, alors certes, si tu regardes la terre entière, ça va être maxi long, mais si tu zoom sur un petit bout de terrain, la demande ne récupérera que les objets visible donc qu’une fraction de tout ce qu’il y a sur la terre !

Oui, mais l’objectif de cette carte* c’est de se charger sur la France entière (3226 nœuds, 30 ways), donc que la “bbox” soit demandée par la requête overpass, ou par Umap, ça doit arriver au même résultat, non ?
(si je chargeais la carte sur un secteur limité, un département par exemple, ça irait plus vite, soit. Mais ce n’est pas l’objectif recherché !)

Un point pour toi

On ne compte pas les points : c’est juste pour le fun ! c’est une partie d’entraînement ! :wink: Un échauffement !

Sylvain M.

  • qui est, je le rappelle, un cas de mise en situation pratique (TP) pour moi (même si je m’intéresse aussi aux mégalithes quand même), pas lié à un projet “réel” (mais dont les ressources me serviront sur différents projets tant pro que perso).

A ce stade, le mieux, c’est que tu essayes :wink: !

le mieux, c’est que tu essayes > :wink: > !

sécekejefè ! :wink:

http://umap.openstreetmap.fr/fr/map/megalithes-en-france-v2_28922
[je t’ai normalement ajouté en tant qu’éditeur, si tu le souhaites]

Mais je dois louper quelque chose là… :blush:

je sais pas où on édite umap, mais je peux quand même voir quel est le problème sans ça.

Je regarde dans ma boule de cristal, et… le problème c’est que tu bosses sur un ordinateur Apple !
Big brother voit tout !!

Bon, trêve de blagues, la méthode pour débugger est la suivante :
Je suis sous firefox, la demande au serveur “en erreur” m’étant inconnue, j’utilise la touche F12 (ça existe aussi sous chrome je crois) et ça m’indique dans “réseau” tous les appels réseau qui sont fait, je vois la requête en erreur, je la récupère (bouton droit, copier la requête) je la lance dans un nouvel onglet, et j’obtiens plein d’infos utiles :
Avec des de trucs comme ça :

Error: line 1: parse error: Key expected - '�' found.

Quelque part, dans la requête il s’attend à un tiret et il trouve un machin bizarre en forme de point d’interrogation sur fond noir.
Avec un peu d’habitude, je devine qu’un caractère ne lui convient pas et mal formé, ou un autre truc bizarre, j’essaye un par les [ les = les ( les ; les é bref, tout ce qui pourrait sortir des lettres et des chiffres pour voir si ça change quelque chose, et quand je fini par retirer un double guillemet, le nombre d’erreur diminue de 1 : bingo
le " que tu as tapé ou copié sont des guillemets qu’il n’apprécie pas, tentes de les remplacer par celui-là : "

J’ai fait le troll anti-apple car j’ai déjà vu ça quelque part, des guillemets remplacés par les guillemets français, qui, s’ils sont bien pour une typo ne vont pas à un soft de geek

Ok, je vais chercher les guillemets qui sont mal convertis dans ma requête !
Pour info, cependant :

  • je ne suis pas sur Apple (je suis sur un PC Windows 7)
  • je suis sur FireFox moi aussi
    Le mauvais formatage des caractères doit se passer au moment du copier/coller dans mon éditeur de texte… :question:
    J’essaierai de corriger ça demain, là je dois partir !

Bonne soirée, et merci pour tes recherches !

Sylvain M.

Salut à tous,

Je reviens ici, car j’ai (un peu) avancé sur cet exercice Umap (merci Yohan et Vincent sur BitBucket :wink: ).
Voici la carte actuelle : http://u.osmfr.org/m/37584/ (ça va me servir pour une démo au Parc naturel régional).

Je reviens ici pour de l’aide sur une petite amélioration que je souhaiterais apporter.
J’ai un layer issu de requête pour chaque type de Mégalith (Dolmen et Menhirs pour l’instant).
Je souhaiterai ajouter un layer pour les “autres types de mégaliths”, à savoir “site_type”=“megalith” & “megalith_type” absent ou différent de “dolmen” ou “menhir”.

Pour megalith_type absent, j’ai trouvé : [“megalith_type”!~"."]
http://overpass-turbo.eu/s/8YM

Mais je n’arrive pas à ajouter à cette requête les mégalithes qui ne sont ni dolmens, ni menhirs.
C’est à dire, gérer les “ET” et “OU” dans une même requête.

C’est possible selon vous ?

Merci d’avance !

Sylvain M.

C’est bon, j’ai finalement trouvé !
Si ça intéresse quelqu’un :
http://overpass-turbo.eu/s/8Z5

["site_type"="megalith"]["megalith_type"!~"dolmen|menhir"]

Ce qui est intéressant, c’est que “différent de dolmen ou menhir” renvoie aussi les objets qui n’ont pas la sous-clé “megalith_type”.
Ya plus qu’à !
A+

Sylvain M.

Merci,je vais l’essayer.