Website te bezoeken op: https://afvalcontainers-warmenhuizen.nl/
Deze website is ontwikkeld om per dorpskern van de gemeente Schagen inzicht te geven in de daadwerkelijke loopafstanden die inwoners moeten afleggen naar de aangekondigde ondergrondse restafvalcontainers. Het doel is om de toegankelijkheid van de containers controleerbaar te maken en containerplannen op basis van werkelijke loopafstand te kunnen vergelijken.
Deze repository bevat Warmenhuizen en Tuitjenhorn als voorbeeldkernen, maar kan makkelijk worden uitgebreid naar de dorpskernen Dirkshorn, Sint Maarten, Waarland, Burgerbrug, Oudesluis en Schagerbrug. De code is zo opgezet dat andere dorpskernen kunnen worden toegevoegd via het plaatsmanifest en eigen JSON-datasets.
De gemeente Schagen kondigt voor Warmenhuizen, Tuitjenhorn en andere dorpskernen ondergrondse restafvalcontainers aan. Binnen de bebouwde kom verdwijnt de grijze restafvalbak bij grondgebonden woningen en moeten bewoners hun restafval naar een ondergrondse container brengen. De gemeente stelt daarbij: “U loopt maximaal ongeveer 275 meter naar een container. In uitzonderlijke gevallen kan de afstand iets groter zijn.” Bewoners krijgen met hun afvalpas toegang tot de drie dichtstbijzijnde containers.
Deze website toetst niet alleen de afstand hemelsbreed, maar vooral de daadwerkelijke loopafstand via wegen en paden. Dat is belangrijk, omdat officiële evaluaties uit andere gemeenten laten zien dat de tevredenheid van bewoners sterk samenhangt met de afstand en moeite die het kost om restafval weg te brengen.
Uit de gevonden onderzoeken komt geen enkel landelijk exact correlatiecijfer naar voren. Gemeenten meten tevredenheid, afstand en bezwaren namelijk op verschillende manieren. De richting is echter opvallend consistent: hoe groter de feitelijke of ervaren loopafstand, hoe lager de tevredenheid en hoe groter de kans op klachten over het systeem.
De afstand naar een restafvalcontainer is niet alleen een technische plaatsingsnorm. Voor bewoners is het een dagelijkse gebruiksvoorwaarde. Vooral in dorpen en laagbouwwijken is de verandering groot, omdat bewoners van restafval aan huis naar restafval wegbrengen gaan. De onderzoeken laten steeds dezelfde praktische bezwaren zien:
- Afstand en fysieke belasting: bewoners vinden het vervelend of lastig om met restafvalzakken te lopen, vooral ouderen, minder mobiele bewoners en gezinnen met zwaar afval zoals luiers of kattenbakvulling.
- Verlies van service: de overgang van een grijze bak aan huis naar een verzamelcontainer voelt voor veel bewoners als een duidelijke achteruitgang in gemak.
- Volle of vieze containers: volle containers, storingen, bijplaatsingen en zwerfafval verlagen de tevredenheid sterk.
- Locatiekeuze en inspraak: bewoners accepteren containers minder goed wanneer locaties als onlogisch, onveilig of slecht bereikbaar worden ervaren.
- Kwetsbare groepen: meerdere evaluaties noemen zorgen over bewoners die slecht ter been zijn of afhankelijk worden van hulp van anderen.
Daarom gebruikt deze website afstandscategorieën die niet alleen aansluiten bij de gemeentelijke norm van ongeveer 275 meter, maar ook bij de zones waarin andere gemeenten duidelijke verschillen in tevredenheid zagen.
De kaart gebruikt vijf afstandscategorieën op basis van werkelijke loopafstand:
| Afstand | Betekenis in deze analyse | Kleur op kaart |
|---|---|---|
| 0–100 m | Laag risico op afstandsklachten. In meerdere onderzoeken blijft tevredenheid relatief hoog wanneer containers dichtbij staan. | Groen |
| 100–125 m | Overgangszone. De afstand is nog beperkt, maar de route en bereikbaarheid worden belangrijker. | Geel |
| 125–150 m | Waarschuwingszone. Rond deze grens hanteerden sommige gemeenten juist een maximale norm om draagvlak te behouden. | Oranje |
| 150–275 m | Verhoogde kans op ontevredenheid. Dit valt binnen de Schagense norm, maar in evaluaties nemen klachten over afstand en gemak hier duidelijk toe. | Rood |
| >275 m | Boven de door Schagen genoemde richtafstand. Deze adressen vragen extra aandacht, zeker wanneer het om werkelijke loopafstand gaat. | Donkerrood |
Onderstaande onderzoeken vormen de inhoudelijke basis voor de afstandscategorieën en de interpretatie van de kaart. De onderzoeken zijn niet één-op-één vergelijkbaar, maar samen laten ze een duidelijk patroon zien: korte, logische loopafstanden helpen het draagvlak; langere of als lastig ervaren afstanden verlagen de tevredenheid.
| Gemeente / gebied | Type gebied | Bevindingen over tevredenheid en loopafstand | Gehanteerde of besproken afstand | Bron |
|---|---|---|---|---|
| Woerden / Kamerik | Dorps- en wijkpilot | In Kamerik kreeg de proef een laag rapportcijfer. De afstand tot de container was de sterkste voorspeller van algemene tevredenheid. Bewoners die fiets of auto nodig hadden, waren duidelijk minder tevreden dan bewoners die lopend hun afval konden wegbrengen. | In de pilot gemiddeld ongeveer 250 m en maximaal 500 m; later beleid ging richting circa 150 m en maximaal 250 m. | Omgekeerd inzamelen in Woerden |
| Wageningen | Kleinstedelijk / laagbouw en hoogbouw | Bij laagbouw daalde de waardering voor restafval sterk na de proef. Het wegbrengen van restafval en de afstand naar de verzamelcontainer vielen bij een duidelijke groep bewoners tegen. Hoogbouwbewoners waren minder negatief, omdat zij al meer gewend waren aan verzamelvoorzieningen. | Maximaal 250 m; veel huishoudens zaten binnen 100 m. | Resultaten het nieuwe inzamelen Wageningen |
| Nijmegen binnenstad | Stedelijk, maar met concrete afstandscategorieën | Over de loopafstand was een ruime meerderheid tevreden, maar boven 100 m daalde de tevredenheid scherp: bij bewoners die meer dan 100 m moesten lopen was nog maar ongeveer 42% tevreden over de loopafstand. | Feitelijke afstandscategorieën; vooral de grens rond 100 m is relevant. | Onderzoek ondergrondse restafvalcontainers Nijmegen |
| Zeist | Gemeentelijke pilot / omgekeerd inzamelen | Een groot deel van de bewoners vond de afstand acceptabel, maar bewoners die langer onderweg waren of de afstand als te groot ervoeren, rapporteerden vaker moeite met het wegbrengen van restafval. | Maximaal 250 m. | Adviesnota RMN omgekeerd inzamelen Zeist |
| Amersfoort / Nieuwland | Wijkpilot laagbouw | Bij een kortere norm was de acceptatie hoger: ongeveer 70% was tevreden over de gekozen afstand naar de ondergrondse containers. Kritiek ging vooral over praktische uitvoeringspunten zoals ledigingsfrequentie en communicatie. | Maximaal 150 m. | Resultaten pilot omgekeerd inzamelen Amersfoort |
| Lisse | Kleinstedelijke gemeente | De afvalinzameling kreeg gemiddeld een voldoende, maar restafval scoorde lager dan andere onderdelen. Bewoners noemden onder meer volle containers, bijplaatsingen en de wens om minder ver te hoeven lopen. | Geen duidelijke vaste norm in het burgeronderzoek; het buitengebied hield restafval aan huis omdat de afstand naar containers te groot was. | Burgeronderzoek evaluatie afvalbeleid Lisse |
| Vijfheerenlanden / voormalig Vianen | Kleinstedelijk / meerjarig beleid | In de voormalige gemeente Vianen was veel ontevredenheid over nieuwe restafvalcontainers. Loopafstand, hulpbehoefte en het pas- of tariefsysteem speelden mee in de waardering. | Ongeveer 200 m. | Tussentijdse evaluatie Waardlanden |
| Papendrecht | Kleinstedelijke pilot | Ongeveer de helft van de bewoners was tevreden met omgekeerd inzamelen. In vervolgstukken blijven afstand, draagvlak, communicatie en uitzonderingen voor lastig bereikbare delen belangrijke discussiepunten. | Maximaal 300 m; voor dijkgebied werd maatwerk besproken. | Evaluatie en voorstel na pilot Papendrecht |
| Hoonhorst / Dalfsen | Dorpse pilot | In de dorpspilot was een ruime meerderheid tevreden over de nieuwe manier van inzamelen. De pilot laat zien dat draagvlak mogelijk is, maar vooral wanneer de uitvoering praktisch werkbaar blijft en bewoners goed worden meegenomen. | In de openbare pilotpassages is geen duidelijke meter-norm gevonden. | Resultaten afvalbeleid Hoonhorst |
| Roosendaal | Stedelijk / restafval op afstand | De evaluatie benoemt dat restafval op afstand draagvlak kan hebben, mits de loopafstand naar de ondergrondse container beperkt blijft. | Geen eenduidige norm in deze samenvatting; de kernbevinding is de voorwaarde van beperkte loopafstand. | Evaluatie restafval op afstand Roosendaal |
Voor Warmenhuizen en Tuitjenhorn is vooral de vergelijking met dorpen, laagbouwwijken en kleinstedelijke gemeenten relevant. Daar is de verandering voor bewoners het grootst: de grijze restafvalbak verdwijnt en restafval moet voortaan worden weggebracht.
De belangrijkste les uit de onderzoeken is dat een norm van 275 meter op papier niet automatisch betekent dat de voorziening voor bewoners als bereikbaar of acceptabel wordt ervaren. De werkelijke looproute, het aantal oversteken, de logica van de route, de sociale veiligheid, de kans op volle containers en de fysieke belasting bepalen samen of de afstand redelijk voelt.
Deze website maakt daarom zichtbaar welke adressen binnen de bebouwde kom:
- binnen 100 meter van een container liggen;
- tussen 100 en 150 meter moeten lopen;
- tussen 150 en 275 meter moeten lopen;
- verder dan de door Schagen genoemde richtafstand van ongeveer 275 meter moeten lopen.
Daarmee kan de discussie over de plaatsing van containers concreter worden gevoerd: niet alleen op basis van een kaart met hemelsbrede cirkels, maar op basis van de werkelijke route die bewoners moeten lopen.
- Plaatsing ondergrondse restafvalcontainers Warmenhuizen
- Plaatsing ondergrondse restafvalcontainers Tuitjenhorn
- Omgekeerd inzamelen in Woerden
- Resultaten het nieuwe inzamelen Wageningen
- Onderzoek ondergrondse restafvalcontainers Nijmegen
- Adviesnota RMN omgekeerd inzamelen Zeist
- Resultaten pilot omgekeerd inzamelen Amersfoort
- Burgeronderzoek evaluatie afvalbeleid Lisse
- Tussentijdse evaluatie Waardlanden
- Evaluatie en voorstel na pilot Papendrecht
- Resultaten afvalbeleid Hoonhorst
- Evaluatie restafval op afstand Roosendaal
De loopafstanden worden per dorpskern berekend met behulp van OpenStreetMap (OSM) data:
- Routes: kortste looproute van elk woonadres binnen de bebouwde kom naar de dichtstbijzijnde container.
- Visualisatie: kleuren geven de afstandscategorieën aan.
- Groen: 0–100 meter
- Geel: 100–125 meter
- Oranje: 125–150 meter
- Rood: 150–275 meter
- Donkerrood: >275 meter
- Fallback: hemelsbrede afstand wordt weergegeven als een route niet beschikbaar is.
- Data: adressen komen uit PDOK BAG, de bebouwde-komgrens uit PDOK BRT TOP10NL en routes uit OSRM op basis van OSM.
De batchanalyse van Warmenhuizen laat de volgende verdeling zien:
| Afstand | Aantal adressen | Percentage | Kleur op kaart |
|---|---|---|---|
| 0–100 m | 986 | 34,4% | Groen |
| 100–125 m | 374 | 13,0% | Geel |
| 125–150 m | 353 | 12,3% | Oranje |
| 150–275 m | 901 | 31,4% | Rood |
| >275 m | 254 | 8,9% | Donkerrood |
Conclusie: 1.155 adressen (40,3%) binnen de bebouwde kom liggen verder dan 150 meter van een container. 254 adressen (8,9%) liggen zelfs boven de door Schagen genoemde richtafstand van ongeveer 275 meter. Juist deze adressen verdienen extra aandacht, omdat evaluaties in andere gemeenten laten zien dat tevredenheid afneemt wanneer de werkelijke of ervaren loopafstand groter wordt.
- Klik op een container om de hemelsbrede straal te bekijken en klik op een huispunt of zoek je adres om de looproutes te bekijken.
- Zoom in tot niveau 16 om individuele huizen te tonen.
- De kleuren geven in één oogopslag de toegankelijkheid en potentiële probleemzones aan.
npm run check
npm run build
npm run serveOpen http://127.0.0.1:8000/ after npm run serve.
Chromium e2e tests run against the built static site:
npx playwright install --with-deps chromium
npm run test:e2eUse npm run test:e2e:headed for a headed browser, npm run test:e2e:ui for the Playwright UI, and npm run test:e2e:report to reopen the HTML report. On WSL2 ARM64, install only Chromium first unless you intentionally need broader browser coverage.
src/index.htmlcontains the fixed page structure.src/styles.cssis the CSS entrypoint and imports focused CSS modules fromsrc/styles/.src/app/main.jsis the Vite browser entrypoint. Feature code lives insrc/app/domain/,src/app/map/,src/app/services/, andsrc/app/ui/.src/shared/contains pure helpers and constants reused by the browser app and Node scripts.scripts/build-site.mjs,scripts/validate-data.mjs, andscripts/generate-house-coverage.mjsremain the public CLI entrypoints; their implementation modules live underscripts/build/,scripts/validation/, andscripts/generator/.
data/places.jsonis the catalog for configured villages, their map defaults, optional source URL, and container ID prefix. Standard data paths are derived fromdata/places/<plaats-id>/.data/places/warmenhuizen/container-locations.jsonis the editable Warmenhuizen container source.data/places/warmenhuizen/house-coverage.jsonis the legacy generated Warmenhuizen coverage cache used by scripts and route reuse; it is not copied todist/.data/places/warmenhuizen/coverage-summary.json,house-map.json,address-index.compact.json, andhouse-details/*.jsonare generated browser runtime data split from the coverage cache.data/places/tuitjenhorn/contains the same dataset types for Tuitjenhorn.- Browser code initially reads only active-place container data, coverage summary, and house marker data. Address indexes and house route details are lazy-loaded.
- When stored route geometry is missing or invalid for a selected house/container pair, the map may fetch live OSRM route geometry as a visual fallback only.
- Distance bands are based on walking distance: green
0-100 m, yellow100-125 m, orange125-150 m, red150-275 m, dark red>275 m, and gray when no route is available.
Nieuwe dorpskernen staan vooraf in data/places.json. Gebruik daar een stabiele id in kebab-case, een duidelijke name, een unieke containerIdPrefix en kaartinstellingen. De standaardpaden worden automatisch afgeleid uit data/places/<plaats-id>/:
container-locations.json: handmatig beheerde containerlocaties.coverage-summary.json: samenvatting en metadata voor de analyse.house-map.json: compacte huizenlaag voor kaartmarkers.address-index.compact.json: compacte lazy zoekindex voor adressen.house-details/: lazy straatgebundelde detailbestanden met maximaal 75 adressen per bestand.
Maak daarna de map data/places/<plaats-id>/ aan en voeg daar minimaal container-locations.json toe. Container-ID's moeten de opgegeven prefix gebruiken, bijvoorbeeld WH01 voor Warmenhuizen of TH01 voor Tuitjenhorn. Een dorp met alleen container-locations.json kan al door generator- en auditscripts worden gebruikt, maar wordt nog niet gepubliceerd op de website.
Een dorp wordt pas zichtbaar in de kaart, navigatie, analyses en sitemap wanneer de runtime-data compleet is: container-locations.json, coverage-summary.json, house-map.json, address-index.compact.json, en house-details/*.json.
Minimale stappen voor een dorp dat al in data/places.json staat, bijvoorbeeld Waarland:
- Maak
data/places/waarland/. - Voeg
data/places/waarland/container-locations.jsontoe. - Gebruik container-ID's met de prefix uit
data/places.json, bijvoorbeeldWL01,WL02, enzovoort. - Genereer de analyse:
node scripts/generate-house-coverage.mjs --place=waarland- Controleer alles:
npm run check-
Commit de brondata en gegenereerde runtime-data:
data/places/waarland/container-locations.jsondata/places/waarland/house-coverage.jsondata/places/waarland/coverage-summary.jsondata/places/waarland/house-map.jsondata/places/waarland/address-index.compact.jsondata/places/waarland/house-details/
-
Als het dorp ook via de handmatige GitHub Action gegenereerd moet kunnen worden, zet de bijbehorende optie aan in
.github/workflows/generate-house-coverage.yml.
Na merge en deploy verschijnt het dorp automatisch op de site zodra de runtime-data compleet is. Commit geen dist/ output.
De generator gebruikt de plaats uit data/places.json, haalt adressen en de bebouwde-komgrens op via PDOK, berekent loopafstanden via OSRM, schrijft de legacy coverage-cache en splitst die naar de browserdata.
Je kunt container-locations.json ook via de kaart voorbereiden of bijwerken. De gewone dorpskeuze toont alleen dorpen die al publiceerbaar zijn, maar de containereditor heeft een eigen dorpskeuze met alle dorpen uit data/places.json.
- Open de kaart.
- Klik rechtsboven op de edit-knop met het potlood.
- Kies bij
Containerdataset voor dorphet dorp waarvoor je containerlocaties wilt maken of aanpassen. - Klik op
Nieuwe containeren klik daarna op de kaart waar de container moet komen. - Vul het container-ID, adres of omschrijving, containertype en status in. De editor gebruikt automatisch de prefix van het gekozen dorp, bijvoorbeeld
WHNN,THNNofWLNN. - Houd een bestaande marker ingedrukt om die te ontgrendelen en te verslepen.
- Klik op
Download JSONwanneer alle wijzigingen klaar zijn. - Sla de gedownloade inhoud op als
data/places/<plaats-id>/container-locations.json. De downloadnaam bevat het dorp, bijvoorbeeldwaarland-container-locations.json; hernoem die in de repo naarcontainer-locations.json.
Voor een dorp zonder bestaande containerdata start de editor met een lege containerlijst. Na generatie van de runtime-data verschijnt het dorp automatisch in de gewone dorpskeuze, navigatie, analyses en sitemap.
Smoke-test the generator without touching committed coverage data:
npm run generate:smokeRegenerate the full coverage dataset only when intended:
node scripts/generate-house-coverage.mjs --place=warmenhuizenThe full generator calls PDOK BAG, PDOK BRT TOP10NL, and OSRM routing services.
It batches OSRM distance-table requests and stores the 3 nearest containers per address.
Route geometry is skipped by default; the map fetches missing route lines through live OSRM fallback when an address is selected.
Use --include-route-geometries only when you intentionally want to prefetch and store simplified route geometry for the 3 nearest containers per address.
After a route-geometry run with route cache keys, unchanged route geometries are reused automatically; use --refresh-routes to force a full route refresh.
Pushes to main run .github/workflows/pages.yml, build dist/, and deploy that artifact to GitHub Pages.
After deploying SEO or content changes, use Google Search Console for the property https://afvalcontainers-warmenhuizen.nl/:
- Submit or resubmit
https://afvalcontainers-warmenhuizen.nl/sitemap.xml. - Run URL inspection and request indexing for:
https://afvalcontainers-warmenhuizen.nl/warmenhuizen/https://afvalcontainers-warmenhuizen.nl/tuitjenhorn/https://afvalcontainers-warmenhuizen.nl/analyses/https://afvalcontainers-warmenhuizen.nl/methodiek/
- Confirm that
https://afvalcontainers-warmenhuizen.nl/renders Warmenhuizen directly while the canonical URL remainshttps://afvalcontainers-warmenhuizen.nl/warmenhuizen/. - Ask relevant local sites to link to the most useful canonical page, for example Dorpsraad Warmenhuizen, local news pages, village associations, and public discussion pages about the container plans.
- When sharing on social media or messaging apps, use the canonical village URLs rather than query-string URLs.