Der monatliche DSM-Job fragte nur germany/austria/switzerland ab, die Karte deckt aber TILES_REGIONS (DACH + 12 Anrainer) ab -> POIs fehlten ausserhalb DACH. Laenderliste jetzt in docker-compose.osm.yml als Env gesetzt (wirkt ohne Image-Rebuild) und als Default in refresh.sh gespiegelt. |
||
|---|---|---|
| .. | ||
| .gitignore | ||
| Dockerfile | ||
| extract_osm_pois.py | ||
| INSTALL.md | ||
| load_into_prod.py | ||
| README.md | ||
| refresh.sh | ||
OSM-POI Offline-Refresh (Build 4)
Ersetzt das Live-Scannen gegen overpass-api.de (war wiederholt OSM-Bann-Quelle)
durch einen monatlichen Offline-Batch: POIs werden aus den Geofabrik-OSM-Daten
extrahiert und in die Produktiv-DB geladen. Danach keine OSM-Live-Last mehr.
Bestandteile
| Datei | Zweck |
|---|---|
extract_osm_pois.py |
pbf → osm_pois-Schema (pyosmium). Kanonisches Kategorie→Tag-Mapping. |
load_into_prod.py |
Extrakt → Produktiv-DB. Schützt user_edited=1, ersetzt den Rest. |
refresh.sh |
Orchestrierung im Container: download → tags-filter → extract → load. |
Dockerfile |
Image mit osmium-tool + pyosmium. |
../../docker-compose.osm.yml |
Eigener Service, nicht im Default-Stack. |
Was es tut
- Lädt CH/AT/DE von Geofabrik (~5,7 GB), dampft sie mit
osmium tags-filter(streaming, <500 MB RAM) auf die relevanten Objekte ein, extrahiert die 9 Ban-Yaro-Kategorien und lädt sie in/data/banyaro.db. - Sicherheitskopie der DB vor jedem Lauf (letzte 3 bleiben).
user_edited=1-POIs unduser_map_pois(Community-Marker) bleiben unberührt.- Peak-RAM ~1–2 GB, hartes
mem_limit: 4gals Schutzschranke. - Aktuelle Größenordnung: DACH ~1,45 Mio POIs, ~180 MB.
Manuell ausführen (Test)
cd /pfad/zu/banyaro # dort, wo docker-compose.yml liegt
docker compose -f docker-compose.osm.yml build
docker compose -f docker-compose.osm.yml run --rm osm-refresh
Monatlich per DSM-Aufgabenplaner
- Systemsteuerung → Aufgabenplaner → Erstellen → Geplante Aufgabe → Benutzerdefiniertes Skript
- Benutzer:
root(für Docker-Zugriff) - Zeitplan: monatlich, z. B. am 1. um 04:00 (lastarm)
- Aufgabeneinstellungen → Benutzerdefiniertes Skript:
cd /volume1/docker/banyaro && \
/usr/local/bin/docker compose -f docker-compose.osm.yml run --rm osm-refresh \
>> /volume1/docker/banyaro/data/osm-refresh.log 2>&1
Pfad
/volume1/docker/banyaroan euer Compose-Verzeichnis anpassen. Docker-Binary auf DSM ist meist/usr/local/bin/docker(docker compose), bei älteren DSM ggf.docker-compose.
Rollback
Vor jedem Lauf wird banyaro.pre-osm-JJJJMMTT.db neben der DB abgelegt. Im
Notfall App stoppen, diese Datei auf banyaro.db zurückkopieren, App starten.