Release v2.1 - Obsidian integratie: slaat rapporten op in huizenjacht/ map
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
---
|
||||
name: adres-analyse
|
||||
description: Genereer uitgebreide adresrapporten met geocodering, isochronen (bereikbaarheidskaarten), en andere locatie-gerelateerde analyses voor Nederlandse adressen.
|
||||
tags: [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`)
|
||||
|
||||
```bash
|
||||
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):
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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`
|
||||
|
||||
```bash
|
||||
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_
|
||||
```
|
||||
Reference in New Issue
Block a user