Tous les chemins, types de chemins et curiosités de cette application proviennent d’OpenStreetMap. Nous en calculons nos propres valeurs — le bruit, la verdure et l’intérêt le long d’un chemin — et nous en découpons les tuiles de la carte. Les deux sont des bases de données dérivées au sens de l’Open Database License. Nos valeurs vivent dans des bases séparées et ne sont reliées à OpenStreetMap que par le numéro du chemin. La licence exige que nous publiions la méthode (section 4.6b). Elle est décrite comme suit.
Chaque objet OSM portant un attribut highway — y compris les routes bruyantes elles-mêmes. Tout est calculé en mètres. Nous moyennons aussi les mêmes valeurs sur une grille grossière de 0,0028 degré de côté, pour les questions qui ne concernent aucun chemin en particulier.
À partir des surfaces d'OpenStreetMap, nous formons cinq catégories. Forêt : landuse=forest, natural=wood. Espace ouvert : farmland, meadow, orchard, vineyard, grass, allotments, grassland, heath, scrub, wetland, beach. Zone bâtie : residential, industrial, commercial, retail, garages, construction. Verdure urbaine : park, golf_course, common, recreation_ground, dog_park, cemetery, village_green, grave_yard, plus garden uniquement avec un accès public explicite. Aire protégée : nature_reserve, national_park. La valeur par catégorie est la part de la longueur du chemin située dans de telles surfaces.
Les routes comptent comme sources de bruit, avec une portée supposée : autoroute 1000 m, voie rapide 800 m, route nationale 500 m, route départementale 300 m ; en outre aérodromes 2000 m (seulement les sites d'au moins 1 km²), circuits de sports mécaniques 1500 m, stands de tir 1500 m, carrières 500 m. Les tunnels ne comptent pas. Les voies ferrées ne comptent pas — les trains passent rarement. La valeur décroît de façon quadratique avec la distance : 100 × (1 − distance / portée)². La forêt entre la source et le chemin atténue : chaque mètre de forêt sur la ligne de visée compte comme trois mètres de distance. Le calcul porte sur les quatre sources les plus proches de chaque chemin ; la plus sévère l'emporte. Nous déterminons aussi cette valeur par tronçon — d'où l'indicateur « plus longue section bruyante d'un seul tenant ». La valeur « eau » se calcule de la même manière, mais linéairement : rivières et canaux 100 m, lacs 100 m à partir de 10 000 m² de surface, ruisseaux 50 m.
Les nœuds et surfaces d’OpenStreetMap sont sélectionnés selon les valeurs de tourism, historic, natural, waterway et amenity indiquées ci-dessous. Les autres valeurs de ces attributs ne suffisent pas à inclure un objet.
Pour les surfaces, toutes les composantes d’au moins 1 km² sont d’abord exclues. Si plusieurs composantes portant le même identifiant OSM subsistent, la plus grande est conservée ; aucun ordre supplémentaire n’est défini pour des composantes de même superficie. Son centroïde est calculé en ETRS89/UTM32N (EPSG:25832), puis converti en coordonnées géographiques (EPSG:4326). Les nœuds OSM conservent leur position. L’attribut waterway n’est évalué que pour les nœuds.
Chaque objet reçoit exactement une catégorie : la première règle applicable dans l’ordre ci-dessous l’emporte. Sans règle applicable, l’objet est exclu. Les catégories sélectionnées par amenity forment le groupe des haltes de restauration, toutes les autres celui des curiosités. Les établissements sans attribut name sont exclus ; un nom n’est pas obligatoire pour les curiosités. Un nœud OSM et un objet surfacique OSM représentant le même lieu restent des entrées distinctes.
Cascade 100 — waterway=waterfall.
Château 100, y compris les palais — historic=castle.
Sommet 90 — natural=peak.
Point de vue 80 — tourism=viewpoint.
Ruine 60 — historic=ruins.
Monument 60 — historic=monument.
Grotte 60 — natural=cave_entrance.
Parc zoologique 60 — tourism=zoo.
Attraction 60 — tourism=attraction.
Musée 50 — tourism=museum.
Porte de ville 50 — historic=city_gate.
Fortification 50 — historic=fort.
Site archéologique 40 — historic=archaeological_site.
Source 40 — natural=spring.
Œuvre d’art 30 — tourism=artwork.
Aire de pique-nique 30 — tourism=picnic_site.
Stèle 20 — historic=memorial.
Jardin à bière 70 — amenity=biergarten.
Restaurant 60 — amenity=restaurant.
Café 50 — amenity=cafe.
Pub 40 — amenity=pub.
Restauration rapide 30 — amenity=fast_food.
Glacier 40 — amenity=ice_cream.
La plage des scores de restauration est donc de 30 à 70.
L’entrée supplémentaire est QRank (consultations Wikidata, CC0) : le fichier qrank.csv.gz de qrank.wmcloud.org, avec les colonnes Entity et QRank. Chaque évaluation utilise la version des données disponible lors de son exécution. L’attribut OSM wikidata est comparé exactement à Entity.
Pour chaque POI sélectionné ayant une entrée QRank correspondante, on calcule L = ln(1 + QRank) ; ln est le logarithme naturel. Le 5e percentile P05 et le 99e percentile P99 sont calculés à partir de ces valeurs L, avec interpolation linéaire comme dans PostgreSQL percentile_cont. Chaque POI correspondant compte une fois, même si plusieurs POI partagent le même identifiant Wikidata. Les POI sans entrée QRank correspondante sont exclus du calcul des percentiles.
Le score de notoriété non arrondi Q est :
Q = 100 × min(1, max(0, (L − P05) / (P99 − P05))).
Q est donc compris entre 0 et 100. Si le fichier QRank ou une entrée correspondante manque, ou si les bornes des percentiles sont identiques, Q = 0. Q est également stocké séparément, arrondi à un entier.
Les trois parties sont pondérées 40 / 40 / 20 : score de base de la catégorie K, score de notoriété Q et densité de photos F de Wikimedia Commons. La densité de photos est préparée, mais actuellement 0. Le score global utilise la valeur non arrondie de Q :
Total = round(0,4 × K + 0,4 × Q + 0,2 × F).
Seul ce résultat est arrondi à un entier ; round désigne la fonction PostgreSQL. L’absence de valeurs QRank ou de photos n’entraîne aucune redistribution des pondérations.
Pour préparer une boucle, vous pouvez afficher les parkings alentour. Nous reprenons pour cela tous les objets portant amenity=parking dans OpenStreetMap, en point ou en surface ; pour les surfaces nous utilisons le centre de gravité, comme pour les curiosités. Les bandes de stationnement le long de la chaussée sont écartées, c’est-à-dire parking=street_side, lane, on_kerb et half_on_kerb — on ne s’y rend pas exprès. Un objet sans attribut parking est conservé.
Pour chaque parking nous calculons trois attributs qui nous sont propres :
Parking de randonnée — l’objet porte hiking=yes, ou son nom contient Wanderparkplatz ou Wanderer-Parkplatz (parking de randonnée en allemand).
Au bord d’un sentier balisé — à 100 m au plus d’un chemin appartenant à une relation portant route=hiking.
Dans la verdure — à 50 m au plus d’une surface des catégories forêt ou verdure urbaine décrites plus haut.
La classe d’accès est formée à partir d’access comme pour les tuiles (voir « La carte ») ; les parkings fermés ne sont pas proposés. Les parkings clients et ceux portant fee=yes restent également de côté jusqu’à ce que vous les autorisiez dans l’interface. Un parking sans attribut fee est considéré comme inconnu et reste toujours dans la liste.
De ces attributs naît un score à chaque recherche. Une seule classe compte, la plus élevée qui s’applique : parking de randonnée 1000, au bord d’un sentier balisé 800, sinon 500. S’y ajoutent deux bonus : 250 si le parking se trouve dans la verdure, et un pour la proximité du point choisi — 300 en dessous de 100 m, 150 de 100 à moins de 300 m, aucun au-delà. Le résultat est divisé par une valeur qui croît avec la distance : les centaines de mètres entières, plus un, fois 0,1, plus un. Au point choisi le diviseur vaut donc 1,1, à 800 m 1,9, à 2000 m 3,1, à 4000 m 5,1. Les 1000 parkings les plus proches dans un rayon de 4000 m sont évalués ; les six au score le plus élevé sont affichés. Ce score ne figure dans aucune base de données : il dépend du point choisi et se recalcule à chaque requête.
Les tuiles vectorielles de la carte sont produites à partir du même extrait avec tilemaker selon le schéma de tuiles Shortbread, complété par trois couches de notre cru : sentiers de randonnée (chemins des relations route=hiking ou route=foot, plus les chemins isolés portant sac_scale ou trail_visibility), sommets (natural=peak, saddle, volcano) et parkings (amenity=parking, en point ou en surface). Les deux premières couches sélectionnent dans OpenStreetMap et n’ajoutent aucune valeur propre.
Pour les parkings, nous ajoutons un classement propre. À partir de l’attribut access, nous formons trois classes d’accès : ouvert (aucun attribut access, ou yes, permissive, public, designated), parking client (customers, permit, destination ainsi que les valeurs mixtes customers;private et private;customers) et fermé (toute autre valeur, par exemple private ou no). La carte montre les deux premières classes et laisse la troisième de côté ; la classe se trouve dans la tuile, pas dans OpenStreetMap.