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.