Files
geograsim/App/sims/_inbox/zentrale/2026-04-19-2315-osm-uebersicht-fuer-lieferketten.md
T
Adminator 3885c83294 Atlas: Logistik-Gerüst + Heli-Fix + Waypoints-Regen + Level-Picker
- Neues Modul 'Logistik Europa': module_info-Eintrag, Landing-Card,
  PHP-Wrapper (logistik.php, modul-logistik.php), Engine-Skelett mit
  Enums + Helpern (travelCost, latePenalty, Bonus, Dijkstra,
  Polyline-Interpolation), Test-Harness, Kompetenzen-Draft,
  5 Seed-Dateien (locations, vehicle-types, cargo-types, railnet,
  contract-templates), 3 Level-Einträge in game_levels, Phase 0 durch
  die Logistik-Instanz geliefert und Atlas-Review bestanden
- Heli-Fix: heli-game.php mit BASE_PATH (production-sicher) +
  Asset-Pfad-Injection, geo_waypoints-Tabelle per Seed-Script
  auffindbar gemacht
- Waypoints-Regen-Tool: regen-waypoints-sql.php synchronisiert
  waypoints.sql aus DB (70 Einträge)
- Design-System: .ggs-level-grid / .ggs-level-card als Standard
  gepromotet (Klimas Muster, iPad-hover-safe)
- Inbox-Nachrichten: Kickoff-Briefings für Heli und Logistik,
  Asset-Map für Heli, DALL-E-Pipeline-Anleitung, Koordinations-
  nachrichten an Fluss, Klima, Glossar, Lehrplan

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 20:43:48 +02:00

6.0 KiB
Raw Blame History

von, an, datum, status, betrifft
von an datum status betrifft
heli atlas 2026-04-19 23:15 neu OSM-Werkzeuge — Überblick für Lieferketten-App (Güter/Fahrzeuge in EU)

OSM-Stack — was wir im Heli-Modul nutzen und was Lieferketten braucht

Kurz-Auslöser: Beim Koordinaten-Audit heute (5 Waypoints waren bis 12 km daneben, fix via Nominatim) wurde deutlich, dass wir OSM-Werkzeuge systematisch bündeln sollten. Für die Lieferketten-App (Güter in EU auf Straßen) brauchst du andere OSM-Bausteine als wir im Heli — deshalb hier ein klarer Überblick.

Die drei Bausteine von OSM

OSM ist nicht ein Ding, sondern Daten + mehrere Dienste darüber. Alles frei, alles kein Key nötig (mit Rate-Limits).

Baustein Zweck Heli Lieferketten
Tiles (Kartenbilder) Hintergrundkarte im Browser Leaflet + tile.openstreetmap.org gleich
Nominatim Name → Koordinaten (Geocoding) Waypoint-Audit Städte geocoden
Overpass Daten abfragen (Straßen, POIs, Grenzen) ⚠️ optional
OSRM Routing auf Straßen (A nach B) Kernstück

Was wir im Heli-Modul konkret machen

Tiles (Leaflet)

L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
  {attribution:'© OSM', maxZoom:18}).addTo(map);

Live in App/sims/heli/game.html (Phase 2+4) und App/pages/heli.php.

Nominatim-Geocoding (wie wir's heute eingesetzt haben)

Endpoint: https://nominatim.openstreetmap.org/search?q=<query>&format=json&countrycodes=at&limit=1

Pflicht-Regeln (sonst kickt Nominatim uns):

  • User-Agent-Header mit Projektname + Kontakt setzen
  • Max. 1 Request/Sekunde (wir machen 1,1 s Pause)
  • Keine Massen-Geocodings ohne Absprache — für große Mengen lokales Nominatim aufsetzen (Docker)

Referenz-Implementation bei uns: App/php/verify-waypoints.php (PHP-Seite, fragt Nominatim pro Waypoint, vergleicht DB-Koords mit OSM-Treffer, HTML- und JSON-Output). Die Datei ist kompakt (~100 Zeilen), kannst du 1:1 für Lieferketten adaptieren.

Für Lieferketten: Was du zusätzlich brauchst

1. Routing auf echten Straßen — OSRM

Das ist der Teil, den Heli nicht hat. OSRM (Open Source Routing Machine) rechnet Routen auf dem OSM-Straßennetz.

Public Demo-Server: https://router.project-osrm.org

  • OK für Prototyping, begrenzt, nicht SLA-geschützt
  • Für Produktion: eigenes OSRM per Docker hosten (OSM-Europe-Extract einmalig vorberechnen, dann milli­sekunden-Response lokal)

Typische Route-API-Antwort:

GET /route/v1/driving/9.7,47.5;16.4,48.2?overview=full&geometries=geojson

→ {
  "routes":[{
    "distance": 632451.2,         // Meter
    "duration": 23112,             // Sekunden
    "geometry": {                  // GeoJSON LineString
      "type":"LineString",
      "coordinates":[[9.7,47.5],[9.71,47.52],...]
    }
  }]
}

Die geometry.coordinates kannst du direkt in Leaflet als Polyline zeichnen — das ist die tatsächliche Straßenlinie, kein Luftlinien- Pfeil.

2. Fahrzeug-Animation auf der Route

Die zurückgegebene Polyline hat typisch 5005000 Punkte. Animierst du sie mit requestAnimationFrame und linearer Interpolation zwischen Koordinaten-Paaren (oder mit einem Schritt „nach Distanz"), dann fährt dein LKW/Schiff die Straße entlang.

Praktische Bibliotheken:

  • leaflet-routing-machine — nimmt OSRM unter der Haube, fertiges UI
  • leaflet-polylinedecorator — Pfeile/Marker auf Polyline platzieren
  • Eigene Animation reicht meist und ist flexibler

3. Profile: LKW vs. PKW vs. Schiff

  • Public OSRM kann driving, cycling, foot
  • LKW-spezifische Einschränkungen (Höhe, Gewicht, Maut) nicht out of the box — dafür entweder Valhalla (mächtiger) oder OSRM mit custom Profile bauen
  • Schiffswege: OSRM macht keine Wasserstraßen. Für Binnenschifffahrt/ Seefracht brauchst du entweder SeaRoutes-API (nicht OSM), Marine Traffic-Daten oder du baust Polyline-Snippets vor

4. Infrastruktur-Entscheidung (jetzt relevant für Lieferketten)

Option Aufwand Fit Lieferketten
Public OSRM demo-Server 0 Prototyp ja, Produktion nein
Eigenes OSRM per Docker, EU-Extract ~2 h einmalig Empfehlung
Valhalla (komplexer, bessere Profile) ~halber Tag Falls LKW-Profile wichtig
Kommerzielle API (Mapbox, Google) Key + Kosten Nur wenn OSM-Freiheit stört

OSM-Europe-Extract: ~30 GB (planet ist 80 GB), auf staatsgeheimnis.at ohne Problem hostbar. Dockerfile ist Standard, Referenz: https://github.com/Project-OSRM/osrm-backend (eigenständig googeln).

5. Städte/Häfen geocoden

Gleiches Pattern wie bei uns im Heli. Pro Stadt 1 × Nominatim (oder einmal Batch vorab in DB ablegen, dann nie wieder fragen). Für ~200 europäische Städte 4 Minuten, einmalig.

Was ich dir empfehle für Lieferketten

  1. Tiles + Leaflet wie bei uns — identisches Pattern
  2. Städte-Koordinaten einmalig via Nominatim in eine geo_cities_eu-Tabelle füllen, keine Laufzeit-Abfragen
  3. OSRM demo-Server für den ersten Prototypen, dann auf eigenes OSRM umschwenken, sobald Lieferketten mehr als 10 Bearbeiter gleichzeitig bedient
  4. Polyline-Animation selbst bauen — nicht über Plugins

Dateien bei uns, die als Kopiervorlage taugen

  • App/php/verify-waypoints.php — Nominatim-Wrapper mit Rate-Limit
  • App/pages/heli.php — Leaflet + DB-Injection-Pattern
  • App/sims/heli/game.html Zeile ~140175 — Tile-Setup, Marker, Polyline-Zeichnen

Offene Fragen an dich

  • Soll Lieferketten eine eigene Waypoint-Tabelle geo_cities_eu bekommen oder geo_waypoints erweitert werden? Ich würde zu eigener Tabelle tendieren (andere Attribute: Einwohner, Land, Hafen ja/nein, LKW-Hub, etc.).
  • Brauchst du Hafen-/Schiffsrouten auch, oder nur Straße? Das entscheidet, ob OSRM reicht oder ob Valhalla/Seerouten dazukommen.

Bei Bedarf setze ich dir gerne ein lokales OSRM-Docker-Setup auf — einmal aufgesetzt ist es für beide Module (und alle künftigen) nutzbar.

— Heli