Stapel

English

Winkeldata

Wat we hebben, en wat we missen

Aankomstdetectie werkt alleen zo goed als de coördinaten eronder. Hier staan de gemeten cijfers, inclusief de ketens waar we het slechtst op scoren.

Versie
stores.v1.json, gebouwd op
Omvang
9.153 winkels, 36 ketens. 593 kB onbewerkt, 208 kB ingepakt
Bron
OpenStreetMap, opgehaald via Overpass, per keten op brand:wikidata
Licentie
ODbL, dezelfde als de bron
SHA-256
87e74b87578f31b5eba095b4117c0a03437c03e02b4a53583e1d426ef60bce51

Dekking per keten

“Gevonden” is wat de pijplijn overhield na opschonen. “Gepubliceerd” is wat de keten of Locatus zelf zegt te hebben.

Alle 36 ketens, slechtste dekking eerst. Gemeten op 7 september 2026, tegen live Overpass-data.
Keten Gevonden Gepubliceerd Dekking
DA21330071%
Pets Place12817075%
Decathlon222492%
C&A9610393%
Blokker576193%
Etos49352294%
Xenos15716595%
Kruidvat9871.01397%
GAMMA16216698%
Karwei12813198%
Praxis18018498%
La Place464798%
Primera54655099%
PLUS43744099%
Lidl437438100%
de Bijenkorf77100%
MediaMarkt5454100%
Trekpleister186185101%
Jumbo695685101%
HEMA560544103%
Ekoplaza8885104%
Welkoop167160104%
Intersport3735106%
IKEA1514107%
Intratuin5753108%
Albert Heijn1.1991.017118%
Holland & Barrett194
H&M85
vanHaren135
Douglas94
ICI PARIS XL141
Rituals96
Shell500
BP187
Esso468
Starbucks99

Waarom DA en Pets Place onderaan staan

DA op 71% en Pets Place op 75% zijn de twee slechtste, en het ligt niet aan het filter: de winkels staan simpelweg niet in OpenStreetMap. Allebei ketens van kleine winkels in winkelstraten, en dat is precies waar de dekking van OSM dun wordt. Een ontbrekende winkel betekent geen melding bij aankomst; de kaart zelf werkt gewoon.

Waarom Albert Heijn op 118% staat

978 Albert Heijn plus 38 AH XL is 1.016 supermarkten, binnen één winkel van het Locatus-cijfer. Het verschil zit volledig in AH to go: OpenStreetMap kent er 178, AH publiceert er 86. Van die 178 staan er 84 in een OK-tankstation en 47 op een NS-station, en 151 zijn in 2026 nog bewerkt, dus verouderd is het niet. AH lijkt gefranchisete pompshops niet mee te tellen.

Een pompshop is geen volledige supermarkt, dus draagt elk record zijn subformaat mee en beslist het scherm wat het ermee doet.

Wat er níét klopt

Vijf dingen die je zou moeten weten voordat je deze data vertrouwt. Allemaal gemeten, geen van alle vermoed.

1. Adressen ontbreken, en per keten verschillend

De twaalf slechtste van 36 ketens. Coördinaten zijn wél overal compleet.
Keten Zonder adres Van totaal Aandeel
Starbucks239923,2%
Xenos2815717,8%
La Place84617,4%
Shell8350016,6%
Esso7246815,4%
DA2921313,6%
vanHaren1413510,4%
Ekoplaza8889,1%
Douglas8948,5%
Rituals8968,3%
Intersport3378,1%
Praxis141807,8%

Aankomstdetectie draait op coördinaten en heeft hier geen last van. Zoeken op postcode wel: dat vindt stilzwijgend niets voor bijna een kwart van de Starbucks-vestigingen.

2. Kruidvat is te perfect

987 van de 987 records hebben identieke tagsets, geen ontbrekend veld en source=AS Watson BNL: een bedrijfsimport, geen vrijwilligerswerk. Uitstekend zolang iemand hem ververst, en op slag verouderd op de dag dat dat stopt, zonder zichtbare verandering. De andere ketens verslechteren geleidelijk; deze valt van een klif.

3. Niets merkt op dat een winkel gesloten is

Een winkel die dicht gaat blijft in OpenStreetMap staan tot een vrijwilliger hem weghaalt, en dat duurt maanden. Etos heeft er al één die als leegstaand getagd is en de merknaam nog draagt. Hier is geen controle voor, in geen enkele richting, en het is van onze kant niet op te lossen. Daarom kun je in de app zelf een winkel vastleggen.

4. De controle vangt verschuiving, geen onjuistheid

De bouwpijplijn stopt als een keten meer dan 20% beweegt ten opzichte van de vorige uitgave. Getest: hij faalt op een Lidl-daling van 27,2% en op een keten die verdwijnt, en laat 3,4% door. Maar hij kan een juist getal niet van een consequent verkeerd getal onderscheiden, en de tabel met verwachte aantallen is met de hand ingevoerd en veroudert.

5. De bron is één vrijwilligersserver

Zes ketens ophalen kostte 881 seconden: 123 tot 137 seconden per keten, vrijwel ongeacht de opbrengst, omdat het scannen van heel Nederland domineert. Voor 41 ketens is dat ongeveer 100 minuten, en dat is een ondergrens. Die belasting hoort niet op een gratis publieke dienst, dus gaat de verwerking naar een lokaal Geofabrik-uittreksel.

Hoe het bestand gemaakt wordt

  1. Per keten een lijst Wikidata-identificatoren, niet één. Albert Heijn heeft er drie; met maar één verdwijnen 216 winkels stilzwijgend.
  2. Overpass bevragen met out center meta en het antwoord opslaan. Overpass meldt een time-out met HTTP 200, dus dat veld wordt apart gecontroleerd.
  3. Normaliseren, coördinaten afronden op vijf decimalen, en dubbelen binnen 25 meter samenvoegen.
  4. Filteren op een witte lijst van winkeltypes. Uitsluiten op naam levert alleen al bij AH 65 niet-winkels op, waaronder parkeerplaatsen en twee laadstations.
  5. Vergelijken met de vorige uitgave en de build stoppen bij grote verschuivingen.
  6. Versienummer, SHA-256 en ECDSA P-256-handtekening erop, en publiceren. Niet Ed25519: dat bereikt java.security pas op Android 13, en Stapel draait vanaf Android 8.
  7. Hetzelfde bestand meeleveren in de app, zodat een verse installatie offline alles weet.

De bouw is reproduceerbaar tot op de byte vanaf de opgeslagen ruwe data.

Wat er nog komt

De doelstelling is 41 ketens: naar schatting 9.600 tot 14.900 winkels, 220 tot 340 kB ingepakt. Resteert: de ketenlijst uitbreiden en het ophalen naar een lokaal uittreksel verplaatsen.

Bronvermelding en licentie

Winkellocaties zijn afgeleid van OpenStreetMap, © OpenStreetMap-bijdragers, beschikbaar onder de Open Database License (ODbL) 1.0.

De afgeleide database die Stapel meelevert en synchroniseert valt onder dezelfde licentie, wordt publiek gepubliceerd met de code die hem bouwt, en dezelfde vermelding staat in de app op het scherm “Over”.

Merknamen en logo’s van ketens zijn eigendom van die ketens. De app levert standaard geen merklogo’s mee.