BEV-Parzellengeometrie- und Exportvertrag v1

Stand: 26. August 2026

Zweck und tatsächlicher Geltungsbereich

Dieser Vertrag beschreibt ausschließlich eine qualifizierte BEV-Parzellen- geometrie als begrenzten Bestandteil eines wertschöpfenden LandNutzen- Standortprodukts. Er ist weder ein Grundbuchauszug noch ein Eigentümerdienst, kein selbstständiges BEV-Datenprodukt und keine nationale Katasterlieferung.

Der qualifizierte BEV-Export-Pointer ist seit dem Produktionslauf vom 25. August 2026 aktiv. Seine Aktivierung ist von den Consumer-Deployments getrennt: GeoJSON, PDF und DXF sind release-gebunden. Der DXF-Consumer wurde am 26. August 2026 auf Merge-SHA 8b276764f8d5803e8dc6ecdbe54323d8b38445c1 mit Dark Deploy, kontrolliertem Flagwechsel, positivem und negativem Readback, GDAL-Parserprüfung sowie bewiesenem Rollback aktiviert. Der finale Produktionszustand ist DXF_EXPORT_ENABLED=true; false bleibt der jederzeitige fail-closed Rollbackzustand. Eine Umgebung darf Geometrie nur nach eigenem Consumer-Deployment und mit ihrem qualifizierten Export-Pointer ausgeben.

Exakte Quellen- und Release-Identität

EigenschaftVerbindlicher Wert
Source-Slugbev-parzellen
Distributionbev-dkm-gpkg-pilot-snapshot
Nutzungszweckexport
Active-Pointer-Kanalexport
Pilot-Coveragebev-gaenserndorf-pilot-v1
BBox [W,S,E,N][16.64,48.28,16.8,48.4]
LizenzCC-BY-4.0
Source-Review-Statusconditional
Export-Capabilitiesparcel_geojson, pdf_parcel_outline, parcel_dxf

Der getrennte öffentliche Punkt-Lookup verwendet weiterhin ausschließlich bev-parzellen/public, den Zweck public_display und die Capability point_lookup. Sein Active Pointer ist kein Export-Pointer. Umgekehrt erweitert der Exportkanal weder die Punkt-Coverage noch den öffentlichen Standort-Check.

Unveränderter Public-Snapshot und strenge Export-Teilmenge

Der bestehende öffentliche Pilot umfasst 29.746 veröffentlichte Originalgeometrien und 15 quarantänisierte Quellzeilen, insgesamt 29.761 Quellzeilen. Sein historischer Import mit ogr2ogr -spat hat auch Pilotgrenzen schneidende Parzellen als vollständige, unveränderte Originalpolygone übernommen. Für den an seinen Abfragepunkt gebundenen point_lookup ist das kein Geometrieexport.

Der getrennte Export darf ausschließlich unveränderte Originalpolygone übernehmen, die vollständig innerhalb der genehmigten Pilotgrenze liegen:

ST_CoveredBy(geom, ST_MakeEnvelope(16.64, 48.28, 16.8, 48.4, 4326))

ST_Intersects, ein Polygonmittelpunkt, eine Adresse innerhalb der BBox oder eine beschnittene beziehungsweise mit ST_Intersection veränderte Geometrie sind kein zulässiger Ersatz. Die 29.746 öffentlichen Geometrien bleiben unverändert; outsideCoverageRowCount zählt alle daraus ausgeschlossenen, nicht vollständig umschlossenen Originalpolygone, unabhängig davon, ob sie die Grenze schneiden oder vollständig außerhalb liegen.

Die überprüfte Zählwertbindung lautet:

publicRowCount = publishedRowCount + outsideCoverageRowCount = 29.746
publicSourceRowCount = publicRowCount + quarantinedRowCount = 29.761
sourceRowCount = publishedRowCount + quarantinedRowCount
publicSourceRowCount = publishedRowCount + outsideCoverageRowCount + quarantinedRowCount
quarantinedRowCount = 15

Der tatsächliche Produktions-Readback bestätigt publishedRowCount=28535, outsideCoverageRowCount=1211, sourceRowCount=28550 und quarantinedRowCount=15. Damit gilt 28.535 + 1.211 = 29.746 und 28.535 + 15 + 1.211 = 29.761. Der aktive Export-Release lautet 7ae1d4da-e5d5-5c09-ae1f-15997506d4f7 mit Pointer-Version 1; der öffentliche Release 655a7dc3-1f7a-5bdc-a329-d73f1c458320 mit Pointer-Version 2 bleibt unverändert.

publicManifestSha256 und publicSourceManifestSha256 gehören zum vollständigen öffentlichen Snapshot. Der Export-Release erhält dagegen sein eigenes manifest_sha256 und sourceManifestSha256 für die zulässige Teilmenge; quarantineManifestSha256 bindet die übernommenen 15 Quarantänefälle. Migration 0048_bev_parcel_export_release.sql schafft den separaten Kanal, Migration 0049_bev_parcel_export_bounded_subset.sql bindet die strenge Teilmenge. Öffentliches Manifest ad8d194236e319a55a784d6ad6a37b0c6e4cb25f0d1925bd16ce4dd19f3f99c7 und Export-Manifest d6c29076b1c50551cf5ca8c12f8e9948cb8081b75f9108eb5120a734f4898397 sind getrennt nachgewiesen. Der Infrastruktur-Readback allein belegt noch keinen produktiven GeoJSON-/PDF-Consumer.

Verbindliche Bedingungen

Die export-Regel des geprüften BEV-Rechtevertrags enthält genau diese Bedingungen:

  1. attribution;
  2. sourceLink;
  3. licenseLink;
  4. changeNotice;
  5. nonEndorsement;
  6. valueAddedReport;
  7. notStandaloneBevProduct;
  8. pilotCoverageOnly;
  9. noOwnerData.

Die geprüfte Rechte-Datei muss mit rightsReviewSha256 und rightsReviewStateSha256 im usage_context des tatsächlich aktiven öffentlichen BEV-Release übereinstimmen. Der Export-Release übernimmt genau diese beiden Nachweise; source_release_registry_allows prüft zusätzlich den zulässigen Registry-/Zweckvertrag. Die gleichnamigen Digest-Spalten von source_registry dürfen für diese Quelle NULL sein und sind kein alternativer BEV-Rechtenachweis.

Die vorgeschriebene sichtbare Quellenangabe lautet:

Datenquelle: BEV – Bundesamt für Eich- und Vermessungswesen (data.bev.gv.at), CC BY 4.0

Technische Ableitungen werden als Bearbeitung gekennzeichnet. Das BEV unterstützt oder bestätigt die LandNutzen-Auswertung nicht. Die dargestellte DKM-Geometrie ist kein rechtsverbindlicher Vermessungsplan. Namen, Eigentümerdaten, Grundbuchinhalte, Anschriften, Eigentumsanteile oder andere personenbezogene Inhalte werden weder übernommen noch ausgegeben.

Atomare Export-Sicht und Statusmodell

parcel_versions_export_current ist eine eigenständige, zweckgebundene Sicht; parcel_versions_current bleibt für den öffentlichen Punkt-Lookup erhalten. Ein einzelner atomarer SQL-Read verbindet den export-Active-Pointer, den gebundenen qualifizierten Pilot-Release, den erfolgreichen Importlauf, Distribution, angeforderte Capability, Rechte, Freshness, Quality, Pilotgrenze und unveränderte parcel_versions. Der öffentliche Release des vorhandenen Reports, der derzeit aktive öffentliche Pointer und die im Export-Release fixierte öffentliche Pointer-Version müssen übereinstimmen; ein bloß gleicher Source-Slug reicht nicht.

getReleasedParcelGeoJSON(lat, lon, capability, expectedPublicReleaseId);

Der vierte Pflichtparameter bindet den Report-Stand an den tatsächlichen öffentlichen Active Release. Zusätzlich verlangt der atomare Read Parität zwischen sourceSelection.publicPointerVersion und der aktiven öffentlichen Pointer-Version. Eine Rotation oder ein fremder Report-Release verhindert gemischte Report-/Public-/Exportstände fail-closed.

Zulässige technische Ergebnisse:

hit
no_hit
outside_coverage
ambiguous_boundary
quality_rejected
source_not_released
failed

Nur hit enthält eine freigegebene Geometrie. Ein Randpunkt mit mehreren möglichen Parzellen wird nicht willkürlich aufgelöst. Quarantänefälle, fehlende Rechte, fehlende oder veraltete Releases, falsche Capabilities, fehlende Qualität, Außen-Coverage und technische Fehler öffnen weder einen Legacy-Read noch einen WMS-Geometrie-Fallback.

Vorhandener GeoJSON-Kartenpfad

GET /api/parcel-geojson?lat=<lat>&lon=<lon>&reportId=<report-id>
Cache-Control: private, no-store

Der bestehende, rate-limitierte Kartenpfad verwendet ausschließlich die Capability parcel_geojson für ein internes Kartenoverlay eines bereits gespeicherten wertschöpfenden Standortreports. Die verpflichtende reportId muss einen tatsächlich vorhandenen Report mit exakt derselben Koordinate, bestätigtem BEV-Pilot-Treffer und mindestens einer zusätzlichen Nicht-BEV-Datenquelle bezeichnen. Der Report-Release, der aktive öffentliche Pointer und der Export-Release müssen exakt zusammenpassen. Der Pfad ist weder ein eigenständiges BEV-Datenprodukt noch ein allgemeiner Kataster-Download.

  • Fehlende oder formal ungültige reportId: 404 report_context_required, bevor Rate-Limit oder Datenbankzugriff ausgelöst werden.
  • Nicht vorhandener oder abgelaufener Report: 404 report_not_found.
  • Abweichende Koordinate, fehlender BEV-Pilot-Treffer oder fehlendes wertschöpfendes Nicht-BEV-Quellensignal: 403 report_context_mismatch.
  • Ungültige Koordinaten: 400; überschrittenes Kartenlimit: 429.

Nur ein hit liefert die bestehende GeoJSON-FeatureCollection mit zusätzlicher BEV-Herkunft, Quellen-/Lizenzhinweis, Quellenstand, Bearbeitung und Vermessungsgrenze. Vorhandene Reports werden nur gelesen; der Endpunkt legt weder einen neuen Report an noch schreibt er zusätzliche personenbezogene Produktionsdaten.

Außen-Coverage, no_hit, Boundary-Mehrdeutigkeit, Quarantäne, abgelaufene Rechte, Stale-Zustände, fehlender Export-Pointer, ein abweichender öffentlicher Release und technische Fehler führen zu 503 Service Unavailable. Auch Fehlerantworten bleiben private, no-store. Ein fachlich unsicherer Fall wird nie als leere, scheinbar bestätigte FeatureCollection verkauft.

PDF-Outline innerhalb eines bestehenden Reports

Die bereits vorhandene Report-PDF verwendet ausschließlich pdf_parcel_outline und denselben zwingenden öffentlichen Release aus dem gespeicherten Report. Nur ein qualifizierter hit mit Report-/Public-/Export- Parität darf die Parzellenoutline zeichnen. Bei jedem anderen Zustand bleibt die Outline null; der übrige Report und die PDF werden dadurch nicht zu einem ungebundenen Geometry-Export.

Die bestehende Reportpersistenz, Zugriffskontrolle, Rate-Limits und Attributionspflichten bleiben unverändert. Der eigenständige Standort-Check erzeugt weiterhin weder Report noch PDF oder Geometrieexport.

DXF ist release-gebunden und kontrolliert live

parcel_dxf ist rechtlich überprüfte Capability und im Consumer-Inventar release_bound. #412 ist mit einem vollständigen Produktions- und Rollback-Readback abgeschlossen. Im finalen Produktionszustand ist DXF_EXPORT_ENABLED=true; der initial bewiesene und jederzeitige Rollbackzustand false liefert 404 und entfernt den Pfad aus dem öffentlichen OpenAPI-Schema. Nur die Kombination aus release-gebundenem Consumer und exakt DXF_EXPORT_ENABLED=true dokumentiert den Pfad; das Flag umgeht weder Export-Release noch Report-, Rechte-, Coverage-, Freshness-, Quality-, Quarantäne- oder Boundary-Gates.

Der DXF-Aufruf ist an einen bereits gespeicherten wertschöpfenden Report, seine exakte Standortkoordinate, denselben öffentlichen Release und mindestens eine Nicht-BEV-Datenquelle gebunden. Ausgegeben werden ausschließlich die vollständigen, unveränderten Originalpolygone des qualifizierten ST_CoveredBy-Exports in voller Stützpunktdichte; weder Clipping noch Vereinfachung, Mittelpunktfreigabe oder ein Legacy-/WMS-Fallback sind zulässig. Die Ausgabe bewahrt sichtbare BEV-Attribution, Quelle, Lizenz, Bearbeitung, Nicht-Unterstützungshinweis und Vermessungsgrenze. Sie enthält keine Eigentümerdaten, ist kein eigenständiges BEV-Produkt, kein allgemeiner Katasterdownload und kein rechtsverbindlicher Vermessungsplan. Ein fehlender Report bleibt 404, ein gespeicherter Report ohne passenden Mehrwert-/Public- Release-Kontext 403 report_context_mismatch, ein unpassender Export-Release oder Nutzungszweck 503 und ein Rendererfehler 500 dxf_failed.

NÖGIS-Widmung und sonstige NÖGIS-Distributionen erhalten keine BEV-Rechte. Ihre Speicherung, Anzeige und Exportfähigkeit bleiben je Bezugskanal an #413 gebunden. Es entstehen keine Eigentümerabfrage, keine bundesweite Parzellenabdeckung und keine neue indexierbare öffentliche Werkzeugroute.

Aktivierung und Rollback

node scripts/publish-bev-parcel-export-release.mjs \
  --expected-public-release-id=<uuid>

Die Aktivierung bindet den Export-Kandidaten an genau den erwarteten bereits qualifizierten öffentlichen Pilot-Snapshot. Candidate, Qualitätsprüfung und Expected-Current-CAS betreffen ausschließlich bev-parzellen/export.

Der manuell gestartete Betreiber-Workflow unterstützt einen schreibfreien dry-run. Eine tatsächliche Veröffentlichung verlangt die exakte Bestätigung PUBLISH bev-parzellen export, die erwartete öffentliche Release-ID und einen versionierten Prüfnachweis. Es wird keine automatische Veröffentlichung ausgelöst.

Für den DXF-Consumer wird zuerst mit DXF_EXPORT_ENABLED=false deployt und gegen 404, einen ebenfalls geschlossenen OPTIONS-Preflight sowie ein fehlendes OpenAPI-Path-Item rückgelesen. Erst nach qualifiziertem Export-Pointer und erfolgreichem Dunkel-Readback darf die Umgebung exakt auf true wechseln. Weil Vercel-Umgebungsänderungen erst in einem neuen Deployment wirksam werden, gehört dazu jeweils ein Redeploy desselben geprüften Commits, das Warten auf Ready und der anschließende HTTP-/OpenAPI-Readback. Das deploymentabhängige OpenAPI-Dokument trägt Cache-Control: no-store. Der Consumer-Rollback ist entsprechend: Flag auf false, denselben geprüften Commit erneut deployen, Ready abwarten und 404 plus fehlendes OpenAPI-Path-Item bestätigen. Daten und Pointer werden dabei nicht geändert.

Dieser Ablauf wurde am 26. August 2026 vollständig auf Merge-SHA 8b276764f8d5803e8dc6ecdbe54323d8b38445c1 ausgeführt. Das finale Produktionsdeployment dpl_CaUMXVpyerL5iV6BzraupmboMgtr liefert DXF mit 200, private, no-store, sichtbarer Attribution und unveränderter Originalgeometrie. GDAL 3.13.3 öffnete die Datei erfolgreich. Ungültige, unbekannte und quarantänisierte Fälle blieben im Live-Readback fail-closed und redigiert. Die blockierte Consumer-Bindung sowie Außen-Coverage, Boundary- und Reportkontextfälle sind zusätzlich durch Route-, Contract- und echte PostGIS- Tests belegt, nicht als eigene produktive Requests. Der Flag-Rollback auf false bestätigte 404 für GET und OPTIONS sowie das fehlende OpenAPI-Path-Item; nach dem erneuten Aktivieren blieb der Datei-Hash deterministisch gleich. Öffentlicher Release 655a7dc3-1f7a-5bdc-a329-d73f1c458320 und Export-Release 7ae1d4da-e5d5-5c09-ae1f-15997506d4f7 blieben währenddessen unverändert.

Ein Datenrollback setzt nur den Export-Pointer auf einen zuvor qualifizierten Export-Release zurück beziehungsweise hält ihn geschlossen, wenn kein geeigneter Stand vorliegt. Der öffentliche public-Punkt-Lookup und andere Datenquellen bleiben unberührt. Der erfolgreiche Infrastruktur-Publish war die Voraussetzung, aber nicht der DXF-Consumer-Nachweis. Der DXF-Produktionsnachweis enthält die ausgeführten Negativ-, Positiv-, Parser- und Rollback-Readbacks.

Weitere Informationen: BEV-Pilot und Datenexport, Quellen und Lizenzen, Standort-Check-Datenpass und aktueller Produktstatus.