GeoFire

Letzter Import: 2026-04-18 00:50:56

🏠 Adress-Routing

11334Geroutet
168Wartend
15049Queue fertig
6Fehler
Fehlgeschlagene Items anzeigen (6)
ADRCDVersucheFehlerZeitpunkt
7080347 3 No routable fire stations found
7556937 3 No routable fire stations found
5525035 3 No routable fire stations found
5525043 3 No routable fire stations found
5513499 3 No routable fire stations found
5526633 3 No routable fire stations found
Zuletzt abgedeckte Gemeinden
Aschach an der Steyr 2026-06-09 Nußbach 2026-06-09 Kematen an der Krems 2026-06-09 Schiedlberg 2026-06-08 Piberbach 2026-06-07 Sierning 2026-06-07 Kremsmünster 2026-05-20 Waldneukirchen 2026-05-20

📍 Straßenpunkte-Routing

614,666Punkte gesamt
79,148In Gemeinden
13,612Geroutet
65,536Offen
17.2% abgeschlossen

Letzte Updates

19.05.2026
Gemeinde-Detail: Straßenpunkte-Tab
Neuer Tab "📍 Straßenpunkte" in `gemeinde_detail.php` zeigt road_points der Gemeinde mit Straßenname, Link-ID, FRC, Position und Koordinaten. Straßen-Dropdown filtert nach GIP-Straßennamen. Pagination (50/Seite). Button "Auf Karte zeigen" in Adressen- und Straßenpunkte-Tab zeigt alle Punkte der gewählten Straße als grüne Marker auf der Hauptkarte. Neues `gkz`-Feld in `road_points`-Tabelle (Schema-Migration + `generate_road_points_gkz.php` für Point-in-Polygon-Zuweisung).
19.05.2026
Straßenpunkt-Dossier
Neue Seite `road_point_dossier.php` — analog zum Address-Dossier. Zeigt für einen Straßenpunkt: Straßenname, FRC-Kategorie, Link-Info, Gemeinde, Karte + Satellitenansicht, nächste 5 Feuerwehren (Luftlinie) mit Markern, und Adressen in der Nähe (≤200m) mit Link zum Address-Dossier. Erreichbar über 📄-Icon in der Straßenpunkte-Tabelle.
19.05.2026
Road Points Cron Job
Neuer Cron-Endpoint `cronjob_road_points.php` — generiert fehlende road_points (FRC 0-4) und weist GKZ zu. Idempotent, 55s-Zeitlimit, inkrementell. Straßenpunkte fließen in Feuerwehr-Einzugsgebiete-Berechnung ein (`FireStationZoneCalculator`).
19.05.2026
FRC 0-4 Erweiterung
Road Points Generierung von FRC 0-2 auf FRC 0-4 erweitert (inkl. Landesstraßen wie L1359/Sierningerstraße die im GIP als FRC 4 klassifiziert sind). 614k Punkte total, 79k in OÖ-Gemeinden.
26.05.2026
Road Points (Straßenpunkte)
Automatisch generierte Punkte alle 100m auf Autobahnen (FRC 0), Bundesstraßen (FRC 1) und Landesstraßen (FRC 2). 178.974 Punkte aus 71.356 Links. Dienen als Routing-Start/Zielpunkte für Erreichbarkeitsanalysen. Generierung via CronJob (`generate_road_points.php`).
26.05.2026
Turn-Penalty Geometrie-Fix
Abbiegewinkel werden jetzt aus den tatsächlichen Zwischenkoordinaten (gip_link_coordinate) nahe dem Knoten berechnet, nicht mehr aus den entfernten Link-Endpunkten. Kreisverkehre und enge Kurven werden korrekt als Abbiegevorgänge erkannt.
26.05.2026
Routing-Fallback bei Netzbrüchen
Dreistufiger Fallback wenn keine Route gefunden wird: (1) ohne Turn-Restrictions, (2) mit Pedestrian-Netzanbindung. Löst Probleme bei isolierten GIP-Netzkomponenten.
26.05.2026
Coverage-Status korrigiert
Gemeinde-Browser zeigt jetzt korrekt "Teilweise abgedeckt" statt "Abgedeckt" wenn noch Adressen in Bearbeitung oder fehlgeschlagen sind. Neue Status: ✅ Abgedeckt, 🔄 Teilweise, ⚠️ nicht erreichbar.
15.05.2026
Blaulicht-Faktor für Feuerwehr-Routing (variabel pro FRC)
Neuer `EMERGENCY_SPEED_FACTOR_BY_FRC` im `GraphLoader` — statt eines konstanten Faktors wird pro Straßenkategorie (FRC) ein eigener Multiplikator angewendet. Basierend auf Recherchen zu offiziellen Feuerwehr-Planungswerten (40 km/h innerorts, 60 km/h außerorts) und DGUV-Studie. Faktoren: FRC 0=1.2, 1=1.3, 2=1.5, 3=1.8, 4=1.5, 5=1.4, 6=1.4, 7=1.6, 8=1.4. Beispiel: L1330 (FRC 3) steigt von 33 km/h auf 60 km/h, Zeughausweg (FRC 7) von 21 km/h auf 34 km/h. Algorithmus-Version `v6-frc-emergency-speed`.
15.05.2026
Dokumentationsseite: Routing-Annahmen
Neue Seite `routing_assumptions.php` dokumentiert alle Datenquellen (GIP, BEV), Berechnungsfaktoren (FRC-Min-Speed, LKW-Faktor, Blaulicht-Faktor, Steigungsberechnung), Quellenangaben (HDM-4, FGSV, HCM) und bekannte Einschränkungen. Konstanten werden live aus dem Code gelesen.
15.05.2026
Fix: Routing-Karte zeigte falsche Fahrtrichtung
`dossier_routing.php` berechnete die Route vom Ziel zur Feuerwehr statt umgekehrt. Das führte dazu, dass bergauf- statt bergab-Steigungen angezeigt wurden (z. B. 18 km/h statt 35 km/h auf der L1330). `fetchRoute()`-Parameter vertauscht — jetzt korrekt: Feuerwehr → Adresse.
14.05.2026
SubgraphLoader: 3km-Distanz-Threshold
Der `SubgraphLoader` lädt den lokalen Graphen nur noch, wenn die maximale Luftlinie zu einem Ziel > 3 km beträgt. Für Kurzstrecken (z. B. 94m) war der Lade-Overhead (~1.2s) 400× langsamer als DB-only-Routing (~3ms). Bei Langstrecken (z. B. 10km) bringt der Subgraph einen **10.7× Speedup** (6.5s → 0.6s). Messung via `_debug_threshold.php`.
13.05.2026
Fix: Feuerwehr-Zonen-Polygone
`FireStationZoneCalculator` erzeugte durch fehlerhaften Kontur-Tracer (broken `chainEdges` bei T-Kreuzungen) nur winzige oder leere Polygone. Ersetzt durch robustes MultiPolygon aus Zell-Rechtecken mit zeilenweiser Zusammenfassung (60 statt 589 Sub-Polygone für Bad Hall). Koordinaten konsistent aus Grid-Indizes berechnet. Zonen-Overlay auf `gemeinde_detail.php` zeigt jetzt korrekte Einzugsgebiete.
13.05.2026
Fix: Feuerwehr-Zonen für Crawler-Only Stationen
Feuerwehren ohne BEV-ADRCD (z.B. "FF Rohr im Kremstal" aus Crawler-Daten) hatten leere `feuerwehr_adrcd` in `address_nearest_fire_station`. Der `FireStationZoneCalculator` hat diese Zellen als `null` behandelt und übersprungen. Jetzt wird für leere ADRCDs ein synthetischer Key aus dem Namen-Hash erzeugt, sodass auch Crawler-Only-Feuerwehren als eigene Zone gerendert werden.
13.05.2026
Zonen-Auflösung deutlich erhöht
Starrer 50×50-Zellenraster (ca. 85m×130m für Bad Hall) ersetzt durch dynamisches Grid. Ziel ist 10m-Zellen, aber mit Hard-Limit von 90.000 Zellen (Performance). Ergebnis für Bad Hall: 241×373 = 89.893 Zellen à ca. 17m×17m. Kleinere Gemeinden bekommen automatisch feinere Zellen (näher an 10m).
13.05.2026
Fix: Downhill-Bonus falsch
`GraphLoader::DOWNHILL_BONUS_TRUCK` war `0.95` — weil multipliziert, machte das LKWs bergab 5% langsamer statt schneller. Korrigiert auf `1.05` (echter +5% Bonus).
09.05.2026
Gemeinde-Detail: Straßenfilter
Im Adressen-Tab von `gemeinde_detail.php` gibt es jetzt eine Straßen-Auswahlbox. Dropdown zeigt alle Straßen der Gemeinde mit Adressanzahl an. Auswahl filtert die paginierte Adressliste auf eine Straße. Pagination und Tab-Links behalten den `skz`-Parameter bei. "Filter zurücksetzen"-Link neben dem Dropdown.
09.05.2026
Gemeinde-Detail: Kombi-Dashboard
Neue Seite `gemeinde_detail.php` vereint Funktionen von `gemeinde_browser.php`, `browser.php` und `feuerwehr.php`. Für eine ausgewählte Gemeinde: Karte mit Grenze + Feuerwehr-Markern (BEV blau, Crawler rot, auto-fitBounds), Sidebar mit Stats (Adressen, Feuerwehren, Coverage), Tabs für Adress-Tabelle (paginiert, 50/Seite, mit Gebäude-Info, Koordinaten, Dossier-Link, Karten-Popup) und Feuerwehr-Tabelle (mit Quelle-Badge). Nav-Link in `index.php`.
09.05.2026
Gemeindegrenzen-Anzeige im Daten-Browser
OÖ Gemeindegrenzen (BEV VGD, 4thOrder, 10m vereinfacht) werden auf der Karte in `browser.php` als blaues GeoJSON-Overlay angezeigt (halbdurchsichtige Füllung, blaue Umrandung). Neue API `gemeinde_grenzen_api.php` liefert GeoJSON pro GKZ oder als komplette FeatureCollection (`?all=1`). Daten kommen aus neuer Tabelle `gemeinde_grenzen` (Schema + Import-Skript `_import_gemeinden_grenzen.php`).
09.05.2026
Queue: Coverage-Batch auf OÖ beschränkt
Die automatische Queue-Befüllung (`enqueueCoverageBatch`) läuft jetzt ausschließlich für Oberösterreich (GKZ beginnt mit `4`). Betrifft `findNextUnprocessedGkz()` und den Sequential-Fallback.
09.05.2026
Queue: Mehrere Coverage-Batch-Bugfixes
`LIMIT :limit` mit PDO-Param funktioniert in MariaDB nicht zuverlässig — jetzt direkt als Integer im SQL-String. `buildSkipSet()` (Memory-Bombe bei großen Caches) komplett entfernt und durch `NOT EXISTS`-Subqueries in SQL ersetzt. `ORDER BY a.ADRCD` hinzugefügt für deterministische Pagination. "Done"-Markierung funktioniert jetzt korrekt, wenn ein GKZ exakt `batchSize` Adressen hat.
09.05.2026
Startseite: Zuletzt abgedeckte Gemeinden
`index.php` zeigt unter der Queue-Statistik die letzten 8 Gemeinden an, die der Coverage-Worker als fertig markiert hat (`address_coverage_progress` + `GEMEINDE`).
06.05.2026
Version-basierte Cache-Invalidierung
Neue Klasse `RoutingInvalidator` ersetzt zeitbasierte Cache-Ablauf. Statt alle 30 Tage wird der Cache nur noch bei tatsächlichen Algorithmus-Änderungen geleert. `routing_config`-Tabelle speichert die aktuelle `ALGO_VERSION`. Der Worker prüft beim Start, ob sich die Version geändert hat, und leert dann automatisch `route_cache`, `address_nearest_fire_station`, `address_dossier_queue` und `address_coverage_progress`. Die neue Version `v3-slope-turn-lkw85` ist bereits aktiv.
06.05.2026
Queue: Durchgehender Coverage-Cycle
`buildSkipSet()` blockiert nicht mehr auf alte `done`-Einträge. `pruneStaleDoneEntries()` löscht `done`-Items älter als 30 Tage. `enqueueCoverageBatch()` kann jetzt sequentiell durch alle Adressen iterieren, ohne auf verwaiste `done`-Einträge zu hängen. Coverage-Progress wird bei einem Algorithmus-Wechsel automatisch zurückgesetzt.
06.05.2026
LKW-Geschwindigkeitsfaktor 0.75 → 0.85
LKW-Geschwindigkeit im Routing wird jetzt mit Faktor 0.85 statt 0.75 aus der PKW-Geschwindigkeit abgeleitet (max. weiterhin 80 km/h). Betrifft `GraphLoader::TRUCK_SPEED_FACTOR`. Alle gecachten Routen (`route_cache` und `address_nearest_fire_station`) wurden invalidiert und werden im Hintergrund neu berechnet.
06.05.2026
Eintrittspunkt-Warnung & Gebäudepunkt-Routing
`EntryPointAnalyzer` testet Adresspunkt + alle Gebäudepunkte gegen das GIP-Straßennetz und wählt den optimalen Startpunkt für Routing. Adress-Dossier zeigt Warnhinweis, wenn der Eintrittspunkt > 100 m entfernt ist. `routing_api.php` unterstützt jetzt auch WGS84→WGS84-Routing für Feuerwehren ohne ADRCD-Match.
03.05.2026
Routing-Detailanalyse im Adress-Dossier
Neuer Link "Detailanalyse" neben der Feuerwehr-Tabelle im Adress-Dossier (nur Web-Ansicht). Öffnet `dossier_routing.php` mit Leaflet-Karte: Sternfahrt-Darstellung aller gelisteten Feuerwehr-Anfahrtswege in Geschwindigkeitsansicht (farbcodiert nach km/h). Jede Feuerwehr-Route kann per Checkbox ein-/ausgeschaltet werden. Routen werden via `routing_api.php` (LKW) berechnet.
03.05.2026
Halbe-Minuten-Rundung bei Anfahrtszeiten
Alle angezeigten Anfahrtszeiten werden jetzt auf halbe Minuten aufgerundet statt auf ganze Minuten gerundet (z. B. 3 Min. 10 Sek. → "3,5 Min."). Betrifft RouteBuilder, NearestFireStationService und die JS-Anzeige auf der Routing-Seite.
03.05.2026
Queue-Bugfix: Done-Items nicht mehr zurückgesetzt
`enqueue()` überschreibt Items mit Status `done` oder `processing` nicht mehr — verhindert, dass der Coverage-Batch bereits fertige Berechnungen wieder auf `pending` zurücksetzt.
03.05.2026
Queue-Bugfix: Coverage-Batch erkennt bereits gequeuete Adressen
`enqueueCoverageBatch()` prüft jetzt auch die Queue-Tabelle (nicht nur den Cache), bevor neue Adressen eingereiht werden. Verhindert, dass bereits verarbeitete Adressen fälschlich als "neu eingereiht" gezählt werden und GKZs vorzeitig als erledigt markiert werden.
02.05.2026
Eigene-Gemeinde-Regel für Feuerwehr-Anzeige
Wenn eine Adresse in Gemeinde X liegt, muss in den angezeigten nächsten Feuerwehren mindestens eine aus dieser Gemeinde enthalten sein (sofern es überhaupt eine gibt). Falls nicht, wird die beste eigene-Gemeinde-Feuerwehr angehängt. Gilt sowohl für den Haversine-Fallback als auch für berechnete Routing-Ergebnisse. Bestehender Cache (`address_nearest_fire_station`) wurde geleert, damit alle Adressen mit der neuen Regel neu berechnet werden.
02.05.2026
Worker: leere Ergebnisse als Failed markieren + Stuck-Done-Recovery
Worker markiert Adressen ohne routbare Feuerwehren jetzt als `failed` statt als `done` — verhindert "done-but-no-cache"-Fallen. `enqueue()` resettet jetzt immer auf `pending`, damit Adressen mit fehlendem Cache neu berechnet werden. 81 stuck `done`-Einträge wurden automatisch zurückgesetzt.
02.05.2026
Feuerwehr-Deaktivierung im Edit-Tool
Neue Tabelle `feuerwehr_disabled`. Im Edit-Tool (`feuerwehr_edit.php`) kann jede Feuerwehr einzeln deaktiviert/aktiviert werden. Deaktivierte Stationen werden in `NearestFireStationService::loadFireStations()` herausgefiltert und erscheinen nicht mehr im Routing und Adress-Dossier. Cache-Invalidierung erfolgt automatisch. Deaktivierte Einträge sind in der Liste rot markiert.
02.05.2026
Worker für 30s-Cron-Timeout optimiert
Default-Runtime auf 25s gesenkt (max 30s), Safety-Margin von 2s vor dem Start einer neuen Berechnung, `set_time_limit()` auf maximal 32s begrenzt. Passt zu externen Cron-Diensten mit hartem 30s-Timeout (z. B. cron-job.org).
02.05.2026
Stuck-Recovery für Queue-Worker
`processing_started_at`-Spalte in `address_dossier_queue`. Der Worker setzt sie beim Dequeue auf `CURRENT_TIMESTAMP` und löscht sie bei Done/Failed. `recoverStuckItems(15)` setzt verwaiste `processing`-Einträge (älter als 15 Minuten) automatisch zurück auf `pending`, damit sie nicht für immer blockiert bleiben, wenn ein Worker-Crash oder Timeout passiert. Schema-Migration läuft automatisch bei `Schema::initialize()`.
02.05.2026
Coverage-Batch-Accumulation
`enqueueCoverageBatch()` sammelt jetzt Adressen aus mehreren GKZs, bis `batchSize` erreicht ist — statt nach dem ersten GKZ sofort zu returnieren.
01.05.2026
Automatische Coverage-Batch-Verarbeitung
Wenn die `address_dossier_queue` leer ist, ermittelt der Worker automatisch den nächsten "Addresszug": GKZs (Gemeinden) mit Feuerwehren werden nacheinander abgearbeitet — alle Adressen der Gemeinde werden für die Hintergrund-Routing-Berechnung eingereiht. Sind alle GKZs mit Feuerwehren erledigt, folgt ein sequentieller Scan aller restlichen Adressen. `CoordinateConverter` erhält `fromWgs84()` für zukünftige räumliche Queries.
01.05.2026
Zeitlimit-basierter Worker
Der Cron-Worker verarbeitet nicht mehr eine feste Anzahl, sondern so viele Routings wie möglich innerhalb eines konfigurierbaren Zeitlimits (Default 120 Sekunden). `?limit=120` ersetzt den alten `?batch=`-Parameter. `@set_time_limit()` wird gesetzt, damit PHP das Script nicht vorzeitig beendet.
01.05.2026
PDF-Download nur bei berechneten Routing-Daten
Das Adress-Dossier bietet den PDF-Download erst an, wenn die LKW-Anfahrtszeiten zur nächsten Feuerwehr vollständig berechnet und gecacht sind. Direkte Aufrufe von `?pdf=1` ohne Cache liefern HTTP 503 mit Hinweis auf Hintergrund-Berechnung.
01.05.2026
Marker-Clustering & UI-Verbesserungen Feuerwehr-Edit
Karte auf `feuerwehr_edit.php` nutzt jetzt Leaflet.markercluster — dicht beieinander liegende Marker werden zu Clustern zusammengefasst. Bundesland-Filter bleibt nach dem Speichern erhalten (Form-Action enthält `?bl=`). Ist eine Feuerwehr die einzige in ihrer Gemeinde, wird der bearbeitbare Name automatisch auf "Feuerwehr <GemeindeName>" vorausgefüllt.
30.04.2026
Bundesland-Filter & Straßenweises Queueing
`feuerwehr_edit.php` hat jetzt einen Bundesland-Filter (Dropdown). Beim Betrachten eines Adress-Dossiers werden nicht nur die einzelne Adresse, sondern alle Adressen derselben Straße (gleiche GKZ+SKZ) für die Hintergrund-Routing-Berechnung in die Queue eingereiht.
30.04.2026
Feuerwehr-Namens-Overrides
Neue Tabelle `feuerwehr_name_override` erlaubt manuelle Namens-Eingaben für BEV-Feuerwehrgebäude. Edit-Seite (`feuerwehr_edit.php`) mit Karte, Inline-Formularen und Cache-Invalidierung. Override hat in allen Anzeigen (Dossier, Routing, Karten) höchste Priorität.
29.04.2026
Async Address-Dossier Routing
Langsame A*-Routing-Berechnung aus dem Web-Request ausgelagert. `address_dossier_queue` speichert Adressen für Hintergrund-Verarbeitung. Web-Request liefert schnellen Haversine-Fallback (~0.5s statt 10–30s). Worker (`AddressDossierWorker`) wird via externem Cron getriggert. PDO-Bugfix: keine Mischung von benannten und positionalen Platzhaltern in MariaDB.
28.04.2026
BEV-Feuerwehren im Adress-Dossier
Adress-Dossier zeigt jetzt auch BEV-Feuerwehren (Gebäudefunktion "Feuerwehr", OBJFUNKTKENNZIFFER = '04') in der Liste der nächsten Feuerwehren. Vorher wurden nur gecrawlte Feuerwehren angezeigt. BEV-Standorte werden mit Straßenname/Hausnummer oder HOFNAME als Fallback gelabelt. Ist eine Feuerwehr die einzige in ihrer Gemeinde, wird sie als "Feuerwehr <GemeindeName>" benannt. Duplikate (bereits gematchte Crawler-Einträge) werden automatisch ausgeschlossen.
28.04.2026
Routing-Performance & Debug-Timing
RouteBuilder lädt Straßennamen, Geometrien und Node-Koordinaten jetzt in 3 Batch-Queries statt O(N) pro Link. Redundante `getLinkSlope()`-DB-Queries entfernt. NearestNodeFinder komplett umgebaut: statt teurem JOIN/EXISTS auf 29 Mio. Links wird jetzt ein zweistufiger Ansatz verwendet — schneller BBox-Scan auf `gip_node` + einzelne LIMIT-1-Lookups auf `gip_link` für die nächsten Nodes. Expanding BBox-Suche (550m → 1.1km → 2.2km → 4.4km). Server-Zeit für ungespeicherte Routen von ~60s auf ~3s reduziert. Debug-Timing-Anzeige auf Routing-Seite.
27.04.2026
Nächste Feuerwehr im Adress-Dossier
Adress-Dossier zeigt jetzt die 5 nächsten Feuerwehren mit LKW-Anfahrtszeit (aus GIP-Routing). Browser-Tabelle "Adressen und Gebäude" hat neue Spalte "Nächste Feuerwehr" mit Name und Anfahrtszeit. Ergebnisse werden in `address_nearest_fire_station` gecacht.
26.04.2026
Satellitenansicht im Adress-Dossier
Adress-Dossier zeigt jetzt Satellitenbilder aus basemap.at Orthofoto (ca. 30 cm Auflösung) — online per Leaflet-Karte und eingebettet im PDF.
26.04.2026
Bundesland-Filter im Browser
Daten-Browser hat jetzt eine Bundesland-Vorauswahl (Standard: Oberösterreich). Gemeindeliste wird nach Bundesland gefiltert.
26.04.2026
Turn-Penalty Geometrie-Fix
Abbiegewinkel werden jetzt aus den tatsächlichen Zwischenkoordinaten (gip_link_coordinate) nahe dem Knoten berechnet, nicht mehr aus den entfernten Link-Endpunkten. Kreisverkehre und enge Kurven werden dadurch korrekt als Abbiegevorgänge erkannt.
26.04.2026
Bevölkerungsdaten im Dossier
Gemeinde-Dossier zeigt Einwohnerzahl (gesamt, männlich, weiblich) aus Statistik Austria OGD (Stand 2025). Für OÖ-Gemeinden: automatische Pflichtbereichsklasse nach FwAPV OÖ (§ 2) basierend auf Einwohner und Gebäudeanzahl.
25.04.2026
Steigungskosten (Elevation Routing)
LKW-Routing berücksichtigt jetzt Höhenunterschiede. Z-Koordinaten aus GIP-Daten (29,8 Mio. Punkte) werden zur Steigungsberechnung pro Straßenabschnitt verwendet. LKW bergauf: 2-4% → 85%, 4-6% → 70%, 6-8% → 55%, >8% → 45% der Normalgeschwindigkeit. LKW bergab: 5% schneller. PKW nur bei >8% Steigung leicht reduziert (90%). Quellen: HDM-4, FGSV RAS, HCM 6th Edition.
25.04.2026
Geschwindigkeitsvisualisierung
Routing-Karte zeigt Geschwindigkeit farbcodiert pro Straßenabschnitt (rot=langsam, grün=schnell). Toggle-Buttons zum Umschalten zwischen PKW/LKW-Route im Vergleichsmodus. Tooltip zeigt km/h pro Segment.
25.04.2026
Fußgänger-Routing
Neue Routing-Variante "Zu Fuß" (🚶). Nutzt Fußgänger-Befahrbarkeit (GIP Bit 0) statt PKW-Zugang. Feste Gehgeschwindigkeit 5 km/h. Keine Abbiegekosten, kein FRC-Pruning. Zeigt grundsätzliche Erreichbarkeit über das Wegenetz.
25.04.2026
Routing-Performance
Steigungsberechnung inline statt separate DB-Queries. In-Memory-Caching für Knotenkoordinaten, Abbiegebeziehungen und Link-Endpunkte. DB-basierter Route-Cache mit Algorithmus-Versionierung — wiederholte Routen werden sofort aus dem Cache geliefert.
25.04.2026
Abbiegekosten (Turn Penalties)
Routing berücksichtigt jetzt Abbiegewinkel an Kreuzungen. Sigmoid-Modell basierend auf OSRM (car.lua). PKW: max 7.5s Turn + 20s U-Turn. LKW: max 15s Turn + 45s U-Turn. Linksabbiegen leicht höher gewichtet (Rechtsverkehr).
25.04.2026
LKW-Routing
Routing unterstützt jetzt PKW, LKW und Vergleichsmodus (beides). LKW-Geschwindigkeit basiert auf reduzierter PKW-Geschwindigkeit (max 80 km/h, Faktor 0.75). Parallele Darstellung auf Karte (blau=PKW, orange=LKW).
24.04.2026
Burgenland Feuerwehr-Crawler
Burgenland-Parser über Open Data Burgenland (CSV, data.bgld.gv.at). Alle Feuerwehren mit Adresse, PLZ und Ort.
24.04.2026
Salzburg Feuerwehr-Crawler
Salzburg-Parser über Open Data Salzburg (ESRI JSON, data.gv.at). Koordinaten in MGI/GK Central, automatisch zu WGS84 konvertiert.
24.04.2026
NÖ Feuerwehr-Crawler
Niederösterreich-Parser über OpenStreetMap Overpass API (amenity=fire_station). Ergänzt Standorte die nicht im BEV enthalten sind.
24.04.2026
CronJob Token-Schutz
Crawler und Import-Endpoints per Token gesichert. Ohne ?token=... gibt es HTTP 403.
23.04.2026
Gebäudefunktionen im Dossier
Gemeinde-Dossier zeigt jetzt Gebäude nach Funktion (Feuerwehr, Schule, Apotheke, etc.) mit Anzahl.
23.04.2026
Updates auf Startseite
Changelog auf der Startseite, gepflegt über updates.md.
23.04.2026
Datenquellen-Seite
Neue Unterseite dokumentiert alle verwendeten Datenquellen (BEV, GIP, LFV-Crawler, OSM) mit Live-Status und Statistiken.
23.04.2026
Feuerwehr-Crawler OÖ
OÖ Landesfeuerwehrverband-API implementiert. 370 zusätzliche Feuerwehr-Standorte aus OÖ, die nicht im BEV-Bestand enthalten sind.
23.04.2026
BEV-Duplikat-Erkennung
Mehrstufiger Abgleich zwischen Crawler- und BEV-Daten: PLZ+Straße, GKZ+Straße, Proximity+Substring (<200m), Auto-Match (<25m). Normalisierung von ß/ss, Bindestrichen, St.→Sankt, Str.→Straße.
23.04.2026
Crawler via Browser
Crawler-Skript auch per HTTP aufrufbar, nicht nur CLI. Ermöglicht Auslösung via CronJob-Dienst.
23.04.2026
Gemeinde-Filter Fix
Crawler-Einträge erhalten beim Import automatisch die GKZ. Gemeinde-Filter auf der Feuerwehr-Seite zeigt jetzt BEV und Crawler kombiniert.
22.04.2026
Feuerwehr-Karte
Leaflet.js-Kartenansicht auf der Feuerwehr-Seite mit farbcodierten Markern (blau=BEV, rot=Crawler) und Popups.
22.04.2026
Quellenfilter
Dropdown-Filter auf der Feuerwehr-Seite: Alle / BEV-Datenbestand / Crawler. Kombinierbar mit Gemeinde-Filter.
22.04.2026
Adress-Matching
Automatischer Abgleich gecrawlter Adressen mit dem BEV-Adressregister inkl. Koordinaten-Berechnung.
21.04.2026
GIP Routing
A*-Routing auf dem GIP-Straßengraph mit Visualisierung auf Leaflet-Karte.
21.04.2026
GIP Import
Import des GIP-GeoPackage (Straßengraph OÖ) mit Knoten, Kanten und Abbiegebeziehungen.
20.04.2026
Adress-Dossier
Detailliertes Dossier pro Adresse mit Gebäudeinformationen, online und als PDF.
19.04.2026
Gemeinde-Dossier
Statistisches Dossier pro Gemeinde mit Straßen, Adressen, Ortschaften — online und PDF-Export.
18.04.2026
Daten-Browser
Durchblättern der BEV-Daten nach Gemeinde mit Straßen, Adressen und Gebäudefunktionen.
18.04.2026
BEV Auto-Import
Täglicher CronJob prüft auf neue BEV-Daten und importiert automatisch.