128 lines
5.4 KiB
Markdown
128 lines
5.4 KiB
Markdown
# Technischer Ablauf: Aus Shape laden (bis zum Stop)
|
||||
|
|
|
|||
|
|
Ergänzung zu [aus_shape_laden.md](aus_shape_laden.md), die den fachlichen
|
|||
|
|
Ablauf in Kurzform beschreibt. Dieses Dokument zeigt den tatsächlichen
|
|||
|
|
technischen Ablauf in `lade_vg_aus_zip()` und dem anschließenden Stop in
|
|||
|
|
`verfahrensgebiet_shape_komplett()` (Datei
|
|||
|
|
`functions/verfahrensgebiet_shape_komplett.py`).
|
|||
|
|
|
|||
|
|
Betrachteter Teilablauf: nur bis zum Stop nach dem Einfügen der Layer ins
|
|||
|
|
Projekt. Die anschließenden Schritte (Gemarkung, Flurstücke,
|
|||
|
|
Flächenvergleich, Detailprüfung) sind hier nicht dargestellt.
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
flowchart TD
|
|||
|
|
Start(["Aus Shape laden"])
|
|||
|
|
DLG["Dateidialog (Mehrfachauswahl):<br/>.zip und/oder .shp"]
|
|||
|
|
ABBRUCH1(["Abbruch (keine Auswahl)"])
|
|||
|
|
|
|||
|
|
SAMMEL["Für jede ausgewählte Datei:"]
|
|||
|
|
ISZIP{"Endet auf .shp?"}
|
|||
|
|
DIREKT["Direkt als Shapefile-Eintrag übernehmen"]
|
|||
|
|
ENTPACK["In temporäres Verzeichnis entpacken"]
|
|||
|
|
ENTPACKFEHLER{"Entpacken erfolgreich?"}
|
|||
|
|
FEHLER_ZIP["Fehler notieren:<br/>'ZIP konnte nicht entpackt werden'"]
|
|||
|
|
FINDEALL["Alle .shp-Dateien im<br/>entpackten Verzeichnis suchen"]
|
|||
|
|
KEINSHP{"Mind. eine .shp gefunden?"}
|
|||
|
|
FEHLER_KEIN_SHP["Fehler notieren:<br/>'kein gültiges Shape-Dateiset'"]
|
|||
|
|
ALS_EINTRAG["Jede gefundene .shp als<br/>eigenen Eintrag übernehmen"]
|
|||
|
|
|
|||
|
|
PROJEDEN["Für jeden Shapefile-Eintrag:"]
|
|||
|
|
LOAD["Als QgsVectorLayer laden"]
|
|||
|
|
VALID{"isValid()?"}
|
|||
|
|
FEHLER_INVALID["Fehler notieren:<br/>'kein gültiges Shape-Dateiset'"]
|
|||
|
|
FBSCHL{"Feld 'FBSchl' vorhanden<br/>und Wert bekannt?"}
|
|||
|
|
FEHLER_FBSCHL["Fehler notieren:<br/>Feld fehlt / unbekannter Wert"]
|
|||
|
|
TYP{"FBSchl-Wert"}
|
|||
|
|
ALS_NEUORDNUNG["Geometrien zu<br/>'Neuordnungsgebiet' sammeln"]
|
|||
|
|
ALS_NEUVERMESSUNG["Geometrien zu<br/>'Neuvermessungsgebiet' sammeln"]
|
|||
|
|
|
|||
|
|
NACHSCHLEIFE["Nach Verarbeitung aller Einträge"]
|
|||
|
|
FEHLERVORHANDEN{"Fehler gesammelt?"}
|
|||
|
|
SAMMELMELDUNG["Sammelmeldung anzeigen:<br/>alle fehlerhaften Dateien"]
|
|||
|
|
NICHTSVERWERTBAR{"Mind. ein Typ mit<br/>gültigen Geometrien?"}
|
|||
|
|
ABBRUCH2(["Abbruch (None)"])
|
|||
|
|
|
|||
|
|
MERGE["Je Gebietstyp:<br/>unaryUnion aller gesammelten Geometrien<br/>→ ein Memory-Layer je Typ"]
|
|||
|
|
BENENNEN["Layer benennen:<br/>'Neuordnungsgebiet (NoBIS)' /<br/>'Neuvermessungsgebiet (NoBIS)'"]
|
|||
|
|
RETURN["Liste der Layer zurückgeben<br/>(1 oder 2 Layer)"]
|
|||
|
|
|
|||
|
|
EINFUEGEN["Alle Layer ins Projekt einfügen"]
|
|||
|
|
STOP{{"STOP:<br/>'Layer ... wurde(n) geladen. Weiter?'"}}
|
|||
|
|
WEITER(["weiter mit Gemarkung/Flurstücke/…"])
|
|||
|
|
ABBRUCH3(["Abbruch, Layer bleiben im Projekt"])
|
|||
|
|
|
|||
|
|
Start --> DLG
|
|||
|
|
DLG -- keine Auswahl --> ABBRUCH1
|
|||
|
|
DLG -- Auswahl --> SAMMEL
|
|||
|
|
SAMMEL --> ISZIP
|
|||
|
|
ISZIP -- Ja --> DIREKT
|
|||
|
|
ISZIP -- Nein --> ENTPACK
|
|||
|
|
ENTPACK --> ENTPACKFEHLER
|
|||
|
|
ENTPACKFEHLER -- Nein --> FEHLER_ZIP
|
|||
|
|
ENTPACKFEHLER -- Ja --> FINDEALL
|
|||
|
|
FINDEALL --> KEINSHP
|
|||
|
|
KEINSHP -- Nein --> FEHLER_KEIN_SHP
|
|||
|
|
KEINSHP -- Ja --> ALS_EINTRAG
|
|||
|
|
|
|||
|
|
DIREKT --> PROJEDEN
|
|||
|
|
ALS_EINTRAG --> PROJEDEN
|
|||
|
|
FEHLER_ZIP -.->|nächste Datei| SAMMEL
|
|||
|
|
FEHLER_KEIN_SHP -.->|nächste Datei| SAMMEL
|
|||
|
|
|
|||
|
|
PROJEDEN --> LOAD
|
|||
|
|
LOAD --> VALID
|
|||
|
|
VALID -- Nein --> FEHLER_INVALID
|
|||
|
|
VALID -- Ja --> FBSCHL
|
|||
|
|
FBSCHL -- Nein --> FEHLER_FBSCHL
|
|||
|
|
FBSCHL -- Ja --> TYP
|
|||
|
|
TYP -- "901/10110F" --> ALS_NEUORDNUNG
|
|||
|
|
TYP -- "901/10120F" --> ALS_NEUVERMESSUNG
|
|||
|
|
FEHLER_INVALID -.->|nächstes Shapefile| PROJEDEN
|
|||
|
|
FEHLER_FBSCHL -.->|nächstes Shapefile| PROJEDEN
|
|||
|
|
ALS_NEUORDNUNG -.->|nächstes Shapefile| PROJEDEN
|
|||
|
|
ALS_NEUVERMESSUNG -.->|nächstes Shapefile| PROJEDEN
|
|||
|
|
|
|||
|
|
PROJEDEN --> NACHSCHLEIFE
|
|||
|
|
NACHSCHLEIFE --> FEHLERVORHANDEN
|
|||
|
|
FEHLERVORHANDEN -- Ja --> SAMMELMELDUNG
|
|||
|
|
FEHLERVORHANDEN -- Nein --> NICHTSVERWERTBAR
|
|||
|
|
SAMMELMELDUNG --> NICHTSVERWERTBAR
|
|||
|
|
NICHTSVERWERTBAR -- Nein --> ABBRUCH2
|
|||
|
|
NICHTSVERWERTBAR -- Ja --> MERGE
|
|||
|
|
MERGE --> BENENNEN
|
|||
|
|
BENENNEN --> RETURN
|
|||
|
|
|
|||
|
|
RETURN --> EINFUEGEN
|
|||
|
|
EINFUEGEN --> STOP
|
|||
|
|
STOP -- Ja --> WEITER
|
|||
|
|
STOP -- Nein --> ABBRUCH3
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Hinweise
|
|||
|
|
|
|||
|
|
- **Mehrfachauswahl**: Es können mehrere Dateien gleichzeitig gewählt werden,
|
|||
|
|
auch gemischt `.zip` und `.shp`.
|
|||
|
|
- **ZIP mit mehreren Shapefile-Sets**: Enthält ein ZIP mehrere `.shp`-Dateien,
|
|||
|
|
wird jede einzeln geprüft und verarbeitet – wie ein eigener Eintrag in der
|
|||
|
|
Auswahl.
|
|||
|
|
- **Fehler pro Datei, nicht pro Vorgang**: Schlägt die Prüfung einer
|
|||
|
|
einzelnen Datei/eines einzelnen Shapefiles fehl (ZIP nicht entpackbar,
|
|||
|
|
kein Shapefile enthalten, ungültiger Layer, Feld `FBSchl` fehlt oder hat
|
|||
|
|
einen unbekannten Wert), wird nur dieser Eintrag übersprungen. Alle
|
|||
|
|
anderen werden weiterverarbeitet. Am Ende erscheint eine **gesammelte**
|
|||
|
|
Fehlermeldung mit allen fehlerhaften Einträgen – Abbruch (`None`) nur,
|
|||
|
|
wenn *kein* Eintrag verwertbare Geometrien geliefert hat.
|
|||
|
|
- **Zusammenführen gleicher Gebietstypen**: Alle Geometrien mit demselben
|
|||
|
|
`FBSchl`-Typ (über alle Dateien/Shapefiles hinweg) werden per
|
|||
|
|
`QgsGeometry.unaryUnion` zu **einem** Memory-Layer verschmolzen – nicht
|
|||
|
|
ein Layer pro Datei.
|
|||
|
|
- **Temporäre Verzeichnisse**: Jedes entpackte ZIP landet in einem eigenen
|
|||
|
|
`tempfile.mkdtemp()`-Verzeichnis, das nach der Verarbeitung (auch im
|
|||
|
|
Fehlerfall) wieder gelöscht wird.
|
|||
|
|
- **Stop-Punkt**: Nach dem Einfügen aller erzeugten Layer ins Projekt fragt
|
|||
|
|
ein Ja/Nein-Dialog, ob mit dem restlichen Workflow (Gemarkung,
|
|||
|
|
Flurstücke, Flächenvergleich, Detailprüfung) fortgefahren werden soll.
|
|||
|
|
Bei "Nein" bleiben die geladenen Layer im Projekt erhalten, der weitere
|
|||
|
|
Ablauf wird aber nicht gestartet.
|