Hoe wij uit OpenStreetMap afleiden

Alle wegen, wegtypen en bezienswaardigheden van deze toepassing komen uit OpenStreetMap. Daaruit berekenen wij eigen waarden — hoe luid, hoe groen en hoe bezienswaardig het langs een weg is — en daaruit snijden wij de tegels van de kaart. Beide zijn afgeleide databases in de zin van de Open Database License. Onze waarden staan in eigen databases en zijn met OpenStreetMap alleen via het wegnummer verbonden. De licentie eist dat wij de methode openbaar maken (sectie 4.6b). Die wordt als volgt beschreven.

Welke wegen worden beoordeeld

Elk OSM-object met een highway-kenmerk — ook de luide wegen zelf. Er wordt in meters gerekend. Dezelfde waarden middelen wij bovendien op een grof raster met cellen van 0,0028 graad, voor vragen die geen afzonderlijke weg betreffen.

Bos, open land, bebouwing, stadsgroen, beschermd gebied

Uit de vlakken in OpenStreetMap vormen wij vijf categorieën. Bos: landuse=forest, natural=wood. Open land: farmland, meadow, orchard, vineyard, grass, allotments, grassland, heath, scrub, wetland, beach. Bebouwing: residential, industrial, commercial, retail, garages, construction. Stadsgroen: park, golf_course, common, recreation_ground, dog_park, cemetery, village_green, grave_yard, plus garden alleen met uitdrukkelijk openbare toegang. Beschermd gebied: nature_reserve, national_park. De waarde per categorie is het aandeel van de weglengte dat in zulke vlakken ligt.

Lawaai

Als lawaaibronnen tellen wegen, met een aangenomen reikwijdte: autosnelweg 1000 m, autoweg 800 m, hoofdweg 500 m, provinciale weg 300 m; daarnaast vliegvelden 2000 m (alleen terreinen vanaf 1 km²), motorsportbanen 1500 m, schietbanen 1500 m, steengroeven 500 m. Tunnels tellen niet mee. Spoorlijnen tellen niet mee — treinen rijden zelden. De waarde daalt kwadratisch met de afstand: 100 × (1 − afstand / reikwijdte)². Bos tussen bron en weg dempt: elke meter bos op de zichtlijn telt als drie meter afstand. Dit wordt berekend voor de vier dichtstbijzijnde bronnen per weg; de scherpste geldt. Dezelfde waarde bepalen wij ook per deeltraject — daaruit ontstaat het kengetal „langste lawaaiige stuk aaneen“. De waterwaarde ontstaat op dezelfde manier, maar lineair: rivieren en kanalen 100 m, meren 100 m vanaf 10 000 m² oppervlak, beken 50 m.

Bezienswaardigheden en pleisterplaatsen

Punten en vlakken uit OpenStreetMap worden geselecteerd op basis van de hieronder vermelde waarden van tourism, historic, natural, waterway en amenity. Andere waarden van deze kenmerken zijn niet voldoende om een object op te nemen.

Selectie en geometrie

Bij vlakken worden eerst alle deelvlakken van minstens 1 km² uitgesloten. Als daarna meerdere deelvlakken met dezelfde OSM-identificatie overblijven, wordt het grootste behouden; voor even grote deelvlakken is geen verdere volgorde vastgelegd. Het oppervlaktezwaartepunt wordt berekend in ETRS89/UTM32N (EPSG:25832) en daarna omgezet naar geografische coördinaten (EPSG:4326). OSM-punten behouden hun locatie. Het kenmerk waterway wordt alleen bij punten beoordeeld.

Elk object krijgt precies één categorie: de eerste passende regel in de onderstaande volgorde wint. Objecten zonder passende regel vallen af. De via amenity geselecteerde categorieën vormen de groep pleisterplaatsen, alle andere de groep bezienswaardigheden. Horecaobjecten zonder name-kenmerk worden uitgesloten; voor bezienswaardigheden is een naam niet vereist. Een OSM-punt en een OSM-vlakobject voor dezelfde plek blijven afzonderlijke vermeldingen.

Categorieën in beoordelingsvolgorde en basiswaarden

Waterval 100 — waterway=waterfall.

Burcht 100, inclusief kastelen en paleizen — historic=castle.

Top 90 — natural=peak.

Uitzichtpunt 80 — tourism=viewpoint.

Ruïne 60 — historic=ruins.

Monument 60 — historic=monument.

Grot 60 — natural=cave_entrance.

Dierentuin 60 — tourism=zoo.

Attractie 60 — tourism=attraction.

Museum 50 — tourism=museum.

Stadspoort 50 — historic=city_gate.

Vestingwerk 50 — historic=fort.

Archeologische vindplaats 40 — historic=archaeological_site.

Bron 40 — natural=spring.

Kunstwerk 30 — tourism=artwork.

Picknickplaats 30 — tourism=picnic_site.

Gedenksteen 20 — historic=memorial.

Biertuin 70 — amenity=biergarten.

Restaurant 60 — amenity=restaurant.

Café 50 — amenity=cafe.

Pub 40 — amenity=pub.

Snackbar 30 — amenity=fast_food.

IJssalon 40 — amenity=ice_cream.

De bandbreedte voor horeca is daarmee 30 tot 70.

Bekendheid uit QRank

De aanvullende invoer is QRank (Wikidata-paginaweergaven, CC0): het bestand qrank.csv.gz van qrank.wmcloud.org, met de kolommen Entity en QRank. Elke beoordelingsronde gebruikt de dan beschikbare gegevensversie. Het OSM-kenmerk wikidata wordt exact vergeleken met Entity.

Voor elke geselecteerde POI met een passende QRank-vermelding wordt L = ln(1 + QRank) berekend; ln is de natuurlijke logaritme. Uit deze L-waarden worden het 5e percentiel P05 en het 99e percentiel P99 bepaald, met lineaire interpolatie zoals bij PostgreSQL percentile_cont. Elke passende POI telt eenmaal mee, ook als meerdere POI’s dezelfde Wikidata-identificatie hebben. POI’s zonder passende QRank-vermelding tellen niet mee voor de percentielen.

De onafgeronde bekendheidswaarde Q is:

Q = 100 × min(1, max(0, (L − P05) / (P99 − P05))).

Q ligt daarmee tussen 0 en 100. Zonder QRank-bestand, zonder passende vermelding of bij gelijke percentielgrenzen geldt Q = 0. Q wordt ook afzonderlijk opgeslagen, afgerond op een geheel getal.

Totaalscore

De drie delen worden gewogen met 40 / 40 / 20: categoriebasiswaarde K, bekendheidswaarde Q en fotodichtheid F uit Wikimedia Commons. De fotodichtheid is voorbereid, maar momenteel 0. Voor de totaalscore wordt de onafgeronde waarde Q gebruikt:

Totaal = round(0,4 × K + 0,4 × Q + 0,2 × F).

Pas dit resultaat wordt afgerond op een geheel getal; round verwijst naar de PostgreSQL-functie. Ontbrekende QRank- of fotowaarden leiden niet tot een herverdeling van de gewichten.

Parkeerplaatsen als startpunt

Wie een rondje plant, kan parkeerplaatsen in de omgeving laten tonen. Daarvoor nemen wij uit OpenStreetMap alle objecten met amenity=parking op, als punt of als vlak; bij vlakken rekenen wij met het zwaartepunt, net als bij bezienswaardigheden. Parkeerstroken langs de rijbaan vallen af, dus parking=street_side, lane, on_kerb en half_on_kerb — daar rijd je niet naartoe. Een object zonder parking-kenmerk blijft staan.

Bij elke parkeerplaats berekenen wij drie eigen kenmerken:

Wandelparkeerplaats — het object draagt hiking=yes, of de naam bevat Wanderparkplatz of Wanderer-Parkplatz (Duits voor wandelparkeerplaats).

Aan een wandelroute — hoogstens 100 m van een weg uit een relatie met route=hiking.

In het groen — hoogstens 50 m van een vlak uit de categorieën bos of stadsgroen zoals hierboven beschreven.

De toegangsklasse vormen wij uit access zoals bij de tegels (zie „De kaart“); gesloten plekken bieden wij niet aan. Klantenparkeerplaatsen en plekken met fee=yes blijven eveneens buiten beschouwing totdat u ze in de interface toelaat. Een plek zonder fee-kenmerk geldt als onbekend en blijft altijd in de lijst.

Uit deze kenmerken ontstaat bij elke zoekopdracht een puntentotaal. Precies één klasse telt, de hoogste die van toepassing is: wandelparkeerplaats 1000, aan een wandelroute 800, anders 500. Daar komen twee bonussen bij: 250 als de plek in het groen ligt, en één voor de nabijheid van het gekozen punt — 300 onder 100 m, 150 van 100 tot onder 300 m, daarboven geen. Het resultaat delen wij door een waarde die met de afstand groeit: volle honderdtallen meters, plus één, maal 0,1, plus één. Op het gekozen punt is de deler dus 1,1, bij 800 m 1,9, bij 2000 m 3,1, bij 4000 m 5,1. De 1000 dichtstbijzijnde parkeerplaatsen binnen 4000 m worden beoordeeld; de zes met het hoogste puntentotaal worden getoond. Dit puntentotaal staat in geen enkele database: het hangt af van het gekozen punt en ontstaat bij elke aanvraag opnieuw.

De kaart

De vectortegels van de kaart ontstaan uit hetzelfde uittreksel met tilemaker volgens het tegelschema Shortbread, uitgebreid met drie eigen lagen: wandelroutes (wegen in relaties met route=hiking of route=foot, plus losse wegen met sac_scale of trail_visibility), toppen (natural=peak, saddle, volcano) en parkeerplaatsen (amenity=parking, als punt of als vlak). De eerste twee lagen selecteren uit OpenStreetMap en voegen geen eigen waarde toe.

Bij de parkeerplaatsen komt een eigen indeling erbij. Uit het kenmerk access vormen wij drie toegangsklassen: open (geen access-kenmerk, of yes, permissive, public, designated), klantenparkeerplaats (customers, permit, destination en de gemengde waarden customers;private en private;customers) en gesloten (elke andere waarde, bijvoorbeeld private of no). De kaart toont de eerste twee klassen en laat de derde weg; de klasse staat in de tegel, niet in OpenStreetMap.