Files
adres-analyse/SKILL.md
T

4.9 KiB

name, description, tags
name description tags
adres-analyse Genereer uitgebreide adresrapporten met geocodering, isochronen (bereikbaarheidskaarten), en andere locatie-gerelateerde analyses voor Nederlandse adressen.
geocoding
isochrone
routing
maps
locatie-analyse
pdok
ors

Adres Analyse

Genereer modulaire rapporten voor Nederlandse adressen. Elk onderdeel wordt als aparte sectie toegevoegd aan het rapport.

Rapport generatie

Hoofdscript: scripts/rapport.py (ook geïnstalleerd op /root/adres-analyse/rapport.py)

python3 scripts/rapport.py "Adres Plaats"

Output is markdown formaat, direct naar stdout (voor Telegram) én wordt opgeslagen in Obsidian vault (map: huizenjacht).

Huidige onderdelen

1. Bereikbaarheid (Isochroon)

  • Auto profiel: driving-car, 20 minuten, blauw op de kaart
  • Fiets profiel: cycling-regular, 30 minuten, groen op de kaart
  • Metrics: Oppervlakte (km²), reach factor, geografisch bereik
  • Data bron: ORS op 192.168.1.71:9080

2. Voorzieningen in de buurt

  • Bron: lokale PostGIS database met geselecteerde POI's uit heel Nederland OSM extract
  • Docker: postgis/postgis op poort 5433, database adresanalyse
  • Import: import-osm.sh downloadt netherlands-latest.osm.pbf en osm-poi-import.py importeert alleen shop=supermarket en amenity=school
  • Routeverrijking: ORS Matrix voor driving-car en cycling-regular
  • Output: top 5 supermarkten en top 5 scholen in rapport + markers op Folium kaart

3. (Toekomstige onderdelen)

  • OV bereikbaarheid
  • Luchtkwaliteit
  • Demografie
  • Vastgoeddata

Workflow (intern)

Stap 1: Geocoding (adres → coördinaten)

Gebruik PDOK Locatieserver (gratis, geen API key nodig):

curl -s "https://api.pdok.nl/bzk/locatieserver/search/v3_1/free?q={adres}&rows=5&fl=centroide_ll,weergavenaam,postcode,woonplaatsnaam,type,huisnummer"

Parsing:

  • Zoek naar type=adres voor exacte adres match (niet straat)
  • centroide_ll is in formaat POINT(lon lat) → split op spatie, coords[0]=lon, coords[1]=lat
  • Fallback naar eerste resultaat als geen adres match

Stap 2: Isochroon ophalen

POST naar ORS:

curl -s -X POST "http://192.168.1.71:9080/ors/v2/isochrones/driving-car" \
  -H "Content-Type: application/json" \
  -d '{
    "locations": [[lon, lat]],
    "range": [1200],
    "attributes": ["area","reachfactor","total_pop"]
  }'

Parameters:

  • range in seconden (20 min = 1200)
  • Response bevat GeoJSON FeatureCollection met polygon geometrie
  • GeoJSON wordt opgeslagen in /tmp/isochroon_{timestamp}.geojson

Stap 3: Kaart genereren (optioneel)

Gebruik script: scripts/generate-map.py

python3 scripts/generate-map.py "Griendvelden 14, Best" /root/adres-analyse/kaart.html

Voor Telegram delivery:

  1. Open HTML in browser: browser_navigate naar file:///root/adres-analyse/kaart.html
  2. Screenshot maken: browser_vision met vraag over kaart inhoud
  3. Screenshot pad gebruiken in MEDIA: directive voor Telegram

Vereisten: pip install folium shapely

Pitfalls

  1. Geocoding exactheid: PDOK zoekt op straatnaam als huisnummer niet exact matcht - altijd checken of type=adres in response. Zoek door eerste 5 resultaten voor adres match.

  2. ORS cycling profielen niet geactiveerd: Alleen driving-car werkt momenteel. Fietsprofielen geven error "RoutingProfile.getGraphhopper() is null". Zie references/ors-setup.md voor activatie-instructies.

  3. Coördinaten volgorde: PDOK geeft POINT(lon lat) (WGS84), maar ORS verwacht [[lon, lat]] in array. Let op volgorde bij parsen.

  4. Oppervlakte conversie: ORS geeft area in m², niet km². Deel door 1_000_000 voor km² of 10_000 voor hectare.

  5. Folium installatie: pip install folium shapely nodig voor kaartgeneratie (niet voor basis rapport).

  6. Telegram media: HTML-kaarten werken niet direct in Telegram - maak PNG screenshots via browser tools.

  7. Rapport zonder kaart: Het rapport.py script genereert alleen tekst. Voor visuele kaart: gebruik apart folium script + browser screenshot workflow.

  8. Obsidian API: Vereist dat Obsidian draait met Local REST API plugin ingeschakeld. Token en host staan in script. Bestandsnaam wordt gegenereerd met timestamp om collisions te voorkomen.

Uitbreiding

Nieuwe onderdelen toevoegen:

  1. Voeg functie toe aan /root/adres-analyse/rapport.py
  2. Roep aan in genereer_rapport() na geocoding
  3. Update deze skill met nieuwe sectie onder "Huidige onderdelen"
  4. Verhoog onderdeel teller in output footer

Voorbeeld rapport

📍 **Adres Analyse Rapport**
Gegenereerd: 19-06-2026 18:42

🔍 Geocoding...
**Adres:** Griendvelden 14, 5685JL Best
**Coördinaten:** 51.505547, 5.370553

🚗 **Bereikbaarheid (Auto 20 min)**
**Oppervlakte:** 316.8 km²
**Reach factor:** 0.091
**Bereik:** 51.378°-51.679°N, 5.128°-5.530°E

💾 Data opgeslagen: `/tmp/isochroon_20260619_184239.geojson`

---
_Onderdeel 1/?: Isochroon bereikbaarheid_