banyaro/tools/osm-extract
rene 30e82b7931 POI-Refresh: Abdeckung auf alle 15 Tile-Laender erweitert (war nur DACH)
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.
2026-06-06 10:13:56 +02:00
..
.gitignore POI-Karte: Offline-Import aus OSM statt Live-Overpass-Scan (Build 4) 2026-06-03 20:44:32 +02:00
Dockerfile POI-Karte: Offline-Import aus OSM statt Live-Overpass-Scan (Build 4) 2026-06-03 20:44:32 +02:00
extract_osm_pois.py POI-Karte: Offline-Import aus OSM statt Live-Overpass-Scan (Build 4) 2026-06-03 20:44:32 +02:00
INSTALL.md POI-Karte: Offline-Import aus OSM statt Live-Overpass-Scan (Build 4) 2026-06-03 20:44:32 +02:00
load_into_prod.py POI-Karte: Offline-Import aus OSM statt Live-Overpass-Scan (Build 4) 2026-06-03 20:44:32 +02:00
README.md POI-Karte: Offline-Import aus OSM statt Live-Overpass-Scan (Build 4) 2026-06-03 20:44:32 +02:00
refresh.sh POI-Refresh: Abdeckung auf alle 15 Tile-Laender erweitert (war nur DACH) 2026-06-06 10:13:56 +02:00

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 und user_map_pois (Community-Marker) bleiben unberührt.
  • Peak-RAM ~12 GB, hartes mem_limit: 4g als 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

  1. Systemsteuerung → Aufgabenplaner → Erstellen → Geplante Aufgabe → Benutzerdefiniertes Skript
  2. Benutzer: root (für Docker-Zugriff)
  3. Zeitplan: monatlich, z. B. am 1. um 04:00 (lastarm)
  4. 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/banyaro an 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.