Datenquellen

Kategorien

  1. Grenzen & Geometrie — Wo liegt das Grundstück, wie groß ist es, was steht darauf?
  2. Widmung & Schutz — Was darf hier gebaut werden, was plant die Gemeinde?
  3. Risiko & Klima — Was bedroht das Grundstück (Wasser, Boden, Wetter)?
  4. Realnutzung & Infrastruktur — Was ist vor Ort und drumherum verfügbar?
  5. Förderung — Wer finanziert die Aktivierung mit?
  6. Immobilienpreise — Wie entwickeln sich Preise nach Region und Zeit?

Übersicht (sortiert nach Reife / Risiko)

QuelleKategorieFormatLizenzRisikoPOC-Use
basemap.at Orthofoto1WMS / WMTS / TilesOGD CC BY 4.0Niedrig✅ Erste Wahl Hintergrundkarte
GeoSphere Austria3REST JSONOGD CC BY 4.0 (meist)Mittel (Rate-Limit)✅ Erste Wahl Klima
PVGIS (EU-JRC)3REST JSONfrei, keine NutzungsbeschränkungNiedrig✅ Default PV-Ertrag (standortgenau)
Google Solar API3REST JSONMaps Platform ToS (nicht persistierbar)Mittel (Kosten/ToS)🔒 Premium dachgenau, wo Coverage
NÖGIS Widmung2WFS / WMS / JSONOGD CC BYMittel✅ Erste Wahl Widmung
NÖGIS Geogene Gefahren3WMS / WFSOGD CC BYNiedrig⚠️ Nicht im NÖ-OGD-Dienst (offen, Briefing M6)
Schutzgebiete (Natur + Wasser, NÖ)2, 3WMS-GetFeatureInfoOGD CC BY 4.0Niedrig✅ Live (Naturschutz/Natura 2000/Wasserschutz)
Lärminfo3WMS-GetFeatureInfo (Strategische Lärmkarten)OGD CC BY 4.0Niedrig✅ Live (Straße/Schiene, Lden+Lnight)
ÖV-Güteklassen (ÖROK/BMIMI)2, 4Shapefile-Jahreslieferung → PostGIS-MirrorHaftungsausschluss (keine Lizenzauflagen)Niedrig✅ Live (Pilot-Mirror, Klassen A–G)
OpenStreetMap — POI-Dichte / 15-Min4GeoFabrik-Extrakt → PostGIS-MirrorODbL 1.0 (Share-Alike)Niedrig🟡 Phase 2 (Pilot-Mirror, Nahversorgungs-Score)
Grundbuch (JustizOnline)1, 2PDF-Auszug (kostenpflichtig, kein OGD)Bundes­abgaben­ordnungHoch (Kosten + kein API für Massenabfrage)MVP (B2C on-demand) — siehe ADR-0016
ALSAG / Altlastenportal3WFSOGDHoch (Verdachts­flächen­kataster seit 1.1.2025 weg)✅ POC
Microsoft Building Footprints1GeoJSON BulkODbL (Share-Alike)Niedrig✅ POC
BEV Kataster / INSPIRE1WFS 2.0.0 GMLStandard­nutzungs­rechteHoch (Export kritisch)✅ POC
Sentinel-2 / Copernicus3, 4EU CopernicusFreiNiedrigPhase 2 +
geoland.at Aggregator1, 2WMS / WFSOGD je BundeslandNiedrigPhase 4 (Skalierung)
BDA Denkmalschutz2Statische CSV (parzellenscharf, build-time → JSON)OGD (freies Werk)Niedrig✅ Live (NÖ, KG+GstNr-Match)
RTR Breitbandatlas4REST + WMS / WFSOGDNiedrigPhase 3
Brachflächen-Dialog (BMLUK)4Karte öffentlich, API unklarOGD (Karte)Hoch (SPoF)Phase 2 (sofern Magnus klärt)
HORA 3.03WMS via LFRZReseller-Vertrag offenHoch (kommerzielle Lizenz)Erst nach Lizenz-Klärung
Gemeinderats­protokolle2HTML / PDF / gescanntöffentlich, kein APIMittel (DSGVO + DQ)Phase 3 +
KPC / LEADER / KMU.DIGITAL / aws5Webportal, kein APIFörderdatenMittel (kein API)RAG-Pipeline Phase 2 +
Mapillary1 (Street-Level)APICC BY-SA 4.0Mittel (Coverage dünn)Phase 3 + (städtisch)
Google Street View / Bing Streetside1 (Street-Level)API (kommerziell)Maps Platform ToSHoch — AI-Auswertung verboten❌ Niemals für AI-Auswertung

Implementierungsstatus (getestet / implementiert)

Quellen mit lauffähigem, idempotentem Ingest-Script (ADR-0005 Spiegelung). „Live verifiziert" = End-to-End gegen Live-Endpoint geprüft; „Script vorhanden" = implementiert, Pilot-Scope getestet, Statewide-/Cron-Ausbau dokumentiert.

QuelleStatusScript
BEV Kataster / DKM✅ Verifiziert (Pilot-bbox inkl. SW-Erweiterung Gänserndorf-Stadt; ~29,8k Parzellen via /vsicurl-Range statt 35-GB-Download)scripts/ingest-parzellen.mjs
NÖGIS Widmung✅ Verifiziert (Pilot Bez. Gänserndorf; Statewide ~73k per all-Flag)scripts/ingest-widmung.mjs
ALSAG / Altlasten✅ Verifiziert (INSPIRE-Predefined GML, Stand 2020-10-15; nur publizierte Altlasten, R-03)scripts/ingest-altlasten.mjs
Eurostat prc_hpi_q✅ Live verifiziert (AT bis Q4/2025, EU/EA + alle MS)scripts/ingest-prices-eurostat.mjs
Statistik Austria HPI✅ Live verifiziert (OGD-Cube, 5 Messgrößen, AT gesamt)scripts/ingest-prices-statat.mjs
OeNB Fundamentalpreis­indikator✅ Live verifiziert (Dashboard-ZIP, 1989-Q1 → 2025-Q4, 296 Datenpunkte AT + Wien; AT 2025-Q4 = +4,60 %, Wien = +12,31 %)scripts/ingest-prices-oenb.mjs
EZB Data Portal (HICP Wohn­mieten)✅ Live verifiziert (ICP/M.U2.N.041000.4.INX, Euroraum 2010-01 → 2025-12, Index 120,39; generisch über SDMX-JSON-Flows)scripts/ingest-prices-ecb.mjs
OECD Analytical House Prices✅ Live verifiziert (50 Länder, AT 2025=167,3 · 2015=100; SDMX-CSV-Bulk mit Labels)scripts/ingest-prices-oecd.mjs
BIS Property Prices (WS_SPP / WS_DPP / WS_CPP)✅ Live verifiziert — WS_SPP 61 Länder (AT 2025-Q4 Nominal-Index 2010=100 = 211,51); WS_DPP Detailed Residential (AT-Wien Flats All 2025-Q4 = 310,8 · Index 2000=100; #88); WS_CPP Commercial 19 Länder ohne AT (DE Office 2025-Q4 = 163,7 · Index 2010=100; #88); SDMX-CSV mit labels=both, Multi-Dim-Slugsscripts/ingest-prices-bis.mjs
Eurostat Census 2021 1km-Bevölkerungsraster✅ Live verifiziert (#98, INSPIRE-Endpoint; 42.966 populated AT-Zellen, ∑ Bev. = 8,97 Mio.; 13 STAT-Kategorien je Zelle; Spatial-Join auf 18.263 Parzellen verifiziert)scripts/ingest-bevoelkerungsraster.mjs
Ediktsdatei (Zwangsversteigerungen)🟡 Stufe 1 — Schema + Ingest implementiert, Magnus-Defaults am 2026-05-26 abgenickt (Retention 365 d, Wertband ±20 %, Adress-Maskierung inkl. Villa/Bungalow/Hütte + null-Default, Connector = Playwright-Sandbox). Live-Lauf wartet auf Playwright-Connector-Issue + BMJ-Info-Mail. Discovery: discovery/edikte-discovery.md.scripts/ingest-edikte.mjs + lib/edikte/policies.ts
OpenStreetMap POI-Dichte🟡 Code + Migration + Ingest implementiert (#101/#250 Phase 2, Pre-Ingest PostGIS-Mirror, Pilot-bbox Gänserndorf). Offline-Schritt (GeoFabrik-Extrakt + osmium/ogr2ogr-Tag-Filter) + Daten-Ingest stehen aus; ODbL-Share-Alike + Radius/Schwellen als Magnus-Punkt offen.scripts/ingest-osm-pois.mjs + lib/geo/poi-dichte.ts

Gemeinsame Helfer: scripts/lib/ (jsonstat.mjs, sdmx-json.mjs mit v1+v2-Parser, statat-ogd.mjs, xlsx-mini.mjs, csv.mjs RFC-4180, prices-db.mjs, ingest-runs.mjs). Alle Scripts idempotent (ON CONFLICT Upsert), Lauf-Tracking in ingest_runs (Migration 0014), Cron-fähig (ADR-0011). Nächste Spiegelungs-Kandidaten mit bekanntem Endpoint: basemap.at, GeoSphere, Microsoft Building Footprints.

Detail pro Quelle

basemap.at Orthofoto

  • Endpoints: WMS/WMTS Standard
  • Auflösung: 20 cm in besiedelten Gebieten, 50 cm sonst
  • Aktualität: 2 – 3 Jahre
  • Lizenz: CC BY 4.0 (OGD), kommerzielle Nutzung explizit erlaubt
  • Attribution-Pflicht: „Karten­daten © basemap.at, CC BY 4.0" sichtbar im Frontend und auf PDF-Reports
  • Verwendung: Hintergrundkarte für MapLibre, Solar-Score-Berechnung mit DGM

BEV Kataster / INSPIRE

  • Endpoints: WFS 2.0.0, CSW für Metadaten, GML/GeoJSON-Output
  • Lizenz: Standard­nutzungs­rechte (nicht voll OGD); kommerzieller Planer-Export lizenzrechtlich kritisch
  • ⚠️ Offener Blocker — Owner Magnus: schriftliche Klärung der Nutzungsrechte für (a) dauerhafte Speicherung der gespiegelten DKM und (b) kommerziellen Planer-Export ausstehend. Phase 2 bis dahin „spekulativ". Tracking: #77, Risiko RISKS.md R-02
  • DKM ≠ Grundbuch: Geometrie nicht zentimetergenau; Toleranz­margen bei Flächen­berechnung pflicht
  • Kataster-Status (RSTATUS): G = Grenzkataster (Grenzen rechtsverbindlich/vermessungsgenau, engere Anzeige-Toleranz), E = Grundsteuerkataster (Grenzen nur ersichtlich gemacht, NICHT rechtsverbindlich → größere Toleranz). Wird aus parzellen.rstatus durchgereicht und im Report ausgewiesen; Anzeige-Toleranz heuristisch (keine Rechtsgarantie)
  • Aktualität/Stichtag: DKM erscheint quartalsweise mit neuem Stichtag. parzellen.bev_stichtag (aus dem GPKG-Dateinamen) hält den echten Datenstand; der Report zeigt diesen statt nur Spiegelungs-/Abfragedatum. Re-Ingest idempotent. Vercel-Cron /api/cron/ingest-parzellen (quartalsweise) detektiert neue Stichtage und schreibt ingest_runs.status='pending_manual' — der eigentliche ogr2ogr-Lauf bleibt manuell, weil Vercel kein GDAL hat (ADR-0034, Issue #83). Script: scripts/ingest-parzellen.mjs
  • Opt-in-Disclaimer für Endnutzer pflicht („errechnete Szenarien ersetzen keine rechtsverbindliche Vermessung")
  • DACH-Skalierung: Deutschland hat 16 separate Landes-APIs (ALKIS) — geoland.at-Vergleich AAA-Modell

GeoSphere Austria

  • Base-URL: *.hub.geosphere.at (alte ZAMG-URLs deprecated, Migration abgeschlossen)
  • Format: REST, JSON / CSV / NetCDF
  • Datensätze: TAWES (Stationen 10 min), INCA (1 km Raster), HISTALP (homogenisiert seit 1760), ÖKS15 Klima­szenarien bis 2100, SPARTACUS, SNOWGRID, Strahlung, Trockenheits­index
  • Lizenz: CC BY 4.0 (meist), teils CC0
  • Rate-Limit: 5 req/sec, 240 req/h, max 1 M Werte / Response → aggressives Caching ab Tag 1
  • Caching-Strategie: Historische Aggregate pro 1×1-km-Zelle in PostGIS pre-computed; Live-Calls nur für TAWES-Aktuelldaten via Redis

PVGIS (EU-JRC) — IMPLEMENTIERT (Default PV-Ertrag, ADR-0037)

  • Base-URL: re.jrc.ec.europa.eu/api/v5_3 (PVcalc), Modul lib/geo/solar.ts#getPvgisYield
  • Liefert: spez. Jahresertrag [kWh/kWp] bei optimaler Ausrichtung (AC), Einstrahlung, optimale Neigung/Azimut → report.solar
  • Lizenz: frei, keine Registrierung, keine Nutzungsbeschränkung (EU-JRC, EU-gehostet)
  • Nutzung: ersetzt die Konfig-Pauschale 1140 standortgenau (Engine liest report.solar?.spez_ertrag_kwh_pro_kwp ?? Pauschale). Klimatologisch stabil → 30-Tage-Cache.

Google Solar API (Building Insights) — IMPLEMENTIERT (Premium-Live-Overlay, ADR-0037)

  • Endpoint: solar.googleapis.com/v1/buildingInsights:findClosest, requiredQuality=MEDIUM (NICHT buildings:, KEIN experiments=EXPANDED_COVERAGE — bricht AT)
  • Liefert: dachgenaue max. kWp/Belegung, Dachflächen, Bildqualität — DC-Wertereport.solar.google
  • Tier-Gate: nur premium/planer + GOOGLE_SOLAR_API_KEY (lib/report/tier.ts); fail-open auf PVGIS; nur HTTP 404 = keine Coverage
  • Lizenz/ToS (R-07): Google Maps Platform — kein Caching > 30 Tage / Datenbankaufbau. Daher Live-Overlay, vor Persistenz entfernt (stripGoogleSolar). Billing-Konto erforderlich, auch innerhalb des kostenlosen Google-Kontingents (10.000 Building-Insights-Calls/Monat). AT-Coverage: Städte/Kleinstädte ≥ ~2,3k EW (HIGH/MEDIUM), Dörfer 404.

NÖGIS Widmung

  • Format: WFS / WMS / JSON / SHP / KML
  • Auflösung: OGD, teils generalisiert
  • Verwendung: Bauland / Grünland / Industrie / Sonder — als rechtliche Ampel
  • Wichtig: Keine rechtsverbindliche Auskunft, nur Indikation
  • Zwei-Stufen-Lookup (lib/geo/widmung.ts): (1) exakter PostGIS-Mirror (NÖ-weit, ~73k Flächen, scripts/ingest-widmung.mjs --all); (2) Live-Fallback über RRU_WI_HUELLE (NÖ-OGD WMS-GetFeatureInfo, liefert WI_ART/WIDMUNG/ LAND_DATUM je Punkt) — greift bei Mirror-Lücke oder DB-Ausfall, gleiche Klassifikation ohne exakte Fläche. widmung.source = dkm_mirror|wms.
  • Skalierung: geoland.at als Aggregator für andere Bundesländer prüfen

ALSAG / Altlastenportal

  • Endpoint: https://altlasten.umweltbundesamt.at/altlastenwfs/kontaminierteFlaechen/wfs
  • Hintergrund: Verdachts­flächen­kataster seit 01.01.2025 abgeschafft — nur publizierte Flächen abfragbar
  • Implementation: PostGIS ST_Intersects zwischen BEV-Parzelle und ALSAG-Polygonen
  • Disclaimer pflicht: „Nicht-Listung garantiert keine Schadstoff­freiheit"

Hochwasser-Abflussbereiche (NÖ-OGD) — IMPLEMENTIERT (Pfad B)

  • Status: Live im öffentlichen Report (lib/geo/hochwasser.ts), fail-open.
  • Quelle: Land Niederösterreich, Hochwasserabflussbereiche HQ30/HQ100/HQ300 (Layer HYD_HW30, HYD_HW100, HYD_HW300ETC).
  • Format: WMS-GetFeatureInfo (NÖ-OGD-GeoServer sdi.noe.gv.at, WMS 1.1.1, INFO_FORMAT=text/plain, gemeinsamer Helper lib/geo/noegis.ts); serverseitiges Punkt-in-Polygon, Feld JAEHRLICHKEIT (30/100/300).
  • Lizenz: CC BY 4.0 (OGD NÖ), „Datenquelle: Land Niederösterreich (data.noe.gv.at)".
  • Ampel: HQ30/HQ100 → rot (häufig / Bemessungshochwasser); HQ300 → gelb (selten); keine Zone → grün. Indikator, kein Gefahrenzonenplan.
  • Verhältnis zu HORA (Pfad A): löst die HORA-Lizenzsperre für das Hochwasser-Signal, weil die NÖ-Abflussbereiche frei sind. HORA bleibt für die 10-Gefahren-Matrix (Pfad A) offen.
  • Scope: Niederösterreich (Pilot). Statewide-Erweiterung = weitere Landes-WMS.

HORA 3.0

  • WMS via LFRZ (Landwirtschaftliches Rechenzentrum)
  • Daten: Hochwasser HQ30 / HQ100 / HQ300, hypothetische Versagens­szenarien
  • ⚠️ Lizenz-Risiko: Kommerzielle Nutzung kann Reseller-Vertrag erfordern — nicht zwingend OGD-frei
  • Workaround: WFS-Vektoren ziehen, eigene Intersection berechnen, keine WMS-Bilddaten im Produkt reproduzieren
  • Status: Hochwasser-Signal vorerst über NÖ-OGD-Abflussbereiche abgedeckt (siehe oben); HORA-10-Gefahren-Pass vor Phase-3-Launch klären (siehe RISKS.md)

Microsoft Building Footprints

  • Bereitstellung: GeoJSON Bulk-Download, AT-flächendeckend
  • Lizenz: ODbL — kommerziell erlaubt, Share-Alike-Klausel auf abgeleitete Datensätze
  • Verwendung: „Was steht auf der Parzelle?" — Realbestand-Indikator, Solar-Potenzial
  • Update: Statischer Datensatz, nicht live

Sentinel-2 / Copernicus

  • Daten: 10 m Auflösung, 5-Tages-Update, optisches Satellitenbild
  • Lizenz: Frei, EU-weit
  • Verwendung: NDVI für „Brache überwuchert?", Change Detection, Versiegelungs­grad
  • Phase: ab Phase 2 für Brachflächen-Score

geoland.at

  • Was: Gemeinsames Geoportal aller österreichischen Bundesländer
  • Format: INSPIRE-konforme WMS / WFS
  • Strategischer Wert: Reduziert Bundesländer-Anbindung von 9 separaten Landes-APIs auf einen Aggregator
  • Phase: ab Phase 4 (Skalierung 2. Bundesland)

BDA Denkmalschutz — IMPLEMENTIERT (NÖ, parzellenscharf)

  • Status: Live im öffentlichen Report (lib/geo/denkmal.ts).
  • Quelle: Bundesdenkmalamt — Denkmalverzeichnis §3 DMSG, NÖ-CSV (10.891 Objekte, Spalten u. a. KG, Grundstücksnummern, Objekttitel, Denkmalschutz Status).
  • Format: Statische CSV pro Bundesland, keine REST-/Geo-API, jährliches Update.
  • Pipeline (bewusst kein DB-Ingest/Geocoding): Build-Time-Generator scripts/build-denkmal-noe.mjs (Auto-Discovery der aktuellen NÖ-CSV auf bda.gv.at) erzeugt eine nach KG-Code::GstNr indizierte JSON (lib/geo/data/denkmal-noe.json, ~1,1 MB, committet). Laufzeit-Lookup rein in-memory — kein Netz, keine DB, kein Cron. Jährlicher Refresh = Skript erneut laufen lassen + JSON committen.
  • Matching: exakt über Katastralgemeinde-Code + Grundstücksnummer (beide liefert die BEV-WMS-Sofortabfrage im Report; live verifiziert, inkl. Bauparzellen-Punkt-Notation .1/.33). Kein Buffer, keine Fuzzy-Geokodierung.
  • Lizenz: Denkmalverzeichnis = freies Werk (kein Urheberrechtsschutz), Attribution „Bundesdenkmalamt".
  • Ampel: gelistet → rot (Veränderung/Abbruch bewilligungspflichtig), sonst grün.
  • Grenzen (R-03): Ensembles/Umgebungsschutz + nicht parzellengenau geführte Einträge sind nicht erfasst; Liste laut BDA nicht rechtsverbindlich. Verbindliche Auskunft nur durch das BDA.

RTR / Breitbandatlas (Festnetz) — IMPLEMENTIERT

  • Status: Live im öffentlichen Report (lib/geo/breitband.ts), fail-open.
  • Format: WMTS-GetFeatureInfo (GeoWebCache, breitbandatlas.gv.at), Layer Festnetz, TileMatrixSet EPSG:3857. Liefert je 100×100-m-Raster­zelle max_downloadrate (Mbit/s) + max_downloadrate_klasse (Text).
  • Achtung: Die früher dokumentierte REST-/HTTP-API wurde per 30.06.2025 eingestellt — der WMTS-GFI-Pfad ist der verbleibende Live-Zugang. Kein Ingest/Mirror, eine Tile-Query pro Report (Tile-Mathematik in wmtsTile).
  • Lizenz: CC BY 3.0 AT (lt. GetCapabilities ows:AccessConstraints), Attribution „Quelle: Breitbandatlas, Breitbandbüro / BMWKMS, CC BY 3.0 AT".
  • Verwendung: Versorgungs-Indikator (Ampel ≥ 100 / ≥ 30 / < 30 Mbit/s); Mobilfunk nicht berücksichtigt. Standortfaktor auch für Gewerbe-Szenarien (Co-Working, Rechenzentrum).

Brachflächen-Dialog · BMLUK

  • Status: Karte öffentlich auf BMLUK-Domain; API-Zugang nicht belastbar bestätigt
  • Falsch-Positiv-Rate: KI-Klassifikation erkennt Schotter / Lager­flächen fälschlich als Brachen
  • Human-in-the-Loop: Korrekturen durch Nutzer veredeln Rohdaten zu eigenem Asset
  • Strategie: USP-Verstärker, aber nicht alleinige Datenbasis (siehe Eigener Brachflächen-Score in docs/POC-PLAN.md)

Gemeinderats­protokolle

  • Quelle: öffentlich, heterogen (HTML, PDF, gescannt) pro Gemeinde
  • Pipeline: Wöchentlicher Scraper → OCR → RAG-Index (Vektor-DB) → LLM-Extraktion
  • DSGVO: Klar­namen vor RAG-Index NER-anonymisieren (siehe COMPLIANCE.md)
  • Wert: Signalisiert Planungs­absichten vor der offiziellen NÖGIS-Änderung
  • Risiko: Siehe RISKS.md — DSGVO + Datenqualität

Förder­datenbank · KPC / LEADER / KMU.DIGITAL / aws

  • Keine API. KPC „Online" nur für Antragsteller (PIN-geschützt)
  • Pipeline: RAG mit kuratierten PDF-Richtlinien in Vektor-DB
  • Konkrete Beträge: KPC Flächen­recycling — bis 75 % bzw. max 60 000 € Konzept, 50 000 € Detail­untersuchung
  • Validierung: Quartalsweise manuelle juristische Prüfung der Förder-Logik

Mapillary

  • Format: REST API, Crowdsourced Street-Level-Panoramen
  • Lizenz: CC BY-SA 4.0 — AI-Auswertung erlaubt, Share-Alike beachten auf abgeleitete Daten
  • Coverage AT: Städte gut, ländlich dünn → nicht MVP-kritisch, eher Phase 4 + für städtische Cases

Google Street View · Bing Streetside

  • Lizenz: Maps Platform ToS verbietet ML-Training, Bulk-Download, dauerhaftes Caching (> 30 Tage) und Datenbank-Aufbau
  • Was geht: Embed-Player als UI-Element, Static-API-Bilder (~ $0,007 / Anfrage) nur zur reinen Anzeige
  • Was nicht geht: Jegliche AI-Auswertung der Bilder
  • Konsequenz: Verstoß = API-Konto-Sperre + zivilrechtliche Schritte → Lizenz-Compliance-Audit vor Phase-3-Launch
  • Saubere Alternative: Eigene Fassaden-Erfassung beim 490-€-Beratungs­termin (siehe Phase-3-Plan)

NÖGIS Geogene Gefahren — NICHT OGD-verfügbar (Stand 2026-05)

  • Quelle: NÖ-Atlas (atlas.noe.gv.at), Layer „Geogene Gefahrenhinweiskarten"
  • ⚠️ Befund: Im NÖ-OGD-GeoServer (sdi.noe.gv.at/.../OGD/wms, 221 Layer) ist kein Rutschungs-/Steinschlag-/Massenbewegungs-Layer vorhanden — die Hinweiskarten liegen nur im Atlas-Viewer (nicht als OGD-Dienst). Kein autonom-baubarer Live-Pfad.
  • GBA/GeoSphere geprüft (2026-05): Die GBA-Massenbewegungsdaten sind ein Inventar beobachteter Ereignisse (kartierte Rutschungen/Steinschläge), kein flächendeckendes Parzellen-Suszeptibilitäts-Zoning. Ein per-Parzelle-Indikator daraus hätte niedrige Recall und würde „kein Ereignis kartiert" fälschlich als „kein Risiko" suggerieren (R-03-Verstoß) — daher bewusst nicht gebaut. Die ArcGIS-WMS-Dienste sind zudem nicht sauber als OGD-GetFeatureInfo-Punktabfrage nutzbar.
  • Rechtlich relevanter Pfad — jetzt erschlossen: Der Wildbach-/Lawinen-Gefahrenzonenplan (WLV) ist doch als einheitlicher, bundesweiter Punkt-Dienst verfügbar (LFRZ inspire.lfrz.gv.at/000901, WMS-GFI) — die frühere Annahme „nur pro Gemeinde, kein OGD-Punkt-Dienst" war falsch. Implementiert (siehe nächster Abschnitt). Deckt die Wildbach-/Lawinen-Dimension ab; Rutschung/Steinschlag-Suszeptibilität bleibt offen (s. o.).
  • Status: Rutschung/Steinschlag offen (kein qualitativ vertretbarer Live-Pfad); Wildbach/Lawine gelöst via WLV-GZP.

Wildbach & Lawine Gefahrenzonenplan (WLV) — IMPLEMENTIERT

  • Quelle: Wildbach- und Lawinenverbauung (WLV/BML), Gefahrenzonenpläne, über LFRZ https://inspire.lfrz.gv.at/000901/wms (WMS-GetFeatureInfo, text/plain, gleicher Infrastruktur-Pfad wie Lärminfo).
  • Layer: WLV_GZP (Gruppe; liefert je Treffer mehrere FeatureTypes — RRB = Raumrelevanter Bereich, SZ_WB/SZ_LA = Summenzonen Wildbach/Lawine, …). Schlüsselfeld Objektart.
  • Ampel: „Rote Zone" → rot (ständige Gefährdung, Bebauung i. d. R. ausgeschlossen); sonst Treffer (Gelbe/Summen-Zone, Raumrelevanter Bereich) → gelb; kein Treffer → grün. „Keine Zone" ist ein gültiges Ergebnis — Gefahrenzonenpläne existieren nur für Gemeinden mit Wildbach-/Lawinengefahr (überwiegend alpiner Raum).
  • Lizenz: frei (INSPIRE-Metadaten „no limitations on public access / no conditions apply"). Attribution „Datenquelle: Wildbach- und Lawinenverbauung (WLV/BML)".
  • R-03: Indikator, kein Gefahrenzonenplan-Gutachten; rechtsverbindliche Zonen-Auskunft + Bauauflagen nur über Gemeinde/WLV. Datengrundlage gehört zu lib/geo/wlv.ts (getWlv/classifyWlv), pure-getestet + fetch-gestubbter Glue-Test.

Seveso/Störfallbetriebe & Hochspannungs-/Gasleitungen — NICHT OGD-verfügbar (NÖ, Stand 2026-05)

  • ⚠️ Befund (Recherche 2026-05, gesamter NÖ-GeoServer + LFRZ + data.gv.at geprüft): Für Niederösterreich existiert kein öffentlicher Geodienst für Seveso-/Störfallbetriebe (Betriebsbereiche nach Industrieunfall-VO) — die Behörden publizieren nur HTML-Listen/Kundmachungen (EDM, Störfallinformations-VO), keinen WMS/WFS mit GetFeatureInfo. (Tirol/Salzburg haben einzelne offene INSPIRE-PF-Dienste, NÖ nicht.)
  • ⚠️ Leitungen: Hochspannungs-Freileitungen (APG/Netz NÖ) liegen zwar als INSPIRE-Dienst vor, sind aber Art. 13(1)(b)-zugriffsbeschränkt (Token „auf Anfrage") — kein anonymer Live-Pfad; APG zudem nur Umspannwerke, keine Leitungen. Gas-Hochdruckleitungen: kein öffentlicher Dienst.
  • Status: offen, nicht autonom baubar (keine öffentliche Quelle). Falls künftig relevant: nur über behördliche Datenfreigabe / Token.

Schutzgebiete (Natur + Wasser, NÖ-OGD) — IMPLEMENTIERT

  • Status: Live im öffentlichen Report (lib/geo/schutzgebiete.ts), fail-open.
  • Quelle: Land Niederösterreich (NÖ-OGD-GeoServer sdi.noe.gv.at), Layer RNA_NSGEB (Naturschutzgebiet), RNA_NATIONALPARK, RNA_N2K_FFH/RNA_N2K_VS (Europaschutz/Natura 2000), RNA_LSGEB (Landschaftsschutz), RNA_NATURPARK, N_VSEL_OGD_BSRNK_SCHUTZ_SCHON (wasserrechtliche Schutz-/Schongebiete).
  • Format: WMS-GetFeatureInfo (text/plain, gemeinsamer Helper lib/geo/noegis.ts); serverseitiges Punkt-in-Polygon, je Layer ein Treffer.
  • Lizenz: CC BY 4.0 (OGD NÖ), „Datenquelle: Land Niederösterreich (data.noe.gv.at)".
  • Ampel: streng (Naturschutz-/Europaschutz-/Nationalpark-/Wasserschutzgebiet) → rot; milder (Landschaftsschutz/Naturpark/Wasserschongebiet) → gelb; kein Treffer → grün.
  • Verwendung: Bebauungs-/Nutzungs-Restriktion; ergänzt Widmungs-Layer. Indikator, keine Rechtsauskunft — konkrete Regeln aus der jeweiligen Verordnung.
  • Scope: Niederösterreich. (Frühere Planung „PostGIS-Mirror der WFS-Geometrie" ersetzt durch Live-GFI — kein Ingest nötig.)

Lärminfo — IMPLEMENTIERT

  • Status: Live im öffentlichen Report (lib/geo/laerm.ts), fail-open.
  • Quelle: lärminfo.at (Umweltbundesamt), strategische Lärmkarten der EU-Umgebungslärmrichtlinie 2002/49/EG, Kartierungsrunde 2022.
  • Format: WMS-GetFeatureInfo (LFRZ, inspire.lfrz.gv.at/000804/wms, WMS 1.1.1, SRS=EPSG:4326, INFO_FORMAT=text/plain). Serverseitiges Punkt-in-Polygon je Layer; text/plain liefert nur die Attribute (~300 B statt ~4 MB Geometrie über die parallel verfügbare OGC API). Abgefragt: 2022_STRASSE_24H_ZONEN_OE + …_NACHT_… (Straße Lden/Lnight) und 2022_SCHIENE_24H_ZONEN_OE + …_NACHT_… (Schiene Lden/Lnight).
  • Datenmodell: disjunkte Isophonen-Bänder, category = LdenXXYY / LnightXXYY / …GreaterThanNN (5-dB-Klassen, berechnet nicht gemessen).
  • Lizenz: CC BY 4.0 (OGD Österreich), Attribution „Datenquelle: www.laerminfo.at".
  • Scope (bewusst): nur Hauptquellen Straße + Schiene oberhalb der EU-Meldeschwellen; Flug/Industrie/lokaler Lärm nicht im Report-Block (Layer existieren, Folge-Erweiterung). Ampel: Lden ≥ 70 oder Lnight ≥ 60 → rot; sonst kartierte Zone → gelb; keine Zone → grün.
  • Verwendung: Differenziert Nutzungsszenarien (Wohnen vs. Gewerbe/Lager) — eine an einer Hauptverkehrsstraße gelegene Parzelle ist für Wohnen anders zu bewerten als eine ruhige Lage.
  • Update-Rhythmus: 5-Jahres-Zyklus (zuletzt 2022).

ÖV-Güteklassen (ÖROK/BMIMI) — IMPLEMENTIERT

  • Status: Live im öffentlichen Report (lib/geo/oev.ts), Pilot-Mirror (#101 Phase 2). Außerhalb der Spiegelung ehrlich degraded (ausserhalb_pilot_spiegelung).
  • Quelle: ÖROK + BMIMI, österreichweit einheitliches Güteklassen-Modell (A beste … G); bereitgestellt von AustriaTech (files.austriatech.at, Share 33971b2d51a348a5958d, verlinkt von mobilitydata.gv.at und data.gv.at).
  • Format: jährliches ZIP (~160 MB) mit Shapefiles. Genutzt: 02_beschlossenes ÖV-Güteklassensystem/OeV_Gueteklassen_Polygone_*.shp — österreichweit genau 7 aufgelöste Features (eine Klasse je Feature, EPSG:3035). Kein amtlicher WMS/WFS → Datei-Mirror statt Live-Abfrage.
  • Ingest: scripts/ingest-oev.mjs (Migration 0027_oev_gueteklassen.sql). Wichtig: GDAL -clipdst statt -spat — alle 7 Österreich-Polygone schneiden jede bbox, erst der Clip macht den Pilot-Extrakt klein (~370 KB). Tabelle oev_gueteklassen (gkl, geom 4326, stand); Lookup: beste Klasse am Punkt (ORDER BY gkl ASC, Klassen-Polygone überlappen A⊂B⊂C…).
  • Lizenz: „Kein(e) Lizenz und kein Vertrag" — die beiliegenden Nutzungsbedingungen (ÖROK-Haftungsausschluss, im ZIP) enthalten keine Nutzungseinschränkung und keine Attributionspflicht — allerdings auch keine ausdrückliche Nutzungsrechtseinräumung; die Nutzung stützt sich auf die OGD-Listung (data.gv.at) und die freie Bereitstellung „zur Verbesserung der Abstimmung von Siedlungsentwicklung und ÖV-Erschließung". Attribution machen wir trotzdem (ÖROK/BMIMI, AustriaTech). Formale Lizenz-Bestätigung als offener Punkt (analog BEV #77).
  • Ampel (deterministisch, classifyOev): A–C → grün, D–G → gelb, keine Klasse → rot. Schwellen-Interpretation = Magnus-Review-Punkt (Briefing M11).
  • Verwendung: Kern-Standortfaktor (Wohn- wie Betriebsnutzung, widmungs- und wertrelevant); Steckbrief + eigener Report-Block.
  • Update-Rhythmus: jährlich (Lieferung ~April, Fahrplan-Referenz Oktober des Vorjahres; aktuell Stand 2025-10-29).

OpenStreetMap — POI-Dichte / 15-Minuten-Score

  • Status: 🟡 Phase 2 (#101/#250) — Code/Migration/Ingest-Script implementiert (lib/geo/poi-dichte.ts), Pilot-Mirror. Der Offline- Schritt (GeoFabrik-Extrakt → Tag-Filter → GeoJSON) und der eigentliche Daten-Ingest stehen noch aus; außerhalb der Spiegelung ehrlich degraded (ausserhalb_pilot_spiegelung).
  • Quelle: OpenStreetMap, bezogen als GeoFabrik-Extrakt Österreich (austria-latest.osm.pbf, geofabrik.de). Kein Live-Overpass im Request-Pfad — Overpass ist hart rate-limitiert (~10 req/min, Scraper-Ban); ein Call je Adresse riskiert IP-Ban und nicht reproduzierbare Reports → Datei-Mirror (wie ÖV-Güteklassen).
  • Format: .osm.pbf → osmium/ogr2ogr-Tag-Filter je Kategorie → GeoJSON-Punkte (Polygon-POIs auf Repräsentativpunkt reduziert) → PostGIS-Clip auf die Pilot-bbox.
  • Ingest: scripts/ingest-osm-pois.mjs (Migration 0028_osm_pois.sql). Tabelle osm_pois (geom Point 4326, stand); der CHECK lässt oev_halt aus Bestandsgründen noch zu, der Extrakt liefert es aber nicht mehr. Lookup: ST_DWithin auf geography im 900-m-Radius, Kategorie-Zähler in einem Roundtrip.
  • POI-Kategorien (5; evidenzbasiert, #250): nahversorger (shop=supermarket/convenience/bakery/butcher, amenity=marketplace), bildung (kindergarten/school), gesundheit (pharmacy/doctors/clinic/ hospital), gastro (restaurant/cafe/bar/pub), gruenraum (leisure=park/playground/garden, landuse=recreation_ground). ÖV bewusst NICHT enthalten — separat über die ÖV-Güteklasse (Doppelzählung vermeiden, Recherche #250).
  • Lizenz: ODbL 1.0 → Pflicht-Attribution „© OpenStreetMap contributors, ODbL 1.0 — openstreetmap.org/copyright" sichtbar in Web + PDF (Report = „Produced Work", nur Attribution). Der osm_pois- Mirror ist eine „Derivative Database" → bei Weitergabe unter ODbL bereitzustellen. Details: MAGNUS-REVIEW-POI-DICHTE.md, RISKS §R-OSM.
  • Ampel (deterministisch, classifyPoiDichte): Score = erreichte Kategorien / 5 × 100. ≥4/5 → grün, 2–3/5 → gelb, ≤1/5 → rot. Radius 900 m und Schwellen evidenzbasiert (Recherche #250: 15 min ≈ ~900 m Luftlinie); Präsenz-Indikator, keine gewichtete Erreichbarkeit.
  • Verwendung: Lage-Indikator „Lage & Versorgung" (ergänzt ÖV-Güte und Erreichbarkeit; keine Restriktion); Steckbrief „Nahversorgung (15 Min)" + eigener Report-Block.
  • Update-Rhythmus: monatlich/quartalsweise (POIs ändern sich schneller als ÖV-Güteklassen; Cron-Wiring als Folge-Punkt, #250).

Grundbuch (JustizOnline)

  • Quelle: justizonline.gv.at, BRZ (Bundes­rechenzentrum)
  • Format: PDF-Auszug Haupt­buch (A1/A2/B/C-Blatt), keine OGD-API
  • Kosten: ca. €17–25 pro Einlagezahl-Abfrage (Stand 2026, abhängig von Schnittstelle)
  • Was im Kataster (BEV) nicht steht:
    • B-Blatt: Eigentümer, Anteile (¼, ½, ⅛ …), Adressen — kritisch für „Wer muss zustimmen?"-Frage bei Brachflächen
    • C-Blatt: Belastungs- und Veräußerungs­verbote, Vorkaufsrechte, Wohnungsgebrauchsrechte, Dienstbarkeiten (z. B. Wasserableitungsrecht über Nachbargrundstücke), Hypotheken
    • A2-Blatt: Erbauungs­eintragungen, Rechte gegenüber/zugunsten anderer Grundstücke
  • Warum unverzichtbar für landnutzen: Eine Brachfläche, die mehreren Erben gemeinsam gehört und mit Vorkaufsrechten kreuz-und-quer belegt ist (typischer Praxisfall), kann nur durch Einstimmigkeit aktiviert werden. Ohne B/C-Blatt-Auswertung kann landnutzen keine belastbare „Aktivierungs­fähigkeit"-Einschätzung liefern.
  • Implementations-Strategie: On-demand-Abruf nur bei Premium-Pfad (490-€-Beratung oder explizite User-Anforderung), nicht für kostenlose Erst­einschätzung
  • Cache-Strategie: Hash auf Einlagezahl + Bezirksgericht, 90-Tage-TTL — Eigentumsverhältnisse ändern sich selten
  • Detail-Spec: ADR-0016 — Grundbuch-Modul im MVP

Ediktsdatei (Zwangsversteigerungen)

  • Endpoint: edikte.justiz.gv.at (§ 89j GOG)
  • Format: HTML — kein OGD-API, kein SLA, Ajax/Dojo-driven (Discovery 2026-05-26 — Connector kann nicht einfacher fetch-Chain sein, siehe discovery/edikte-discovery.md)
  • Lizenz: öffentlich (amtliche Bekanntmachung); kein OGD-CC-Hinweis → automatisierter Zugriff erfordert vorsichtige Frequenz und kennzeichnenden User-Agent
  • Crawler-Regeln: kein /robots.txt, aber explizite <meta name="robots" content="nofollow,noarchive,noimageindex,nomediaindex"> plus msnbot=nocache, googlebot=nosnippet — Spirit klar: keine Re-Publikation/Indexierung. Default-Policy lib/edikte/policies.ts: 1500 ms zwischen Requests, identifizierender User-Agent
  • Strategischer Wert: doppelter Nutzen aus einer freien Quelle
    • Wert-Proxy: Gerichtlich bestellter Schätzwert ist der erste adressscharfe, lizenzfreie Liegenschaftswert — schärft Szenario-Engine (R-04), ergänzt Aggregat-HPI (Kategorie 6).
    • Aktivierungs-Lead: „in Verwertung = in Bewegung" — Eigentümer ist motiviert oder hat das Asset verloren.
  • Stufenmodell (ADR-0032): Stufe 1 = anonymer Vergleichswert (MVP-Backlog, P2/3); Stufe 2 = Lead im Gemeinde-Dashboard (Phase 3+, gesondertes ADR).
  • Datenminimierung — DSGVO-Kontrakt: Persistiert werden nur liegenschaftsbezogene Felder (EZ, KG, BG, Adresse, Schätzwert, geringstes Gebot, Termin, Edikt-ID, Liegenschaftstyp). Name/Anschrift des Verpflichteten werden beim Parsen verworfen — nicht pseudonymisiert, kein Hash. Vom Test verifiziert: tests/ingest/edikte.test.mjs prüft, dass kein Personen-Token in einem SQL-Param landet.
  • Pflicht-Disclaimer im Report: „Gerichtlich bestellter Schätzwert ≠ Marktpreis" (Zwangsversteigerungs-Abschlag, Sachverständigen-Methodik, Stichtag). Der Wert ist interner Kalibrierungs-Proxy, nicht „Verkehrswert".
  • Schema-Drift-Monitoring: HTML-Layout kann brechen (kein API/SLA). Der Parser wirft EDIKTE_PARSE_DRIFT, wenn weder Geschäftszahl noch Schätzwert erkennbar sind; Drift erscheint in ingest_runs.rows_skipped → Admin-Übersicht.
  • Idempotenz: UNIQUE(edikt_id) + ON CONFLICT DO UPDATE — Re-Runs aktualisieren Termin/Beträge.
  • Spatial-Join: PostGIS-View v_edikte_parzellen joint best-effort über kg + ez (EZ vorläufig als gnr — präziser EZ↔GNR-Mapper in Folgemigration).
  • Offene Fragen (vor Stufe-2-Aktivierung klären):
    • Retention abgeleiteter Werte nach justizseitiger Edikt-Löschung — Owner Magnus (juristisch).
    • Nutzungsbedingungen / robots.txt von edikte.justiz.gv.at für automatisierten Abruf (Frequenz, Kennzeichnung).
    • Reproduktion des gerichtlichen Schätzwerts im Report (Anzeige vs. nur intern kalibrierend).
    • Adress-Edge-Case Einzelhaus = Wohnanschrift des Verpflichteten → personenbeziehbar trotz fehlender Namens­spalte.
  • Detail-Spec: ADR-0032 — Ediktsdatei property-only · Issue #95

Immobilienpreise (frei lizenzierte Statistik) — Kategorie 6

Aggregierte Preis-/Indexzeitreihen (Region × Zeit × Indikator), keine Einzelinserate, kein Personenbezug — bewusste DSGVO-/Datenbankrecht- Abgrenzung gegenüber Scraping kommerzieller Portale (willhaben); Begründung siehe RISKS.md. Schema: lib/db/schema/property-prices.ts, Migration 0012_property_prices.sql, Ingest scripts/ingest-prices-*.mjs.

QuelleFormatLizenz / AttributionReifeScript
QuelleDataset / KeyFormatLizenz / AttributionReife
---------------
Eurostatprc_hpi_q (purchase=TOTAL, unit I15_Q + RCH_A)JSON-stat 2.0 RESTfrei, „Source: Eurostat"live verifiziert — AT bis Q4/2025 (=169,3 · 2015=100), EU/EA + alle MS, Länderebene
Statistik AustriaOGD_hpi2015_HPI_15_1 (+ _hpi2010_, _hpivr_)OGD-Cube-CSVCC BY 4.0, „Quelle: STATISTIK AUSTRIA"live verifiziert — Häuserpreisindex, 5 Messgrößen (Gesamt/Neu/Bestand/Häuser/Whg.), AT gesamt, Q+Jahr
EZB Data PortalGenerisch über SDMX-Flows; Default ICP/M.U2.N.041000.4.INX (HICP-Wohnmieten, Euroraum)SDMX-JSON 1.0-ctsfrei, „Source: ECB"live verifiziert — Euroraum-Mieten 2025-12 = 120,39; RPP-AT (Property Prices) ist veraltet (endet 2018-Q4), daher HICP-Wohnen als immo-adjacenter Default
OECD Data ExplorerOECD.ECO.MPD,DSD_AN_HOUSE_PRICES@DF_HOUSE_PRICES,1.0SDMX-CSV (csvfilewithlabels)OECD Terms of Use — „Source: OECD"live verifiziert — 50 Länder, AT 2025 (HPI nominal, 2015=100) = 167,3; Messgrößen HPI/RHP/RPI/HPI_RPI/HPI_YDH
BIS Property PricesWS_SPP (Selected) — Defaults; WS_DPP (Detailed, Apartments/Häuser × Stadt/Land), WS_CPP (Commercial — Office/Retail) per BIS_FLOWSDMX-CSV (labels=both)frei, „Source: BIS"live verifiziertWS_SPP 61 Länder AT 2025-Q4 (2010=100) = 211,51 (Real-YoY −1,7 %); WS_DPP AT-Wien Flats All 2025-Q4 (2000=100) = 310,8 (#88); WS_CPP DE Office 2025-Q4 (2010=100) = 163,7 (#88)
OeNBFundamentalpreis­indikator (Über-/Unter­bewertung)ZIP-Download aus dem Wohnimmobilien-Shiny-Dashboard (Long-Form-CSV Wohnimmobilienmarkt_Fundamentalpreisindikator_*.csv)frei, „Quelle: OeNB"live verifiziert (#87) — AT 2025-Q4 = +4,60 % (gerundet „5 %" im Dashboard), Wien = +12,31 %; Backfill 1989-Q1 .. 2025-Q4, 296 Quartals-Datenpunkte
  • Granularität: Quartal/Jahr, AT-gesamt bzw. Länder-/NUTS-Ebene (Index, Veränderungsrate). Adress-/Bezirks-€/m² braucht weiterhin eine lizenzierte Transaktionsquelle (IMMOunited/Grundbuch, vgl. ADR-0016).

  • OeNB-Befund: Der OeNB-Wohnimmobilienpreisindex deckt sich inhaltlich mit dem via Eurostat/Statistik Austria geführten HPI; einzig der OeNB-Fundamentalpreisindikator (Über-/Unterbewertung) ist OeNB- exklusiv. Seit 2026-Q2 ist er nicht mehr als XLSX, sondern nur noch über das Wohnimmobilien-Shiny-Dashboard verfügbar — der „Markt"- Tab exportiert ein ZIP mit FPI als Long-Form-CSV. Der Connector liest beide Pfade (run() für XLSX-Backfill, runFromDashboardZip() für den neuen Stand). Die Shiny-Session-URL ist nicht stabil, daher einmal pro Quartal manueller Download (siehe Issue #87).

  • Aktualität: Idempotenter Re-Run der Ingest-Scripts; automatisiert via Vercel Cron (ADR-0034, siehe vercel.json#crons und app/api/cron/prices-*): ECB monatlich, Eurostat/STATAT/OeNB/OECD/BIS quartalsweise. price_facts.ingested_at trackt den letzten Sync je Grain. OeNB-Cron skippt, solange keine aktuelle Quartals-OENB_FPI_XLSX-URL gesetzt ist.

  • Speicherort/Kosten: dieselbe Neon-Postgres (ADR-0002, EU-Region); Volumen < ~50 MB → 0 € Zusatzkosten (Free-Tier 0,5 GB; im Launch-Tier vernachlässigbar gegenüber den PostGIS-Geometrien).

  • Cross-Source-Joins (#89): Eurostat/EZB/BIS/STATAT nutzen ISO-2 (AT), OECD nutzt ISO-3 (AUT). Die Tabelle country_codes (Migration 0017) hält das Mapping plus EU-/Euro-Area-Flags; der View v_price_facts_country joint price_regions über beide Schemata. Aggregate (EU27_2020, EA20, …) erscheinen mit iso2 IS NULL.

    Beispiel — „AT-HPI über alle 5 Quellen für 2025-Q4":

    SELECT ps.slug AS source, v.region_scheme, pi.slug AS indicator,
           pp.code AS period, v.value
    FROM v_price_facts_country v
    JOIN price_sources ps    ON ps.id = v.source_id
    JOIN price_periods pp    ON pp.id = v.period_id
    JOIN price_indicators pi ON pi.id = v.indicator_id
    WHERE v.iso2 = 'AT' AND pp.code = '2025-Q4'
    ORDER BY ps.slug, pi.slug;
    

    → liefert Eurostat (HPI 169,34), STATAT (5 Messgrößen, ~169,3), BIS (Index 211,51 · 2010=100), OeNB FPI (+4,60 %); für OECD separat auf Jahresfrequenz (pp.code='2025' → HPI 167,33).

  • Bevölkerungs-Spatial-Join (#98): bev_raster_cells (Migration 0018) hält 42.966 populated 1km-Zellen aus dem Eurostat Census 2021 EU-Grid (CC BY 4.0). View v_parzellen_bevoelkerung joint per ST_Contains(brc.geom, ST_Centroid(parzellen.geom)):

    SELECT parzelle_id, kg, gnr, cell_id,
           pop_total, pop_lt15, pop_15_64, pop_ge65
    FROM v_parzellen_bevoelkerung
    WHERE parzelle_id = $1;
    

    Im Pilot-Backfill: 18.263 Parzellen mit Cell-Mapping (in bewohnten Zellen), 6.255 ohne (Felder/Wald — pop_total=NULL signalisiert „keine Bewohner im 1km-Umkreis"). Cell-IDs nach INSPIRE-Schema AT_CRS3035RES1000mN<NORTH>E<EAST>.

Freizeit-/Zweitwohnsitz-Beschränkungsgemeinden — IMPLEMENTIERT (Salzburg-Pilot)

  • Status: 🟡 Phase 2 (#257) — Salzburg-Pilot live (committete JSON, 91 Gemeinden). Restriktions-Indikator report.zweitwohnsitz.
  • Befund: NÖ hat KEIN Zweitwohnsitz-Beschränkungsregime (NÖ ROG 2014) → jede NÖ-Adresse „nicht erfasst" (grün). Wert kommt vom Rot-Pfad in Ländern mit Regime (Salzburg/Tirol/OÖ/Vbg).
  • Quelle: RIS Landesrecht (ris.bka.gv.at). v1 Salzburg: „Zweitwohnung-Beschränkungsgemeinden-Verordnung 2024", LGBl 26/2024, Gesetzesnummer 20001469, §1-Dok LSB40028014 (in Kraft 2024-03-01). Die Gemeinde-Liste ist Komma-Prosa je Bezirk im §1-XML (kein Dataset, keine GKZ) → maschinell geparst. Tirol (142, PDF) + OÖ (~25) = Folge.
  • Keying: gem_nr (5-stellig, Statistik Austria) aus dem Radon-Layer; Name→gem_nr zur Build-Zeit über gemliste_knz.csv.
  • Build: scripts/build-zweitwohnsitz-gemeinden.mjs (RIS-§1 + Statistik → lib/geo/data/zweitwohnsitz-gemeinden.json); Re-Run pro VO-Novelle, Ergebnis committen. Kein DB-Ingest (Denkmal-Muster).
  • Ampel: rot = in geltender Landes-VO gelistet; grün = nicht erfasst; kein Block + degraded, wenn gem_nr fehlt (R-03, kein stilles Grün). Statischer Disclaimer „Indikation, keine Rechtsauskunft" (RIS + Gemeinde maßgeblich). Legal-Review des Wortlauts vor produktiver Freischaltung.
  • Lizenz: RIS CC BY 3.0 AT, Statistik-Gemeindeliste CC BY 4.0.
  • Discovery: discovery/zweitwohnsitz-beschraenkung-discovery.md.

Backlog — recherchierte Erweiterungsquellen

Noch nicht getestet, reine Recherche-Kandidaten. Sortiert nach Hebel × Differenzierung. Alle OGD/frei sofern nicht anders vermerkt. Diese Quellen erweitern v. a. Kategorie 4 (Erreichbarkeit/Mikrolage/Demografie) und Kategorie 3 (Boden/Geologie/Historie als Risiko-Proxy) — beides heute nur qualitativ abgedeckt.

QuelleKat.FormatLizenzRisikoPhaseWarum interessant
GIP.at — Verkehrsgraph AT4OGD Bulk (GeoPackage ab GIP 2.0)CC-BY 4.0 (ÖVDAT)Mittel (1,5 GB; braucht Self-Hosted-Routing)P4 (Phase 2: OSM, Phase 3: ORS-Self-Hosted) — siehe ADR-0036Echte Isochronen (Autobahn/Schule/Spital) statt Luftlinie
ÖV-Güteklassen (ÖROK/VAO)2,4WMS/WFS Shapefile-LieferungOGDNiedrigimplementiert (Pilot-Mirror, siehe §ÖV-Güteklassen)ÖV-Erschließungsklasse — widmungs- & wertrelevant
OpenStreetMap (Overpass)4API/Bulk GeoFabrik-Extrakt → PostGISODbL (Share-Alike)Niedrig🟡 Phase 2 implementiert (Pilot-Mirror, siehe §OpenStreetMap)POI-Dichte → 15-Minuten-Score; füllt Kat-4-Lücke
Statistik Austria Bevölkerungsraster 250 m/1 km4✅ Live (#98)siehe oben — über Eurostat Census 2021 EU-Grid bereitgestellt
Radonpotenzialkarte (ÖNRAP/AGES)3OGC API Features (Live)OGD CC BY 4.0Niedrig✅ Live (#132) — Live-Query via lib/geo/radon.ts, kein DB-Spiegel (Datenmenge minimal, Latenz < 500 ms)Baurechtliches Gesundheitsrisiko, im Markt unbeachtet — Discovery #99, siehe discovery/radon-onrap-discovery.md
Wien Luftbildplan 1938 / 1956 / heute3WMTS (mapsneu.wien.gv.at/wmts/{lb1938,lb1956,lb})CC BY 4.0Niedrig🟡 Wien-Pilot live (#134) — Report-Block-Umsetzung in #135Altlasten-Wahrscheinlichkeit (frühere Tankstelle/Fabrik) — visueller Indikator, Discovery #100; FK 1829 als Raster bei Wien-OGD nicht verfügbar — Mapire-Abo-Entscheidung in #137
Ediktsdatei — Zwangsversteigerungen6HTML (edikte.justiz.gv.at)öffentlich, kein OGD-APIMittel (Scraping/DSGVO)🟡 Stufe 1 (#95)siehe oben — Schema + Ingest implementiert (ADR-0032, property-only)
Freizeit-/Zweitwohnsitz-Beschränkungsgemeinden2Länder-VO (RIS/PDF) → committete JSONCC BY 3.0 AT (RIS)Mittel (heterogen)🟡 Phase 2 implementiert (Salzburg-Pilot, siehe §Detail)Harte Restriktion auf Ferienwohnungs-Szenarien
eBod / BFW Digitale Bodenkarte3WMS/WFSOGDNiedrigP3Bodenbonität: Grünland-Bewertung, Entsiegelung
GBA — Geologie/Altbergbau/Hydrogeologie3WMS/WFSOGDNiedrigP3Baugrund, Hohlraum-/Setzungsrisiko, Geothermie
Wildbach-/Lawinen-Gefahrenzonenplan (WLV)3WMS-GFIOGDIMPLEMENTIERTAmtl. Gefahrenzonen (LFRZ 000901, lib/geo/wlv.ts) — s. Detail-Abschnitt
Fernwärme-Netzgebiete4Gemeinde/Versorger-GISheterogenHoch (kein einheitl. API)P3Anschlussverfügbarkeit = großer Aktivierungskostenfaktor
BEV ALS Laserscan (DGM/DOM)1,3OGD RasterBEVNiedrigP3Exakte Hangneigung/Höhe/Verschattung > basemap
RIS Landesrecht — Bebauungspläne/Bausperren2XML/HTMLöffentlichMittel (DQ)P3Rechtsverbindl. Endprodukt zur Protokoll-Pipeline
GTFS Österreich4GTFS FeedOGDNiedrigP3Echte Taktdichte statt nur Haltestellen-Nähe
Lohnsteuerstatistik / Pendlerverflechtung (STAT)4OGD CSVCC BY 4.0NiedrigP3Kaufkraft-Proxy, Schlafgemeinde vs. Jobzentrum
Wanderungs-/Geburtenbilanz je Gemeinde (STAT)4OGD CSVCC BY 4.0NiedrigP3Nachfrage-Frühindikator vor Preiszeitreihen
Luftgüte-Messnetz (UBA/EEA)3REST/WMSOGDNiedrigP3Wohnqualitäts-Score
Hitzeinseln / Urban Heat (Copernicus, Stadtklima)3Rasterfrei (EU)NiedrigP4Klimaresilienz — zunehmend wertrelevant
Erdbebenzonen (ÖNORM B 1998 / GeoSphere Seismik)3Karte/TabelleOGDNiedrigP4Baukostentreiber je Zone
Bautätigkeits-/Baubewilligungsstatistik (STAT)4OGD CSVCC BY 4.0NiedrigP4Umfeld-Dynamik-Indikator
OECD / BIS House Prices6SDMX/CSVfrei m. QuelleNiedrigP4Lange intl. Zeitreihen (Connector wiederverwendbar)

Top-5-Empfehlung (höchster Hebel, alle OGD): GIP-Isochronen (Phasen-Plan via ADR-0036: Phase 2 OSM-basiert, Phase 4 GIP.at — die GIP-Daten sind freigegeben [CC-BY 4.0], aber lohnen sich erst nach Self-Hosted-Routing-Stack), Bevölkerungsraster, Radonkarte, historischer Kataster (Altlasten-Proxy), Ediktsdatei (Schätzwerte + Leads). Die Ediktsdatei ist strategisch besonders relevant, weil sie das Preis-/Transaktions-Lizenzproblem aus ADR-0016 teilweise umgeht (gerichtlicher Schätzwert ist öffentlich) — Spec & DSGVO-Strategie: ADR-0032 (property-only, Personendaten werden verworfen). Der historische Kataster ist diskovery-seitig in Discovery-Notiz historische Orthofotos bewertet — Wien sofort einsetzbar (CC BY 4.0), NÖ + restliche Bundesländer hängen an Direktanfragen / Mapire-Abo.

Grundbuch-Zugang: Schließt offene Frage #1 von ADR-0016. Kein freies OGD-API; Produktiv-Weg = Vertrag mit einer vom BMJ/BRZ ermächtigten Verrechnungsstelle plus Adapter-Pattern im Code. Spec & Auswahlkriterien: ADR-0033. Kandidaten-Korrektur (2026-07-01): Von den in ADR-0033 genannten Kandidaten steht nur Manz auf der offiziellen BMJ-Liste; IMD ist in Manz aufgegangen, ZT-Datenforum/Infina sind Reseller. Versandfertiges Anfrage-Set + Vergleichsraster: Verrechnungsstellen-Anfrageset (Issue #96). Kein Tech-Blocker — offen ist nur die Anbieter-Auswahl (Owner Magnus).

Attribution-Maintenance

PflichtWo
Footer-Komponente im FrontendPersistent in MapLibre + Footer-Zeile
Datenquellen-Block in PDF-ReportsLetzte Seite oder Fußbereich
/datenquellen-Seite (Public Frontend)Vollständige Liste mit Lizenzen, Versionen, letzten Update-Zeitpunkten
/admin/data-sources (Admin-UI)Statischer Katalog aus dieser Datei + Live-Frische aus ingest_runs und den Ziel-Tabellen — siehe lib/admin/data-sources.ts. Headless: GET /api/v1/admin/data-sources (admin-Scope-Key).
Diese Datei (DATA-SOURCES.md)Maintenance-Pflicht beim Einbinden neuer Quellen

Nicht-funktionale Anforderungen

  • Aktualität-Tracking: Pro Quelle Datum des letzten erfolgreichen Sync in DB festhalten (Tabelle ingest_runs, Migration 0014; alle scripts/ingest-*.mjs schreiben automatisch einen Lauf-Eintrag).
  • Fallback bei Quellen-Ausfall: Cached letzte Antwort + Status-Banner statt Silent Failure
  • Schema-Validierung: OGC-XML / GML mit Schema-Check beim Import; Alert bei null-Feldern