# X_STYLES - QGIS Plugin

Version 1.0.0

## Übersicht

X_STYLES ist ein QGIS-Plugin zur automatischen Zuweisung von standardisierten Zeichenvorschriften (Styles) für XPlanGML-Dateien. Das Plugin ermöglicht eine sofortige, standardkonforme Darstellung von Raumplanungsdaten direkt nach dem Import in QGIS.

### Hauptfunktionen

- Automatische Zuweisung von QML-Styles für XPlanGML-Layer
- Unterstützung für Bebauungspläne (BP), Flächennutzungspläne (FP) und Regionale Raumordnungsprogramme (RP)
- Intelligente Erkennung von Punkt-, Linien- und Flächengeometrien
- Konfigurierbare Darstellungsreihenfolge (z-Index) zur optimalen Lesbarkeit
- YAML-basierte Konfiguration für einfache Anpassungen ohne Code-Änderungen
- Optionale Sortierung des Layer-Baums
- Automatische Layer-Umbenennung mit Geometrie-Suffix

## Installation

### Installation über QGIS Plugin Manager

1. Öffnen Sie QGIS
2. Gehen Sie zu `Erweiterungen → Erweiterungen verwalten und installieren...`
3. Suchen Sie nach "X_STYLES"
4. Klicken Sie auf "Installieren"

### Manuelle Installation

1. Laden Sie das Plugin-Archiv herunter
2. Entpacken Sie das Archiv in Ihr QGIS-Plugin-Verzeichnis:
   - Windows: `C:\Users\[Benutzername]\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\` oder `C:\Users\[Benutzername]\AppData\Roaming\QGIS\QGIS4\profiles\default\python\plugins\`
   - macOS: `~/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/` oder `~/Library/Application Support/QGIS/QGIS4/profiles/default/python/plugins/`
   - Linux: `~/.local/share/QGIS/QGIS3/profiles/default/python/plugins/` oder `~/.local/share/QGIS/QGIS4/profiles/default/python/plugins/`
3. Starten Sie QGIS neu
4. Aktivieren Sie das Plugin unter `Erweiterungen → Erweiterungen verwalten und installieren...`

## Verwendung

### Grundlegende Nutzung

1. Laden Sie eine oder mehrere XPlanGML-Dateien in QGIS (über `Layer → Layer hinzufügen → Vektorlayer hinzufügen...`)
2. Klicken Sie auf das X_STYLES-Icon in der Werkzeugleiste
3. Das Plugin wendet automatisch die entsprechenden Styles auf alle erkannten XPlan-Layer an
4. Eine Erfolgsmeldung zeigt an, welche Layer gestylt wurden

Tipp: Das Plugin erkennt automatisch den Layer-Typ (BP, FP, RP) anhand des Layer-Namens und wendet die passenden Styles an.

### Einstellungen konfigurieren

Über das Dropdown-Menü des X_STYLES-Icons können Sie die Einstellungen öffnen:

1. Klicken Sie auf den Pfeil neben dem X_STYLES-Icon
2. Wählen Sie `Settings`
3. Konfigurieren Sie die folgenden Optionen:

#### Verfügbare Einstellungen

Option | Beschreibung
--- | ---
FP Style | Aktiviert spezielle Styles für Flächennutzungspläne aus dem FP-Verzeichnis
RP Style | Aktiviert spezielle Styles für Regionale Raumordnungsprogramme aus dem RP-Verzeichnis
Custom Layer Order | Wendet eine benutzerdefinierte Darstellungsreihenfolge basierend auf z-Index an
Sort Layer Tree | Sortiert die Layer im Layerbaum entsprechend der Darstellungsreihenfolge
Rename Layers | Fügt Geometrie-Suffix zu Layer-Namen hinzu (_p für Punkt, _l für Linie, _a für Fläche)
Base Style Directory | Verzeichnis mit den Basis-QML-Dateien und manifest.yaml
FP Style Directory | Optionales Verzeichnis mit spezifischen FP-Styles (überschreibt Basis-Styles)
RP Style Directory | Optionales Verzeichnis mit spezifischen RP-Styles (überschreibt Basis-Styles)

## Erweiterte Konfiguration

### Die manifest.yaml Datei

Das Herzstück der Style-Verwaltung ist die `manifest.yaml` Datei im Base-Style-Verzeichnis. Diese Datei definiert die Zuordnung zwischen Layer-Namen und QML-Dateien.

#### Struktur der manifest.yaml

    bp_anpflanzungbindungerhaltung:
        PointGeometry:
            path: BP_AnpflanzungBindungErhaltung_p.qml
            zIndex: 115
        LineGeometry:
            path: BP_AnpflanzungBindungErhaltung_l.qml
            zIndex: 120
        PolygonGeometry:
            path: BP_AnpflanzungBindungErhaltung_f.qml
            zIndex: 131

#### Parameter-Erklärung

- Layer-Schlüssel (z.B. `bp_anpflanzungbindungerhaltung`): Teilstring des Layer-Namens (Groß-/Kleinschreibung wird ignoriert)
- Geometrie-Typ: `PointGeometry`, `LineGeometry` oder `PolygonGeometry`
- path: Relativer Pfad zur QML-Datei
- zIndex: Darstellungsreihenfolge (niedrige Werte = Vordergrund, hohe Werte = Hintergrund)

### z-Index Konventionen

Empfohlene z-Index Bereiche:

- 0-99: Reserviert für zukünftige Verwendung
- 100-199: Bebauungspläne (BP)
- 200-299: Flächennutzungspläne (FP)
- 300-399: Regionale Raumordnungsprogramme (RP)
- 400-499: Landschaftsplanung
- 9999: Keine Darstellung

### Innerhalb der Bereiche

- x5: Schrift/Beschriftungen
- x10: Signaturen/Symbole
- x20-x29: Linien
- x30-x39: Flächen (x30 oben, x39 unten)

## Eigene Styles erstellen

### QML-Dateien erstellen

1. Stylen Sie einen Layer manuell in QGIS wie gewünscht
2. Rechtsklick auf den Layer → `Eigenschaften → Symbologie`
3. Konfigurieren Sie die gewünschte Darstellung
4. Klicken Sie auf `Stil → Stil speichern...`
5. Wählen Sie `Als QML-Stil-Datei...`
6. Speichern Sie die Datei im entsprechenden Style-Verzeichnis

### Style in manifest.yaml eintragen

1. Öffnen Sie die `manifest.yaml` im Base-Style-Verzeichnis
2. Fügen Sie einen neuen Eintrag nach dem Schema oben hinzu
3. Speichern Sie die Datei
4. Führen Sie das Plugin erneut aus, um die Änderungen zu testen

Wichtig: Der Layer-Schlüssel in der manifest.yaml muss als Teilstring im Layer-Namen vorkommen. Das Plugin sucht case-insensitive (Groß-/Kleinschreibung wird ignoriert).

## Fehlerbehebung

### Plugin wendet keine Styles an

- Überprüfen Sie, ob die Layer tatsächlich XPlan-Layer sind
- Prüfen Sie die Layer-Namen - sie müssen Schlüsselwörter aus der manifest.yaml enthalten
- Kontrollieren Sie, ob die manifest.yaml im Base-Style-Verzeichnis vorhanden ist
- Öffnen Sie die Log-Meldungen (Ansicht → Bedienfelder → Protokollmeldungen) und suchen Sie nach "X_STYLES"

### Falsche Styles werden angewendet

- Prüfen Sie die Reihenfolge der Einträge in der manifest.yaml - das erste Match wird verwendet
- Stellen Sie sicher, dass die Geometrie-Typen korrekt zugeordnet sind
- Überprüfen Sie die Pfade zu den QML-Dateien auf Tippfehler

### Layer werden nicht in der richtigen Reihenfolge angezeigt

- Aktivieren Sie "Custom Layer Order" in den Einstellungen
- Überprüfen Sie die z-Index-Werte in der manifest.yaml
- Optional: Aktivieren Sie "Sort Layer Tree" für zusätzliche Sortierung im Layerbaum

### YAML-Fehler

YAML ist einrückungsempfindlich! Verwenden Sie Leerzeichen (keine Tabs) und achten Sie auf konsistente Einrückung (4 Leerzeichen pro Ebene empfohlen).

## Beispiel-Workflow

### Szenario: Flächennutzungsplan darstellen

1. XPlanGML-Datei eines Flächennutzungsplans in QGIS laden
2. Alle Layer werden zunächst mit Zufallsfarben dargestellt
3. X_STYLES-Plugin öffnen → Settings
4. "FP Style" aktivieren (falls spezielle FP-Styles vorhanden)
5. "Custom Layer Order" aktivieren
6. "Sort Layer Tree" aktivieren (optional)
7. Einstellungen speichern
8. X_STYLES-Plugin ausführen (Hauptbutton klicken)
9. Alle FP-Layer erhalten nun standardisierte Styles
10. Die Darstellungsreihenfolge ist optimiert (Punkte vor Linien vor Flächen)
11. Der Layerbaum ist entsprechend sortiert

## Technische Details

### Systemanforderungen

- QGIS Version 3.2 bis 4.x
- Python 3.x (im Lieferumfang von QGIS enthalten)
- PyYAML Bibliothek (normalerweise in QGIS enthalten)

### Verarbeitungsablauf

1. Plugin liest die manifest.yaml Konfiguration
2. Alle geladenen Vector-Layer werden durchsucht
3. Für jeden Layer wird geprüft, ob der Name einen Schlüssel aus der manifest.yaml enthält
4. Bei einem Match wird der Geometrie-Typ des Layers ermittelt
5. Die entsprechende QML-Datei wird geladen und auf den Layer angewendet
6. Der Layer wird gemäß z-Index einsortiert
7. Optional: Layer werden im Layerbaum neu sortiert
8. Optional: Layer werden mit Geometrie-Suffix umbenannt
9. Die Kartenansicht wird aktualisiert

### Dateistruktur des Plugins

    x_styles/
    ├── __init__.py
    ├── mainPlugin.py
    ├── metadata.txt
    ├── x_styles_master_dialog.py
    ├── x_styles_master_dialog_base.ui
    ├── icons/
    │   └── X_STYLES.PNG
    ├── styles/
    │   ├── base/
    │   │   ├── manifest.yaml
    │   │   └── *.qml (QML-Style-Dateien)
    │   ├── fp/ (optional)
    │   │   └── *.qml
    │   └── rp/ (optional)
    │       └── *.qml
    └── help/
        └── index-de.html

## Lizenz

Dieses Plugin wird unter der GNU General Public License Version 2 veröffentlicht. Sie können es frei verwenden, modifizieren und weitergeben.

## Support und Kontakt

- E-Mail: plandigitaloss@proton.me
- GitHub: https://github.com/PlanDigitalOSS/x_styles
- Issue Tracker: https://github.com/PlanDigitalOSS/x_styles/issues

## Mitwirken

Beiträge zum Projekt sind willkommen! Sie können:

- Fehler melden über den Issue Tracker
- Neue Styles für weitere XPlan-Klassen beisteuern
- Die Dokumentation verbessern
- Übersetzungen beisteuern
- Pull Requests mit Verbesserungen einreichen

## Danksagungen

Dieses Plugin wurde mit dem QGIS Plugin Builder erstellt.

XPlanung-Standard: Leitstelle XPlanung/XBau Hamburg

© 2024 Cornelio Hopmann Lopez | X_STYLES v1.0.0