Compare commits
36 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 800488fb15 | |||
| 4d0dcc0310 | |||
| a54d4fbe3c | |||
| 284f2a2a03 | |||
| d21483ce53 | |||
| bfc9fae324 | |||
| ff5fd990bc | |||
| fcf5b11373 | |||
| 6a4c7b4609 | |||
| a3b22d0444 | |||
| 5c00b4abee | |||
| 6261b88fee | |||
| 6436b06a43 | |||
| 43d52145ef | |||
|
|
a9f75e9019 | ||
|
|
c5f2093a49 | ||
|
|
a79469e4d2 | ||
| f7926d71d2 | |||
| d80f8945be | |||
| 3f553efd21 | |||
| 1de7526db8 | |||
| ffe479ad8b | |||
| c0bee6df98 | |||
| 494a913d24 | |||
| fc55735477 | |||
| 8bc86d8e27 | |||
| b5f663d9de | |||
| 93b17e154c | |||
| e153a45ffa | |||
| 3bfd88b51e | |||
| 8f8a1ccde3 | |||
| c8409c7f25 | |||
| 76b8a8ad13 | |||
| f5a5ed167b | |||
| 5177a526a3 | |||
| e514e7571e |
295
.gitea/workflows/release.yml
Normal file
295
.gitea/workflows/release.yml
Normal file
@@ -0,0 +1,295 @@
|
||||
name: Release Plugin
|
||||
run-name: "Release | ${{ github.ref_name }}"
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: alpine-latest
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
steps:
|
||||
- name: Notwendige Abhängigkeiten installieren
|
||||
shell: sh
|
||||
run: |
|
||||
apk add --no-cache git zip curl jq rsync bash
|
||||
git config --global http.sslVerify false
|
||||
|
||||
- name: Code holen
|
||||
run: |
|
||||
# Tag aus GitHub Actions Kontext extrahieren
|
||||
TAG="${GITHUB_REF#refs/tags/}"
|
||||
|
||||
# Repo-URL dynamisch aus vars und github.repository bauen
|
||||
REPO_URL="https://${RELEASE_TOKEN}:x-oauth-basic@${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}.git"
|
||||
|
||||
# Repository klonen
|
||||
git clone "$REPO_URL" repo
|
||||
cd repo
|
||||
|
||||
git checkout "$TAG"
|
||||
env:
|
||||
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
||||
|
||||
- name: Version und Kanal bestimmen
|
||||
id: releaseinfo
|
||||
run: |
|
||||
TAG="${{ github.ref_name }}"
|
||||
VERSION="${TAG#v}"
|
||||
|
||||
case "$TAG" in
|
||||
*-unstable*)
|
||||
CHANNEL="unstable"
|
||||
DRAFT="false"
|
||||
PRERELEASE="true"
|
||||
;;
|
||||
*-testing*)
|
||||
CHANNEL="testing"
|
||||
DRAFT="false"
|
||||
PRERELEASE="true"
|
||||
;;
|
||||
*)
|
||||
CHANNEL="stable"
|
||||
DRAFT="false"
|
||||
PRERELEASE="false"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
echo "channel=$CHANNEL" >> $GITHUB_OUTPUT
|
||||
echo "draft=$DRAFT" >> $GITHUB_OUTPUT
|
||||
echo "prerelease=$PRERELEASE" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: plugin.cfg einlesen
|
||||
id: info
|
||||
run: |
|
||||
cd repo
|
||||
while read -r line || [ -n "$line" ]; do
|
||||
key="${line%%=*}"
|
||||
value="${line#*=}"
|
||||
echo "$key=$value" >> $GITHUB_OUTPUT
|
||||
echo "$key=$value"
|
||||
done < plugin.cfg
|
||||
|
||||
- name: Changelog einlesen
|
||||
id: changelog
|
||||
run: |
|
||||
cd repo
|
||||
|
||||
# Aktueller Block = alles vor dem ersten ---
|
||||
CURRENT=$(awk '/^---/{exit} {print}' changelog.txt)
|
||||
|
||||
# Vollständige Historie = alles nach dem ersten ---
|
||||
HISTORY=$(awk 'found{print} /^---/{found=1}' changelog.txt)
|
||||
|
||||
# Gitea Release Body zusammenbauen
|
||||
VERSION="${{ steps.releaseinfo.outputs.version }}"
|
||||
FULL=$(printf "## %s\n%s\n\n%s" "$VERSION" "$CURRENT" "$HISTORY")
|
||||
|
||||
echo "DEBUG | Aktueller Changelog:"
|
||||
echo "$CURRENT"
|
||||
|
||||
# Für GITHUB_OUTPUT: Multiline via EOF-Marker
|
||||
echo "current<<EOF" >> $GITHUB_OUTPUT
|
||||
echo "$CURRENT" >> $GITHUB_OUTPUT
|
||||
echo "EOF" >> $GITHUB_OUTPUT
|
||||
|
||||
echo "full<<EOF" >> $GITHUB_OUTPUT
|
||||
echo "$FULL" >> $GITHUB_OUTPUT
|
||||
echo "EOF" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: metadata.txt erzeugen
|
||||
run: |
|
||||
cd repo
|
||||
|
||||
# ------------------------ GEÄNDERT ------------------------
|
||||
# Temporär die Vorlage aus dem hidden/templates Branch holen
|
||||
git fetch origin hidden/templates
|
||||
git checkout origin/hidden/templates -- metadata.template
|
||||
TEMPLATE="metadata.template"
|
||||
# -----------------------------------------------------------
|
||||
|
||||
# TEMPLATE="templates/metadata.template"
|
||||
OUT="metadata.txt"
|
||||
|
||||
CONTENT=$(cat "$TEMPLATE")
|
||||
|
||||
CONTENT="${CONTENT//\{\{NAME\}\}/${{ steps.info.outputs.name }}}"
|
||||
CONTENT="${CONTENT//\{\{QGIS_MIN\}\}/${{ steps.info.outputs.qgisMinimumVersion }}}"
|
||||
CONTENT="${CONTENT//\{\{QGIS_MAX\}\}/${{ steps.info.outputs.qgisMaximumVersion }}}"
|
||||
CONTENT="${CONTENT//\{\{DESCRIPTION\}\}/${{ steps.info.outputs.description }}}"
|
||||
CONTENT="${CONTENT//\{\{VERSION\}\}/${{ steps.releaseinfo.outputs.version }}}"
|
||||
CONTENT="${CONTENT//\{\{AUTHOR\}\}/${{ steps.info.outputs.author }}}"
|
||||
CONTENT="${CONTENT//\{\{EMAIL\}\}/${{ steps.info.outputs.email }}}"
|
||||
CONTENT="${CONTENT//\{\{HOMEPAGE\}\}/${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}}"
|
||||
CONTENT="${CONTENT//\{\{TRACKER\}\}/${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}}"
|
||||
CONTENT="${CONTENT//\{\{REPOSITORY\}\}/${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}}"
|
||||
CONTENT="${CONTENT//\{\{EXPERIMENTAL\}\}/${{ steps.info.outputs.experimental }}}"
|
||||
CONTENT="${CONTENT//\{\{DEPRECATED\}\}/${{ steps.info.outputs.deprecated }}}"
|
||||
CONTENT="${CONTENT//\{\{QT6\}\}/${{ steps.info.outputs.supportsQt6 }}}"
|
||||
|
||||
printf "%s\n" "$CONTENT" > "$OUT"
|
||||
rm $TEMPLATE
|
||||
|
||||
- name: ZIP-Datei erstellen
|
||||
id: zip
|
||||
run: |
|
||||
cd repo
|
||||
|
||||
ZIP_FOLDER="${{ steps.info.outputs.zip_folder }}"
|
||||
ZIP_FILE="${ZIP_FOLDER}.zip"
|
||||
|
||||
echo "ZIP_FOLDER: $ZIP_FOLDER"
|
||||
echo "ZIP_FILE: $ZIP_FILE"
|
||||
|
||||
VERSION="${{ steps.releaseinfo.outputs.version }}"
|
||||
REPO_NAME="${GITHUB_REPOSITORY##*/}"
|
||||
#ZIP_NAME="${REPO_NAME}-${VERSION}.zip"
|
||||
|
||||
|
||||
mkdir -p dist/${ZIP_FOLDER}
|
||||
|
||||
rsync -a \
|
||||
--exclude='.git' \
|
||||
--exclude='.gitea' \
|
||||
--exclude='.plugin' \
|
||||
--exclude='dist' \
|
||||
./ dist/${ZIP_FOLDER}/
|
||||
|
||||
cd dist
|
||||
zip -r "${ZIP_FILE}" "${ZIP_FOLDER}/" \
|
||||
-x "*.pyc" -x "*/__pycache__/*"
|
||||
cd ..
|
||||
|
||||
echo "zip_file=${ZIP_FILE}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Gitea-Release erstellen
|
||||
id: create_release
|
||||
run: |
|
||||
TAG="${{ github.ref_name }}"
|
||||
VERSION="${{ steps.releaseinfo.outputs.version }}"
|
||||
CHANNEL="${{ steps.releaseinfo.outputs.channel }}"
|
||||
|
||||
API_URL="https://${{ vars.RELEASE_URL }}/api/v1/repos/${GITHUB_REPOSITORY}/releases"
|
||||
|
||||
JSON=$(jq -n \
|
||||
--arg tag "$TAG" \
|
||||
--arg name "Version $VERSION" \
|
||||
--arg body "${{ steps.changelog.outputs.current }}" \
|
||||
--argjson draft "${{ steps.releaseinfo.outputs.draft }}" \
|
||||
--argjson prerelease "${{ steps.releaseinfo.outputs.prerelease }}" \
|
||||
'{tag_name: $tag, name: $name, body: $body, draft: $draft, prerelease: $prerelease}')
|
||||
|
||||
API_RESPONSE=$(curl -s -X POST "$API_URL" \
|
||||
-H "accept: application/json" \
|
||||
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$JSON")
|
||||
|
||||
RELEASE_ID=$(echo "$API_RESPONSE" | jq -r '.id')
|
||||
|
||||
if [ "$RELEASE_ID" = "null" ] || [ -z "$RELEASE_ID" ]; then
|
||||
echo "Fehler beim Erstellen des Releases!"
|
||||
echo "$API_RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "release_id=$RELEASE_ID" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: ZIP-Datei hochladen
|
||||
run: |
|
||||
RELEASE_ID="${{ steps.create_release.outputs.release_id }}"
|
||||
ZIP_FILE="${{ steps.zip.outputs.zip_file }}"
|
||||
|
||||
API_URL="https://${{ vars.RELEASE_URL }}/api/v1/repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}/assets?name=${ZIP_FILE}"
|
||||
|
||||
curl -s -X POST "$API_URL" \
|
||||
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \
|
||||
-H "Content-Type: application/zip" \
|
||||
--data-binary "@repo/dist/${ZIP_FILE}" \
|
||||
-o upload_response.json
|
||||
|
||||
# Optional: Fehlerprüfung
|
||||
if jq -e '.id' upload_response.json >/dev/null 2>&1; then
|
||||
echo "ZIP erfolgreich hochgeladen."
|
||||
else
|
||||
echo "Fehler beim Hochladen der ZIP!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Payload erzeugen
|
||||
run: |
|
||||
cd repo
|
||||
|
||||
VERSION="${{ steps.releaseinfo.outputs.version }}"
|
||||
CHANNEL="${{ steps.releaseinfo.outputs.channel }}"
|
||||
ZIP_FILE="${{ steps.zip.outputs.zip_file }}"
|
||||
|
||||
DOWNLOAD_URL="https://${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}/releases/download/${{ github.ref_name }}/${ZIP_FILE}"
|
||||
|
||||
jq -n \
|
||||
--arg name "${{ steps.info.outputs.name }}" \
|
||||
--arg version "$VERSION" \
|
||||
--arg channel "$CHANNEL" \
|
||||
--arg description "${{ steps.info.outputs.description }}" \
|
||||
--arg author "${{ steps.info.outputs.author }}" \
|
||||
--arg email "${{ steps.info.outputs.email }}" \
|
||||
--arg qgis_min "${{ steps.info.outputs.qgisMinimumVersion }}" \
|
||||
--arg qgis_max "${{ steps.info.outputs.qgisMaximumVersion }}" \
|
||||
--arg homepage "${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}" \
|
||||
--arg tracker "${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}" \
|
||||
--arg repository "${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}" \
|
||||
--arg experimental "${{ steps.info.outputs.experimental }}" \
|
||||
--arg deprecated "${{ steps.info.outputs.deprecated }}" \
|
||||
--arg qt6 "${{ steps.info.outputs.supportsQt6 }}" \
|
||||
--arg id "${{ steps.info.outputs.zip_folder }}" \
|
||||
--arg url "$DOWNLOAD_URL" \
|
||||
--arg changelog "${{ steps.changelog.outputs.current }}" \
|
||||
'{
|
||||
name: $name,
|
||||
version: $version,
|
||||
channel: $channel,
|
||||
description: $description,
|
||||
author: $author,
|
||||
email: $email,
|
||||
qgis_min: $qgis_min,
|
||||
qgis_max: $qgis_max,
|
||||
homepage: $homepage,
|
||||
tracker: $tracker,
|
||||
repository: $repository,
|
||||
experimental: $experimental,
|
||||
deprecated: $deprecated,
|
||||
qt6: $qt6,
|
||||
id: $id,
|
||||
url: $url,
|
||||
changelog: $changelog
|
||||
}' > payload.json
|
||||
|
||||
- name: Repository aktualisieren
|
||||
run: |
|
||||
OWNER="AG_QGIS"
|
||||
WORKFLOW="update.yml"
|
||||
|
||||
PAYLOAD_B64=$(base64 -w0 repo/payload.json)
|
||||
|
||||
FULL_NAME="${{ steps.info.outputs.name }}"
|
||||
NAME=$(echo "$FULL_NAME" | awk -F'|' '{gsub(/^ +| +$/,"",$2); print $2}')
|
||||
TAG="${{ steps.releaseinfo.outputs.version }}"
|
||||
|
||||
JSON="{\"ref\":\"hidden/workflows\",\"inputs\":{\"payload\":\"$PAYLOAD_B64\",\"name\":\"$NAME\",\"tag\":\"$TAG\"}}"
|
||||
|
||||
#JSON="{\"ref\":\"hidden/workflows\",\"inputs\":{\"payload\":\"$PAYLOAD_B64\"}}"
|
||||
|
||||
echo "DEBUG | Sende JSON:"
|
||||
echo "$JSON"
|
||||
|
||||
curl -X POST \
|
||||
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$JSON" \
|
||||
"https://${{ vars.RELEASE_URL }}/api/v1/repos/${OWNER}/Repository/actions/workflows/${WORKFLOW}/dispatches"
|
||||
808
assets/Biotope_Offenland.qml
Normal file
808
assets/Biotope_Offenland.qml
Normal file
@@ -0,0 +1,808 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis hasScaleBasedVisibilityFlag="0" simplifyDrawingTol="1" symbologyReferenceScale="-1" simplifyAlgorithm="0" labelsEnabled="0" version="3.40.7-Bratislava" simplifyLocal="1" maxScale="0" readOnly="0" autoRefreshMode="Disabled" simplifyMaxScale="1" minScale="100000000" autoRefreshTime="0" styleCategories="AllStyleCategories" simplifyDrawingHints="1">
|
||||
<flags>
|
||||
<Identifiable>1</Identifiable>
|
||||
<Removable>1</Removable>
|
||||
<Searchable>1</Searchable>
|
||||
<Private>0</Private>
|
||||
</flags>
|
||||
<temporal mode="0" fixedDuration="0" endExpression="" startExpression="" accumulate="0" limitMode="0" durationUnit="min" enabled="0" durationField="OBJECTID" startField="DATUMERF" endField="">
|
||||
<fixedRange>
|
||||
<start></start>
|
||||
<end></end>
|
||||
</fixedRange>
|
||||
</temporal>
|
||||
<elevation extrusionEnabled="0" symbology="Line" respectLayerSymbol="1" zoffset="0" showMarkerSymbolInSurfacePlots="0" zscale="1" binding="Centroid" type="IndividualFeatures" extrusion="0" clamping="Terrain">
|
||||
<data-defined-properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data-defined-properties>
|
||||
<profileLineSymbol>
|
||||
<symbol alpha="1" clip_to_extent="1" name="" type="line" frame_rate="10" force_rhr="0" is_animated="0">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer id="{615d2245-88ff-43f8-93ab-3beccd4bd7fc}" enabled="1" pass="0" locked="0" class="SimpleLine">
|
||||
<Option type="Map">
|
||||
<Option name="align_dash_pattern" type="QString" value="0"/>
|
||||
<Option name="capstyle" type="QString" value="square"/>
|
||||
<Option name="customdash" type="QString" value="5;2"/>
|
||||
<Option name="customdash_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="customdash_unit" type="QString" value="MM"/>
|
||||
<Option name="dash_pattern_offset" type="QString" value="0"/>
|
||||
<Option name="dash_pattern_offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="dash_pattern_offset_unit" type="QString" value="MM"/>
|
||||
<Option name="draw_inside_polygon" type="QString" value="0"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="line_color" type="QString" value="183,72,75,255,rgb:0.71764705882352942,0.28235294117647058,0.29411764705882354,1"/>
|
||||
<Option name="line_style" type="QString" value="solid"/>
|
||||
<Option name="line_width" type="QString" value="0.6"/>
|
||||
<Option name="line_width_unit" type="QString" value="MM"/>
|
||||
<Option name="offset" type="QString" value="0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="ring_filter" type="QString" value="0"/>
|
||||
<Option name="trim_distance_end" type="QString" value="0"/>
|
||||
<Option name="trim_distance_end_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="trim_distance_end_unit" type="QString" value="MM"/>
|
||||
<Option name="trim_distance_start" type="QString" value="0"/>
|
||||
<Option name="trim_distance_start_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="trim_distance_start_unit" type="QString" value="MM"/>
|
||||
<Option name="tweak_dash_pattern_on_corners" type="QString" value="0"/>
|
||||
<Option name="use_custom_dash" type="QString" value="0"/>
|
||||
<Option name="width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</profileLineSymbol>
|
||||
<profileFillSymbol>
|
||||
<symbol alpha="1" clip_to_extent="1" name="" type="fill" frame_rate="10" force_rhr="0" is_animated="0">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer id="{fa98d394-cd43-4c9f-8a6d-e9521d5c3aae}" enabled="1" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option name="border_width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="color" type="QString" value="183,72,75,255,rgb:0.71764705882352942,0.28235294117647058,0.29411764705882354,1"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="offset" type="QString" value="0,0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="outline_color" type="QString" value="131,51,54,255,rgb:0.51259632257572285,0.20167849240863661,0.21007095445181964,1"/>
|
||||
<Option name="outline_style" type="QString" value="solid"/>
|
||||
<Option name="outline_width" type="QString" value="0.2"/>
|
||||
<Option name="outline_width_unit" type="QString" value="MM"/>
|
||||
<Option name="style" type="QString" value="solid"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</profileFillSymbol>
|
||||
<profileMarkerSymbol>
|
||||
<symbol alpha="1" clip_to_extent="1" name="" type="marker" frame_rate="10" force_rhr="0" is_animated="0">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer id="{ec0d5523-ce59-4daa-9dc1-cf6175e80ac9}" enabled="1" pass="0" locked="0" class="SimpleMarker">
|
||||
<Option type="Map">
|
||||
<Option name="angle" type="QString" value="0"/>
|
||||
<Option name="cap_style" type="QString" value="square"/>
|
||||
<Option name="color" type="QString" value="183,72,75,255,rgb:0.71764705882352942,0.28235294117647058,0.29411764705882354,1"/>
|
||||
<Option name="horizontal_anchor_point" type="QString" value="1"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="name" type="QString" value="diamond"/>
|
||||
<Option name="offset" type="QString" value="0,0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="outline_color" type="QString" value="131,51,54,255,rgb:0.51259632257572285,0.20167849240863661,0.21007095445181964,1"/>
|
||||
<Option name="outline_style" type="QString" value="solid"/>
|
||||
<Option name="outline_width" type="QString" value="0.2"/>
|
||||
<Option name="outline_width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="outline_width_unit" type="QString" value="MM"/>
|
||||
<Option name="scale_method" type="QString" value="diameter"/>
|
||||
<Option name="size" type="QString" value="3"/>
|
||||
<Option name="size_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="size_unit" type="QString" value="MM"/>
|
||||
<Option name="vertical_anchor_point" type="QString" value="1"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</profileMarkerSymbol>
|
||||
</elevation>
|
||||
<renderer-v2 forceraster="0" symbollevels="0" enableorderby="0" type="singleSymbol" referencescale="-1">
|
||||
<symbols>
|
||||
<symbol alpha="1" clip_to_extent="1" name="0" type="fill" frame_rate="10" force_rhr="0" is_animated="0">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer id="{ef62a644-15f0-4a1c-aa78-8ae94dc5749c}" enabled="1" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option name="border_width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="color" type="QString" value="0,0,255,255,rgb:0,0,1,1"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="offset" type="QString" value="0,0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="outline_color" type="QString" value="89,89,89,255,rgb:0.34901960784313724,0.34901960784313724,0.34901960784313724,1"/>
|
||||
<Option name="outline_style" type="QString" value="solid"/>
|
||||
<Option name="outline_width" type="QString" value="0.4"/>
|
||||
<Option name="outline_width_unit" type="QString" value="MM"/>
|
||||
<Option name="style" type="QString" value="no"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
<layer id="{4b0f1a3b-14cf-4149-bf17-8f30fa594ef1}" enabled="1" pass="0" locked="0" class="LinePatternFill">
|
||||
<Option type="Map">
|
||||
<Option name="angle" type="QString" value="0"/>
|
||||
<Option name="clip_mode" type="QString" value="during_render"/>
|
||||
<Option name="color" type="QString" value="255,0,0,255,rgb:1,0,0,1"/>
|
||||
<Option name="coordinate_reference" type="QString" value="feature"/>
|
||||
<Option name="distance" type="QString" value="4"/>
|
||||
<Option name="distance_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="distance_unit" type="QString" value="MM"/>
|
||||
<Option name="line_width" type="QString" value="0.25"/>
|
||||
<Option name="line_width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="line_width_unit" type="QString" value="Point"/>
|
||||
<Option name="offset" type="QString" value="0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="outline_width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="outline_width_unit" type="QString" value="Point"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<symbol alpha="1" clip_to_extent="1" name="@0@1" type="line" frame_rate="10" force_rhr="0" is_animated="0">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer id="{853c5350-e21e-49ba-a151-7de585769136}" enabled="1" pass="0" locked="0" class="SimpleLine">
|
||||
<Option type="Map">
|
||||
<Option name="align_dash_pattern" type="QString" value="0"/>
|
||||
<Option name="capstyle" type="QString" value="square"/>
|
||||
<Option name="customdash" type="QString" value="5;2"/>
|
||||
<Option name="customdash_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="customdash_unit" type="QString" value="MM"/>
|
||||
<Option name="dash_pattern_offset" type="QString" value="0"/>
|
||||
<Option name="dash_pattern_offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="dash_pattern_offset_unit" type="QString" value="MM"/>
|
||||
<Option name="draw_inside_polygon" type="QString" value="0"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="line_color" type="QString" value="0,0,0,255,rgb:0,0,0,1"/>
|
||||
<Option name="line_style" type="QString" value="solid"/>
|
||||
<Option name="line_width" type="QString" value="0.3"/>
|
||||
<Option name="line_width_unit" type="QString" value="MM"/>
|
||||
<Option name="offset" type="QString" value="0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="ring_filter" type="QString" value="0"/>
|
||||
<Option name="trim_distance_end" type="QString" value="0"/>
|
||||
<Option name="trim_distance_end_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="trim_distance_end_unit" type="QString" value="MM"/>
|
||||
<Option name="trim_distance_start" type="QString" value="0"/>
|
||||
<Option name="trim_distance_start_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="trim_distance_start_unit" type="QString" value="MM"/>
|
||||
<Option name="tweak_dash_pattern_on_corners" type="QString" value="0"/>
|
||||
<Option name="use_custom_dash" type="QString" value="0"/>
|
||||
<Option name="width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</layer>
|
||||
<layer id="{8675ccd2-9bf1-447f-9cc7-f95b932972f6}" enabled="1" pass="0" locked="0" class="MarkerLine">
|
||||
<Option type="Map">
|
||||
<Option name="average_angle_length" type="QString" value="4"/>
|
||||
<Option name="average_angle_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="average_angle_unit" type="QString" value="MM"/>
|
||||
<Option name="interval" type="QString" value="5"/>
|
||||
<Option name="interval_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="interval_unit" type="QString" value="MM"/>
|
||||
<Option name="offset" type="QString" value="0"/>
|
||||
<Option name="offset_along_line" type="QString" value="0"/>
|
||||
<Option name="offset_along_line_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_along_line_unit" type="QString" value="MM"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="place_on_every_part" type="bool" value="true"/>
|
||||
<Option name="placements" type="QString" value="Interval"/>
|
||||
<Option name="ring_filter" type="QString" value="0"/>
|
||||
<Option name="rotate" type="QString" value="1"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<symbol alpha="1" clip_to_extent="1" name="@0@2" type="marker" frame_rate="10" force_rhr="0" is_animated="0">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer id="{3260c32a-e9bb-45db-8ef8-3abb54ae868e}" enabled="1" pass="0" locked="0" class="SimpleMarker">
|
||||
<Option type="Map">
|
||||
<Option name="angle" type="QString" value="270"/>
|
||||
<Option name="cap_style" type="QString" value="square"/>
|
||||
<Option name="color" type="QString" value="255,0,0,255,rgb:1,0,0,1"/>
|
||||
<Option name="horizontal_anchor_point" type="QString" value="1"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="name" type="QString" value="arrowhead"/>
|
||||
<Option name="offset" type="QString" value="-0.29999999999999999,0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="outline_color" type="QString" value="89,89,89,255,rgb:0.34901960784313724,0.34901960784313724,0.34901960784313724,1"/>
|
||||
<Option name="outline_style" type="QString" value="solid"/>
|
||||
<Option name="outline_width" type="QString" value="0.3"/>
|
||||
<Option name="outline_width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="outline_width_unit" type="QString" value="MM"/>
|
||||
<Option name="scale_method" type="QString" value="diameter"/>
|
||||
<Option name="size" type="QString" value="1.5"/>
|
||||
<Option name="size_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="size_unit" type="QString" value="MM"/>
|
||||
<Option name="vertical_anchor_point" type="QString" value="1"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<rotation/>
|
||||
<sizescale/>
|
||||
<data-defined-properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data-defined-properties>
|
||||
</renderer-v2>
|
||||
<selection mode="Default">
|
||||
<selectionColor invalid="1"/>
|
||||
<selectionSymbol>
|
||||
<symbol alpha="1" clip_to_extent="1" name="" type="fill" frame_rate="10" force_rhr="0" is_animated="0">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer id="{fc42b18b-5949-4fd5-b614-0205e0f7d69c}" enabled="1" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option name="border_width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="color" type="QString" value="0,0,255,255,rgb:0,0,1,1"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="offset" type="QString" value="0,0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="outline_color" type="QString" value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1"/>
|
||||
<Option name="outline_style" type="QString" value="solid"/>
|
||||
<Option name="outline_width" type="QString" value="0.26"/>
|
||||
<Option name="outline_width_unit" type="QString" value="MM"/>
|
||||
<Option name="style" type="QString" value="solid"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</selectionSymbol>
|
||||
</selection>
|
||||
<customproperties>
|
||||
<Option type="Map">
|
||||
<Option name="embeddedWidgets/count" type="int" value="0"/>
|
||||
<Option name="geopdf/groupName" type="QString" value="Umwelt"/>
|
||||
<Option name="geopdf/includeFeatures" type="bool" value="true"/>
|
||||
<Option name="geopdf/initiallyVisible" type="bool" value="true"/>
|
||||
<Option name="variableNames"/>
|
||||
<Option name="variableValues"/>
|
||||
</Option>
|
||||
</customproperties>
|
||||
<blendMode>0</blendMode>
|
||||
<featureBlendMode>0</featureBlendMode>
|
||||
<layerOpacity>1</layerOpacity>
|
||||
<geometryOptions geometryPrecision="0" removeDuplicateNodes="0">
|
||||
<activeChecks/>
|
||||
<checkConfiguration type="Map">
|
||||
<Option name="QgsGeometryGapCheck" type="Map">
|
||||
<Option name="allowedGapsBuffer" type="double" value="0"/>
|
||||
<Option name="allowedGapsEnabled" type="bool" value="false"/>
|
||||
<Option name="allowedGapsLayer" type="QString" value=""/>
|
||||
</Option>
|
||||
</checkConfiguration>
|
||||
</geometryOptions>
|
||||
<legend type="default-vector" showLabelLegend="0"/>
|
||||
<referencedLayers/>
|
||||
<fieldConfiguration>
|
||||
<field name="OBJECTID" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="BID" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="BIOTOPNAME" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="LEGEND_TXT" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="BTYP1" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="BTYP2" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="BTYP3" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="BTYPGES" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="BTYP1_TXT" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="BTYP2_TXT" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="BTYP3_TXT" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="ANTEILBTY1" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="ANTEILBTY2" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="ANTEILBTY3" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="SCHUTZ" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="TK25" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="QUELLE" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="DATUMERF" configurationFlags="NoFlag">
|
||||
<editWidget type="DateTime">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="Shape__Area" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="Shape__Length" configurationFlags="NoFlag">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field name="SE_ANNO_CAD_DATA" configurationFlags="NoFlag">
|
||||
<editWidget type="Binary">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
</fieldConfiguration>
|
||||
<aliases>
|
||||
<alias name="FID" index="0" field="OBJECTID"/>
|
||||
<alias name="" index="1" field="BID"/>
|
||||
<alias name="" index="2" field="BIOTOPNAME"/>
|
||||
<alias name="" index="3" field="LEGEND_TXT"/>
|
||||
<alias name="" index="4" field="BTYP1"/>
|
||||
<alias name="" index="5" field="BTYP2"/>
|
||||
<alias name="" index="6" field="BTYP3"/>
|
||||
<alias name="" index="7" field="BTYPGES"/>
|
||||
<alias name="" index="8" field="BTYP1_TXT"/>
|
||||
<alias name="" index="9" field="BTYP2_TXT"/>
|
||||
<alias name="" index="10" field="BTYP3_TXT"/>
|
||||
<alias name="" index="11" field="ANTEILBTY1"/>
|
||||
<alias name="" index="12" field="ANTEILBTY2"/>
|
||||
<alias name="" index="13" field="ANTEILBTY3"/>
|
||||
<alias name="" index="14" field="SCHUTZ"/>
|
||||
<alias name="" index="15" field="TK25"/>
|
||||
<alias name="" index="16" field="QUELLE"/>
|
||||
<alias name="" index="17" field="DATUMERF"/>
|
||||
<alias name="SHAPE.AREA" index="18" field="Shape__Area"/>
|
||||
<alias name="SHAPE.LEN" index="19" field="Shape__Length"/>
|
||||
<alias name="" index="20" field="SE_ANNO_CAD_DATA"/>
|
||||
</aliases>
|
||||
<splitPolicies>
|
||||
<policy field="OBJECTID" policy="Duplicate"/>
|
||||
<policy field="BID" policy="Duplicate"/>
|
||||
<policy field="BIOTOPNAME" policy="Duplicate"/>
|
||||
<policy field="LEGEND_TXT" policy="Duplicate"/>
|
||||
<policy field="BTYP1" policy="Duplicate"/>
|
||||
<policy field="BTYP2" policy="Duplicate"/>
|
||||
<policy field="BTYP3" policy="Duplicate"/>
|
||||
<policy field="BTYPGES" policy="Duplicate"/>
|
||||
<policy field="BTYP1_TXT" policy="Duplicate"/>
|
||||
<policy field="BTYP2_TXT" policy="Duplicate"/>
|
||||
<policy field="BTYP3_TXT" policy="Duplicate"/>
|
||||
<policy field="ANTEILBTY1" policy="Duplicate"/>
|
||||
<policy field="ANTEILBTY2" policy="Duplicate"/>
|
||||
<policy field="ANTEILBTY3" policy="Duplicate"/>
|
||||
<policy field="SCHUTZ" policy="Duplicate"/>
|
||||
<policy field="TK25" policy="Duplicate"/>
|
||||
<policy field="QUELLE" policy="Duplicate"/>
|
||||
<policy field="DATUMERF" policy="Duplicate"/>
|
||||
<policy field="Shape__Area" policy="Duplicate"/>
|
||||
<policy field="Shape__Length" policy="Duplicate"/>
|
||||
<policy field="SE_ANNO_CAD_DATA" policy="Duplicate"/>
|
||||
</splitPolicies>
|
||||
<duplicatePolicies>
|
||||
<policy field="OBJECTID" policy="Duplicate"/>
|
||||
<policy field="BID" policy="Duplicate"/>
|
||||
<policy field="BIOTOPNAME" policy="Duplicate"/>
|
||||
<policy field="LEGEND_TXT" policy="Duplicate"/>
|
||||
<policy field="BTYP1" policy="Duplicate"/>
|
||||
<policy field="BTYP2" policy="Duplicate"/>
|
||||
<policy field="BTYP3" policy="Duplicate"/>
|
||||
<policy field="BTYPGES" policy="Duplicate"/>
|
||||
<policy field="BTYP1_TXT" policy="Duplicate"/>
|
||||
<policy field="BTYP2_TXT" policy="Duplicate"/>
|
||||
<policy field="BTYP3_TXT" policy="Duplicate"/>
|
||||
<policy field="ANTEILBTY1" policy="Duplicate"/>
|
||||
<policy field="ANTEILBTY2" policy="Duplicate"/>
|
||||
<policy field="ANTEILBTY3" policy="Duplicate"/>
|
||||
<policy field="SCHUTZ" policy="Duplicate"/>
|
||||
<policy field="TK25" policy="Duplicate"/>
|
||||
<policy field="QUELLE" policy="Duplicate"/>
|
||||
<policy field="DATUMERF" policy="Duplicate"/>
|
||||
<policy field="Shape__Area" policy="Duplicate"/>
|
||||
<policy field="Shape__Length" policy="Duplicate"/>
|
||||
<policy field="SE_ANNO_CAD_DATA" policy="Duplicate"/>
|
||||
</duplicatePolicies>
|
||||
<defaults>
|
||||
<default expression="" applyOnUpdate="0" field="OBJECTID"/>
|
||||
<default expression="" applyOnUpdate="0" field="BID"/>
|
||||
<default expression="" applyOnUpdate="0" field="BIOTOPNAME"/>
|
||||
<default expression="" applyOnUpdate="0" field="LEGEND_TXT"/>
|
||||
<default expression="" applyOnUpdate="0" field="BTYP1"/>
|
||||
<default expression="" applyOnUpdate="0" field="BTYP2"/>
|
||||
<default expression="" applyOnUpdate="0" field="BTYP3"/>
|
||||
<default expression="" applyOnUpdate="0" field="BTYPGES"/>
|
||||
<default expression="" applyOnUpdate="0" field="BTYP1_TXT"/>
|
||||
<default expression="" applyOnUpdate="0" field="BTYP2_TXT"/>
|
||||
<default expression="" applyOnUpdate="0" field="BTYP3_TXT"/>
|
||||
<default expression="" applyOnUpdate="0" field="ANTEILBTY1"/>
|
||||
<default expression="" applyOnUpdate="0" field="ANTEILBTY2"/>
|
||||
<default expression="" applyOnUpdate="0" field="ANTEILBTY3"/>
|
||||
<default expression="" applyOnUpdate="0" field="SCHUTZ"/>
|
||||
<default expression="" applyOnUpdate="0" field="TK25"/>
|
||||
<default expression="" applyOnUpdate="0" field="QUELLE"/>
|
||||
<default expression="" applyOnUpdate="0" field="DATUMERF"/>
|
||||
<default expression="" applyOnUpdate="0" field="Shape__Area"/>
|
||||
<default expression="" applyOnUpdate="0" field="Shape__Length"/>
|
||||
<default expression="" applyOnUpdate="0" field="SE_ANNO_CAD_DATA"/>
|
||||
</defaults>
|
||||
<constraints>
|
||||
<constraint notnull_strength="1" constraints="3" exp_strength="0" field="OBJECTID" unique_strength="1"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="BID" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="BIOTOPNAME" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="LEGEND_TXT" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="BTYP1" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="BTYP2" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="BTYP3" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="BTYPGES" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="BTYP1_TXT" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="BTYP2_TXT" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="BTYP3_TXT" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="ANTEILBTY1" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="ANTEILBTY2" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="ANTEILBTY3" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="SCHUTZ" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="TK25" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="QUELLE" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="DATUMERF" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="Shape__Area" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="Shape__Length" unique_strength="0"/>
|
||||
<constraint notnull_strength="0" constraints="0" exp_strength="0" field="SE_ANNO_CAD_DATA" unique_strength="0"/>
|
||||
</constraints>
|
||||
<constraintExpressions>
|
||||
<constraint exp="" field="OBJECTID" desc=""/>
|
||||
<constraint exp="" field="BID" desc=""/>
|
||||
<constraint exp="" field="BIOTOPNAME" desc=""/>
|
||||
<constraint exp="" field="LEGEND_TXT" desc=""/>
|
||||
<constraint exp="" field="BTYP1" desc=""/>
|
||||
<constraint exp="" field="BTYP2" desc=""/>
|
||||
<constraint exp="" field="BTYP3" desc=""/>
|
||||
<constraint exp="" field="BTYPGES" desc=""/>
|
||||
<constraint exp="" field="BTYP1_TXT" desc=""/>
|
||||
<constraint exp="" field="BTYP2_TXT" desc=""/>
|
||||
<constraint exp="" field="BTYP3_TXT" desc=""/>
|
||||
<constraint exp="" field="ANTEILBTY1" desc=""/>
|
||||
<constraint exp="" field="ANTEILBTY2" desc=""/>
|
||||
<constraint exp="" field="ANTEILBTY3" desc=""/>
|
||||
<constraint exp="" field="SCHUTZ" desc=""/>
|
||||
<constraint exp="" field="TK25" desc=""/>
|
||||
<constraint exp="" field="QUELLE" desc=""/>
|
||||
<constraint exp="" field="DATUMERF" desc=""/>
|
||||
<constraint exp="" field="Shape__Area" desc=""/>
|
||||
<constraint exp="" field="Shape__Length" desc=""/>
|
||||
<constraint exp="" field="SE_ANNO_CAD_DATA" desc=""/>
|
||||
</constraintExpressions>
|
||||
<expressionfields/>
|
||||
<attributeactions>
|
||||
<defaultAction value="{00000000-0000-0000-0000-000000000000}" key="Canvas"/>
|
||||
</attributeactions>
|
||||
<attributetableconfig sortExpression="" sortOrder="0" actionWidgetStyle="dropDown">
|
||||
<columns>
|
||||
<column name="OBJECTID" type="field" width="-1" hidden="0"/>
|
||||
<column name="BID" type="field" width="-1" hidden="0"/>
|
||||
<column name="BIOTOPNAME" type="field" width="-1" hidden="0"/>
|
||||
<column name="LEGEND_TXT" type="field" width="-1" hidden="0"/>
|
||||
<column name="BTYP1" type="field" width="-1" hidden="0"/>
|
||||
<column name="BTYP2" type="field" width="-1" hidden="0"/>
|
||||
<column name="BTYP3" type="field" width="-1" hidden="0"/>
|
||||
<column name="BTYPGES" type="field" width="-1" hidden="0"/>
|
||||
<column name="BTYP1_TXT" type="field" width="-1" hidden="0"/>
|
||||
<column name="BTYP2_TXT" type="field" width="-1" hidden="0"/>
|
||||
<column name="BTYP3_TXT" type="field" width="-1" hidden="0"/>
|
||||
<column name="ANTEILBTY1" type="field" width="-1" hidden="0"/>
|
||||
<column name="ANTEILBTY2" type="field" width="-1" hidden="0"/>
|
||||
<column name="ANTEILBTY3" type="field" width="-1" hidden="0"/>
|
||||
<column name="SCHUTZ" type="field" width="-1" hidden="0"/>
|
||||
<column name="TK25" type="field" width="-1" hidden="0"/>
|
||||
<column name="QUELLE" type="field" width="-1" hidden="0"/>
|
||||
<column name="DATUMERF" type="field" width="-1" hidden="0"/>
|
||||
<column name="Shape__Area" type="field" width="-1" hidden="0"/>
|
||||
<column name="Shape__Length" type="field" width="-1" hidden="0"/>
|
||||
<column name="SE_ANNO_CAD_DATA" type="field" width="-1" hidden="0"/>
|
||||
<column type="actions" width="-1" hidden="1"/>
|
||||
</columns>
|
||||
</attributetableconfig>
|
||||
<conditionalstyles>
|
||||
<rowstyles/>
|
||||
<fieldstyles/>
|
||||
</conditionalstyles>
|
||||
<storedexpressions/>
|
||||
<editform tolerant="1"></editform>
|
||||
<editforminit/>
|
||||
<editforminitcodesource>0</editforminitcodesource>
|
||||
<editforminitfilepath></editforminitfilepath>
|
||||
<editforminitcode><![CDATA[# -*- coding: utf-8 -*-
|
||||
"""
|
||||
QGIS-Formulare können eine Python-Funktion haben,, die aufgerufen wird, wenn sich das Formular öffnet
|
||||
|
||||
Diese Funktion kann verwendet werden um dem Formular Extralogik hinzuzufügen.
|
||||
|
||||
Der Name der Funktion wird im Feld "Python Init-Function" angegeben
|
||||
Ein Beispiel folgt:
|
||||
"""
|
||||
from qgis.PyQt.QtWidgets import QWidget
|
||||
|
||||
def my_form_open(dialog, layer, feature):
|
||||
geom = feature.geometry()
|
||||
control = dialog.findChild(QWidget, "MyLineEdit")
|
||||
]]></editforminitcode>
|
||||
<featformsuppress>0</featformsuppress>
|
||||
<editorlayout>generatedlayout</editorlayout>
|
||||
<editable>
|
||||
<field name="ANTEILBTY1" editable="1"/>
|
||||
<field name="ANTEILBTY2" editable="1"/>
|
||||
<field name="ANTEILBTY3" editable="1"/>
|
||||
<field name="BID" editable="1"/>
|
||||
<field name="BIOTOPNAME" editable="1"/>
|
||||
<field name="BTYP1" editable="1"/>
|
||||
<field name="BTYP1_TXT" editable="1"/>
|
||||
<field name="BTYP2" editable="1"/>
|
||||
<field name="BTYP2_TXT" editable="1"/>
|
||||
<field name="BTYP3" editable="1"/>
|
||||
<field name="BTYP3_TXT" editable="1"/>
|
||||
<field name="BTYPGES" editable="1"/>
|
||||
<field name="DATUMERF" editable="1"/>
|
||||
<field name="LEGEND_TXT" editable="1"/>
|
||||
<field name="OBJECTID" editable="0"/>
|
||||
<field name="QUELLE" editable="1"/>
|
||||
<field name="SCHUTZ" editable="1"/>
|
||||
<field name="SE_ANNO_CAD_DATA" editable="1"/>
|
||||
<field name="Shape__Area" editable="0"/>
|
||||
<field name="Shape__Length" editable="0"/>
|
||||
<field name="TK25" editable="1"/>
|
||||
</editable>
|
||||
<labelOnTop>
|
||||
<field name="ANTEILBTY1" labelOnTop="0"/>
|
||||
<field name="ANTEILBTY2" labelOnTop="0"/>
|
||||
<field name="ANTEILBTY3" labelOnTop="0"/>
|
||||
<field name="BID" labelOnTop="0"/>
|
||||
<field name="BIOTOPNAME" labelOnTop="0"/>
|
||||
<field name="BTYP1" labelOnTop="0"/>
|
||||
<field name="BTYP1_TXT" labelOnTop="0"/>
|
||||
<field name="BTYP2" labelOnTop="0"/>
|
||||
<field name="BTYP2_TXT" labelOnTop="0"/>
|
||||
<field name="BTYP3" labelOnTop="0"/>
|
||||
<field name="BTYP3_TXT" labelOnTop="0"/>
|
||||
<field name="BTYPGES" labelOnTop="0"/>
|
||||
<field name="DATUMERF" labelOnTop="0"/>
|
||||
<field name="LEGEND_TXT" labelOnTop="0"/>
|
||||
<field name="OBJECTID" labelOnTop="0"/>
|
||||
<field name="QUELLE" labelOnTop="0"/>
|
||||
<field name="SCHUTZ" labelOnTop="0"/>
|
||||
<field name="SE_ANNO_CAD_DATA" labelOnTop="0"/>
|
||||
<field name="Shape__Area" labelOnTop="0"/>
|
||||
<field name="Shape__Length" labelOnTop="0"/>
|
||||
<field name="TK25" labelOnTop="0"/>
|
||||
</labelOnTop>
|
||||
<reuseLastValue>
|
||||
<field name="ANTEILBTY1" reuseLastValue="0"/>
|
||||
<field name="ANTEILBTY2" reuseLastValue="0"/>
|
||||
<field name="ANTEILBTY3" reuseLastValue="0"/>
|
||||
<field name="BID" reuseLastValue="0"/>
|
||||
<field name="BIOTOPNAME" reuseLastValue="0"/>
|
||||
<field name="BTYP1" reuseLastValue="0"/>
|
||||
<field name="BTYP1_TXT" reuseLastValue="0"/>
|
||||
<field name="BTYP2" reuseLastValue="0"/>
|
||||
<field name="BTYP2_TXT" reuseLastValue="0"/>
|
||||
<field name="BTYP3" reuseLastValue="0"/>
|
||||
<field name="BTYP3_TXT" reuseLastValue="0"/>
|
||||
<field name="BTYPGES" reuseLastValue="0"/>
|
||||
<field name="DATUMERF" reuseLastValue="0"/>
|
||||
<field name="LEGEND_TXT" reuseLastValue="0"/>
|
||||
<field name="OBJECTID" reuseLastValue="0"/>
|
||||
<field name="QUELLE" reuseLastValue="0"/>
|
||||
<field name="SCHUTZ" reuseLastValue="0"/>
|
||||
<field name="SE_ANNO_CAD_DATA" reuseLastValue="0"/>
|
||||
<field name="Shape__Area" reuseLastValue="0"/>
|
||||
<field name="Shape__Length" reuseLastValue="0"/>
|
||||
<field name="TK25" reuseLastValue="0"/>
|
||||
</reuseLastValue>
|
||||
<dataDefinedFieldProperties/>
|
||||
<widgets/>
|
||||
<previewExpression>"BIOTOPNAME"</previewExpression>
|
||||
<mapTip enabled="1"></mapTip>
|
||||
<layerGeometryType>2</layerGeometryType>
|
||||
</qgis>
|
||||
118
assets/Fliessgewaesser.qml
Normal file
118
assets/Fliessgewaesser.qml
Normal file
@@ -0,0 +1,118 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis version="3.40.7-Bratislava" styleCategories="Symbology|Labeling" labelsEnabled="0">
|
||||
<renderer-v2 enableorderby="0" type="singleSymbol" referencescale="-1" forceraster="0" symbollevels="0">
|
||||
<symbols>
|
||||
<symbol name="0" type="line" is_animated="0" alpha="1" force_rhr="0" frame_rate="10" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer class="SimpleLine" enabled="1" id="{d756ba86-63d7-451f-ad45-0010d88b1ae8}" pass="0" locked="0">
|
||||
<Option type="Map">
|
||||
<Option name="align_dash_pattern" type="QString" value="0"/>
|
||||
<Option name="capstyle" type="QString" value="square"/>
|
||||
<Option name="customdash" type="QString" value="5;2"/>
|
||||
<Option name="customdash_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="customdash_unit" type="QString" value="MM"/>
|
||||
<Option name="dash_pattern_offset" type="QString" value="0"/>
|
||||
<Option name="dash_pattern_offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="dash_pattern_offset_unit" type="QString" value="MM"/>
|
||||
<Option name="draw_inside_polygon" type="QString" value="0"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="line_color" type="QString" value="55,132,255,255,rgb:0.21568627450980393,0.51764705882352946,1,1"/>
|
||||
<Option name="line_style" type="QString" value="solid"/>
|
||||
<Option name="line_width" type="QString" value="0.86"/>
|
||||
<Option name="line_width_unit" type="QString" value="MM"/>
|
||||
<Option name="offset" type="QString" value="0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="ring_filter" type="QString" value="0"/>
|
||||
<Option name="trim_distance_end" type="QString" value="0"/>
|
||||
<Option name="trim_distance_end_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="trim_distance_end_unit" type="QString" value="MM"/>
|
||||
<Option name="trim_distance_start" type="QString" value="0"/>
|
||||
<Option name="trim_distance_start_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="trim_distance_start_unit" type="QString" value="MM"/>
|
||||
<Option name="tweak_dash_pattern_on_corners" type="QString" value="0"/>
|
||||
<Option name="use_custom_dash" type="QString" value="0"/>
|
||||
<Option name="width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<rotation/>
|
||||
<sizescale/>
|
||||
<data-defined-properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data-defined-properties>
|
||||
</renderer-v2>
|
||||
<selection mode="Default">
|
||||
<selectionColor invalid="1"/>
|
||||
<selectionSymbol>
|
||||
<symbol name="" type="line" is_animated="0" alpha="1" force_rhr="0" frame_rate="10" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer class="SimpleLine" enabled="1" id="{b92daa53-e460-4981-8ddd-cf41d069a6e7}" pass="0" locked="0">
|
||||
<Option type="Map">
|
||||
<Option name="align_dash_pattern" type="QString" value="0"/>
|
||||
<Option name="capstyle" type="QString" value="square"/>
|
||||
<Option name="customdash" type="QString" value="5;2"/>
|
||||
<Option name="customdash_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="customdash_unit" type="QString" value="MM"/>
|
||||
<Option name="dash_pattern_offset" type="QString" value="0"/>
|
||||
<Option name="dash_pattern_offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="dash_pattern_offset_unit" type="QString" value="MM"/>
|
||||
<Option name="draw_inside_polygon" type="QString" value="0"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="line_color" type="QString" value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1"/>
|
||||
<Option name="line_style" type="QString" value="solid"/>
|
||||
<Option name="line_width" type="QString" value="0.26"/>
|
||||
<Option name="line_width_unit" type="QString" value="MM"/>
|
||||
<Option name="offset" type="QString" value="0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="ring_filter" type="QString" value="0"/>
|
||||
<Option name="trim_distance_end" type="QString" value="0"/>
|
||||
<Option name="trim_distance_end_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="trim_distance_end_unit" type="QString" value="MM"/>
|
||||
<Option name="trim_distance_start" type="QString" value="0"/>
|
||||
<Option name="trim_distance_start_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="trim_distance_start_unit" type="QString" value="MM"/>
|
||||
<Option name="tweak_dash_pattern_on_corners" type="QString" value="0"/>
|
||||
<Option name="use_custom_dash" type="QString" value="0"/>
|
||||
<Option name="width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</selectionSymbol>
|
||||
</selection>
|
||||
<blendMode>0</blendMode>
|
||||
<featureBlendMode>0</featureBlendMode>
|
||||
<layerGeometryType>1</layerGeometryType>
|
||||
</qgis>
|
||||
609
assets/GIS_63000F_Objekt_Denkmalschutz.qml
Normal file
609
assets/GIS_63000F_Objekt_Denkmalschutz.qml
Normal file
@@ -0,0 +1,609 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis hasScaleBasedVisibilityFlag="0" version="3.16.0-Hannover" minScale="100000000" labelsEnabled="0" readOnly="0" styleCategories="AllStyleCategories" simplifyLocal="1" maxScale="0" simplifyMaxScale="1" simplifyDrawingTol="1" simplifyDrawingHints="1" simplifyAlgorithm="0">
|
||||
<flags>
|
||||
<Identifiable>1</Identifiable>
|
||||
<Removable>1</Removable>
|
||||
<Searchable>1</Searchable>
|
||||
</flags>
|
||||
<temporal startExpression="" enabled="0" endExpression="" accumulate="0" durationField="" durationUnit="min" fixedDuration="0" startField="" mode="0" endField="">
|
||||
<fixedRange>
|
||||
<start></start>
|
||||
<end></end>
|
||||
</fixedRange>
|
||||
</temporal>
|
||||
<renderer-v2 symbollevels="0" forceraster="0" type="singleSymbol" enableorderby="0">
|
||||
<symbols>
|
||||
<symbol name="0" force_rhr="0" type="fill" alpha="1" clip_to_extent="1">
|
||||
<layer pass="0" enabled="1" class="LinePatternFill" locked="0">
|
||||
<prop k="angle" v="45"/>
|
||||
<prop k="color" v="196,60,57,255"/>
|
||||
<prop k="distance" v="10"/>
|
||||
<prop k="distance_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="distance_unit" v="Pixel"/>
|
||||
<prop k="line_width" v="0.26"/>
|
||||
<prop k="line_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="line_width_unit" v="MM"/>
|
||||
<prop k="offset" v="0"/>
|
||||
<prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="offset_unit" v="MM"/>
|
||||
<prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="outline_width_unit" v="MM"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<symbol name="@0@0" force_rhr="0" type="line" alpha="1" clip_to_extent="1">
|
||||
<layer pass="0" enabled="1" class="SimpleLine" locked="0">
|
||||
<prop k="align_dash_pattern" v="0"/>
|
||||
<prop k="capstyle" v="square"/>
|
||||
<prop k="customdash" v="5;2"/>
|
||||
<prop k="customdash_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="customdash_unit" v="MM"/>
|
||||
<prop k="dash_pattern_offset" v="0"/>
|
||||
<prop k="dash_pattern_offset_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="dash_pattern_offset_unit" v="MM"/>
|
||||
<prop k="draw_inside_polygon" v="0"/>
|
||||
<prop k="joinstyle" v="bevel"/>
|
||||
<prop k="line_color" v="0,0,0,255"/>
|
||||
<prop k="line_style" v="solid"/>
|
||||
<prop k="line_width" v="1"/>
|
||||
<prop k="line_width_unit" v="Pixel"/>
|
||||
<prop k="offset" v="0"/>
|
||||
<prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="offset_unit" v="MM"/>
|
||||
<prop k="ring_filter" v="0"/>
|
||||
<prop k="tweak_dash_pattern_on_corners" v="0"/>
|
||||
<prop k="use_custom_dash" v="0"/>
|
||||
<prop k="width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</layer>
|
||||
<layer pass="0" enabled="1" class="LinePatternFill" locked="0">
|
||||
<prop k="angle" v="135"/>
|
||||
<prop k="color" v="0,0,255,255"/>
|
||||
<prop k="distance" v="10"/>
|
||||
<prop k="distance_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="distance_unit" v="Pixel"/>
|
||||
<prop k="line_width" v="0.26"/>
|
||||
<prop k="line_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="line_width_unit" v="MM"/>
|
||||
<prop k="offset" v="0"/>
|
||||
<prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="offset_unit" v="MM"/>
|
||||
<prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="outline_width_unit" v="MM"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<symbol name="@0@1" force_rhr="0" type="line" alpha="1" clip_to_extent="1">
|
||||
<layer pass="0" enabled="1" class="SimpleLine" locked="0">
|
||||
<prop k="align_dash_pattern" v="0"/>
|
||||
<prop k="capstyle" v="square"/>
|
||||
<prop k="customdash" v="5;2"/>
|
||||
<prop k="customdash_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="customdash_unit" v="MM"/>
|
||||
<prop k="dash_pattern_offset" v="0"/>
|
||||
<prop k="dash_pattern_offset_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="dash_pattern_offset_unit" v="MM"/>
|
||||
<prop k="draw_inside_polygon" v="0"/>
|
||||
<prop k="joinstyle" v="bevel"/>
|
||||
<prop k="line_color" v="0,0,0,255"/>
|
||||
<prop k="line_style" v="solid"/>
|
||||
<prop k="line_width" v="1"/>
|
||||
<prop k="line_width_unit" v="Pixel"/>
|
||||
<prop k="offset" v="0"/>
|
||||
<prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="offset_unit" v="MM"/>
|
||||
<prop k="ring_filter" v="0"/>
|
||||
<prop k="tweak_dash_pattern_on_corners" v="0"/>
|
||||
<prop k="use_custom_dash" v="0"/>
|
||||
<prop k="width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</layer>
|
||||
<layer pass="0" enabled="1" class="SimpleLine" locked="0">
|
||||
<prop k="align_dash_pattern" v="0"/>
|
||||
<prop k="capstyle" v="square"/>
|
||||
<prop k="customdash" v="5;2"/>
|
||||
<prop k="customdash_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="customdash_unit" v="MM"/>
|
||||
<prop k="dash_pattern_offset" v="0"/>
|
||||
<prop k="dash_pattern_offset_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="dash_pattern_offset_unit" v="MM"/>
|
||||
<prop k="draw_inside_polygon" v="0"/>
|
||||
<prop k="joinstyle" v="bevel"/>
|
||||
<prop k="line_color" v="35,35,35,255"/>
|
||||
<prop k="line_style" v="solid"/>
|
||||
<prop k="line_width" v="1"/>
|
||||
<prop k="line_width_unit" v="Pixel"/>
|
||||
<prop k="offset" v="0"/>
|
||||
<prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="offset_unit" v="MM"/>
|
||||
<prop k="ring_filter" v="0"/>
|
||||
<prop k="tweak_dash_pattern_on_corners" v="0"/>
|
||||
<prop k="use_custom_dash" v="0"/>
|
||||
<prop k="width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<rotation/>
|
||||
<sizescale/>
|
||||
</renderer-v2>
|
||||
<customproperties>
|
||||
<property key="dualview/previewExpressions">
|
||||
<value>"gml_id"</value>
|
||||
</property>
|
||||
<property key="embeddedWidgets/count" value="0"/>
|
||||
<property key="variableNames"/>
|
||||
<property key="variableValues"/>
|
||||
</customproperties>
|
||||
<blendMode>0</blendMode>
|
||||
<featureBlendMode>0</featureBlendMode>
|
||||
<layerOpacity>1</layerOpacity>
|
||||
<SingleCategoryDiagramRenderer diagramType="Histogram" attributeLegend="1">
|
||||
<DiagramCategory enabled="0" spacing="5" showAxis="1" direction="0" sizeType="MM" barWidth="5" height="15" minScaleDenominator="0" scaleBasedVisibility="0" spacingUnit="MM" maxScaleDenominator="1e+08" sizeScale="3x:0,0,0,0,0,0" diagramOrientation="Up" rotationOffset="270" penColor="#000000" penWidth="0" backgroundColor="#ffffff" penAlpha="255" width="15" spacingUnitScale="3x:0,0,0,0,0,0" backgroundAlpha="255" opacity="1" lineSizeType="MM" scaleDependency="Area" minimumSize="0" labelPlacementMethod="XHeight" lineSizeScale="3x:0,0,0,0,0,0">
|
||||
<fontProperties description="MS Shell Dlg 2,8.25,-1,5,50,0,0,0,0,0" style=""/>
|
||||
<axisSymbol>
|
||||
<symbol name="" force_rhr="0" type="line" alpha="1" clip_to_extent="1">
|
||||
<layer pass="0" enabled="1" class="SimpleLine" locked="0">
|
||||
<prop k="align_dash_pattern" v="0"/>
|
||||
<prop k="capstyle" v="square"/>
|
||||
<prop k="customdash" v="5;2"/>
|
||||
<prop k="customdash_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="customdash_unit" v="MM"/>
|
||||
<prop k="dash_pattern_offset" v="0"/>
|
||||
<prop k="dash_pattern_offset_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="dash_pattern_offset_unit" v="MM"/>
|
||||
<prop k="draw_inside_polygon" v="0"/>
|
||||
<prop k="joinstyle" v="bevel"/>
|
||||
<prop k="line_color" v="35,35,35,255"/>
|
||||
<prop k="line_style" v="solid"/>
|
||||
<prop k="line_width" v="0.26"/>
|
||||
<prop k="line_width_unit" v="MM"/>
|
||||
<prop k="offset" v="0"/>
|
||||
<prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<prop k="offset_unit" v="MM"/>
|
||||
<prop k="ring_filter" v="0"/>
|
||||
<prop k="tweak_dash_pattern_on_corners" v="0"/>
|
||||
<prop k="use_custom_dash" v="0"/>
|
||||
<prop k="width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</axisSymbol>
|
||||
</DiagramCategory>
|
||||
</SingleCategoryDiagramRenderer>
|
||||
<DiagramLayerSettings priority="0" obstacle="0" showAll="1" placement="1" dist="0" linePlacementFlags="18" zIndex="0">
|
||||
<properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</properties>
|
||||
</DiagramLayerSettings>
|
||||
<geometryOptions removeDuplicateNodes="0" geometryPrecision="0">
|
||||
<activeChecks/>
|
||||
<checkConfiguration type="Map">
|
||||
<Option name="QgsGeometryGapCheck" type="Map">
|
||||
<Option name="allowedGapsBuffer" type="double" value="0"/>
|
||||
<Option name="allowedGapsEnabled" type="bool" value="false"/>
|
||||
<Option name="allowedGapsLayer" type="QString" value=""/>
|
||||
</Option>
|
||||
</checkConfiguration>
|
||||
</geometryOptions>
|
||||
<legend type="default-vector"/>
|
||||
<referencedLayers/>
|
||||
<fieldConfiguration>
|
||||
<field configurationFlags="None" name="gml_id">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="objectid">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="obj_nr">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="typ">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="text_1">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ext_objnr">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ext_hida_n">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ext_eigenn">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ext_kreis">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ext_gemein">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ext_ortste">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ext_strass">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ext_hausnu">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ext_gemark">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ext_flurst">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ext_kchar1">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ext_kchar2">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ext_kchar3">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ext_datier">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ext_typ">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="gd_ueberar">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="sort">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="Stand">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
</fieldConfiguration>
|
||||
<aliases>
|
||||
<alias name="" field="gml_id" index="0"/>
|
||||
<alias name="" field="objectid" index="1"/>
|
||||
<alias name="" field="obj_nr" index="2"/>
|
||||
<alias name="" field="typ" index="3"/>
|
||||
<alias name="" field="text_1" index="4"/>
|
||||
<alias name="" field="ext_objnr" index="5"/>
|
||||
<alias name="" field="ext_hida_n" index="6"/>
|
||||
<alias name="" field="ext_eigenn" index="7"/>
|
||||
<alias name="" field="ext_kreis" index="8"/>
|
||||
<alias name="" field="ext_gemein" index="9"/>
|
||||
<alias name="" field="ext_ortste" index="10"/>
|
||||
<alias name="" field="ext_strass" index="11"/>
|
||||
<alias name="" field="ext_hausnu" index="12"/>
|
||||
<alias name="" field="ext_gemark" index="13"/>
|
||||
<alias name="" field="ext_flurst" index="14"/>
|
||||
<alias name="" field="ext_kchar1" index="15"/>
|
||||
<alias name="" field="ext_kchar2" index="16"/>
|
||||
<alias name="" field="ext_kchar3" index="17"/>
|
||||
<alias name="" field="ext_datier" index="18"/>
|
||||
<alias name="" field="ext_typ" index="19"/>
|
||||
<alias name="" field="gd_ueberar" index="20"/>
|
||||
<alias name="" field="sort" index="21"/>
|
||||
<alias name="" field="Stand" index="22"/>
|
||||
</aliases>
|
||||
<defaults>
|
||||
<default field="gml_id" expression="" applyOnUpdate="0"/>
|
||||
<default field="objectid" expression="" applyOnUpdate="0"/>
|
||||
<default field="obj_nr" expression="" applyOnUpdate="0"/>
|
||||
<default field="typ" expression="" applyOnUpdate="0"/>
|
||||
<default field="text_1" expression="" applyOnUpdate="0"/>
|
||||
<default field="ext_objnr" expression="" applyOnUpdate="0"/>
|
||||
<default field="ext_hida_n" expression="" applyOnUpdate="0"/>
|
||||
<default field="ext_eigenn" expression="" applyOnUpdate="0"/>
|
||||
<default field="ext_kreis" expression="" applyOnUpdate="0"/>
|
||||
<default field="ext_gemein" expression="" applyOnUpdate="0"/>
|
||||
<default field="ext_ortste" expression="" applyOnUpdate="0"/>
|
||||
<default field="ext_strass" expression="" applyOnUpdate="0"/>
|
||||
<default field="ext_hausnu" expression="" applyOnUpdate="0"/>
|
||||
<default field="ext_gemark" expression="" applyOnUpdate="0"/>
|
||||
<default field="ext_flurst" expression="" applyOnUpdate="0"/>
|
||||
<default field="ext_kchar1" expression="" applyOnUpdate="0"/>
|
||||
<default field="ext_kchar2" expression="" applyOnUpdate="0"/>
|
||||
<default field="ext_kchar3" expression="" applyOnUpdate="0"/>
|
||||
<default field="ext_datier" expression="" applyOnUpdate="0"/>
|
||||
<default field="ext_typ" expression="" applyOnUpdate="0"/>
|
||||
<default field="gd_ueberar" expression="" applyOnUpdate="0"/>
|
||||
<default field="sort" expression="" applyOnUpdate="0"/>
|
||||
<default field="Stand" expression="" applyOnUpdate="0"/>
|
||||
</defaults>
|
||||
<constraints>
|
||||
<constraint exp_strength="0" field="gml_id" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="objectid" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="obj_nr" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="typ" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="text_1" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="ext_objnr" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="ext_hida_n" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="ext_eigenn" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="ext_kreis" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="ext_gemein" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="ext_ortste" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="ext_strass" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="ext_hausnu" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="ext_gemark" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="ext_flurst" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="ext_kchar1" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="ext_kchar2" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="ext_kchar3" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="ext_datier" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="ext_typ" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="gd_ueberar" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="sort" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
<constraint exp_strength="0" field="Stand" unique_strength="0" notnull_strength="0" constraints="0"/>
|
||||
</constraints>
|
||||
<constraintExpressions>
|
||||
<constraint field="gml_id" desc="" exp=""/>
|
||||
<constraint field="objectid" desc="" exp=""/>
|
||||
<constraint field="obj_nr" desc="" exp=""/>
|
||||
<constraint field="typ" desc="" exp=""/>
|
||||
<constraint field="text_1" desc="" exp=""/>
|
||||
<constraint field="ext_objnr" desc="" exp=""/>
|
||||
<constraint field="ext_hida_n" desc="" exp=""/>
|
||||
<constraint field="ext_eigenn" desc="" exp=""/>
|
||||
<constraint field="ext_kreis" desc="" exp=""/>
|
||||
<constraint field="ext_gemein" desc="" exp=""/>
|
||||
<constraint field="ext_ortste" desc="" exp=""/>
|
||||
<constraint field="ext_strass" desc="" exp=""/>
|
||||
<constraint field="ext_hausnu" desc="" exp=""/>
|
||||
<constraint field="ext_gemark" desc="" exp=""/>
|
||||
<constraint field="ext_flurst" desc="" exp=""/>
|
||||
<constraint field="ext_kchar1" desc="" exp=""/>
|
||||
<constraint field="ext_kchar2" desc="" exp=""/>
|
||||
<constraint field="ext_kchar3" desc="" exp=""/>
|
||||
<constraint field="ext_datier" desc="" exp=""/>
|
||||
<constraint field="ext_typ" desc="" exp=""/>
|
||||
<constraint field="gd_ueberar" desc="" exp=""/>
|
||||
<constraint field="sort" desc="" exp=""/>
|
||||
<constraint field="Stand" desc="" exp=""/>
|
||||
</constraintExpressions>
|
||||
<expressionfields/>
|
||||
<attributeactions>
|
||||
<defaultAction key="Canvas" value="{00000000-0000-0000-0000-000000000000}"/>
|
||||
</attributeactions>
|
||||
<attributetableconfig sortOrder="0" actionWidgetStyle="dropDown" sortExpression=""gml_id"">
|
||||
<columns>
|
||||
<column width="-1" name="gml_id" type="field" hidden="0"/>
|
||||
<column width="-1" name="objectid" type="field" hidden="0"/>
|
||||
<column width="-1" name="obj_nr" type="field" hidden="0"/>
|
||||
<column width="-1" name="typ" type="field" hidden="0"/>
|
||||
<column width="-1" name="text_1" type="field" hidden="0"/>
|
||||
<column width="-1" name="ext_objnr" type="field" hidden="0"/>
|
||||
<column width="-1" name="ext_hida_n" type="field" hidden="0"/>
|
||||
<column width="-1" name="ext_eigenn" type="field" hidden="0"/>
|
||||
<column width="-1" name="ext_kreis" type="field" hidden="0"/>
|
||||
<column width="-1" name="ext_gemein" type="field" hidden="0"/>
|
||||
<column width="-1" name="ext_ortste" type="field" hidden="0"/>
|
||||
<column width="-1" name="ext_strass" type="field" hidden="0"/>
|
||||
<column width="-1" name="ext_hausnu" type="field" hidden="0"/>
|
||||
<column width="-1" name="ext_gemark" type="field" hidden="0"/>
|
||||
<column width="-1" name="ext_flurst" type="field" hidden="0"/>
|
||||
<column width="-1" name="ext_kchar1" type="field" hidden="0"/>
|
||||
<column width="-1" name="ext_kchar2" type="field" hidden="0"/>
|
||||
<column width="-1" name="ext_kchar3" type="field" hidden="0"/>
|
||||
<column width="-1" name="ext_datier" type="field" hidden="0"/>
|
||||
<column width="-1" name="ext_typ" type="field" hidden="0"/>
|
||||
<column width="-1" name="gd_ueberar" type="field" hidden="0"/>
|
||||
<column width="-1" name="sort" type="field" hidden="0"/>
|
||||
<column width="-1" name="Stand" type="field" hidden="0"/>
|
||||
<column width="-1" type="actions" hidden="1"/>
|
||||
</columns>
|
||||
</attributetableconfig>
|
||||
<conditionalstyles>
|
||||
<rowstyles/>
|
||||
<fieldstyles/>
|
||||
</conditionalstyles>
|
||||
<storedexpressions/>
|
||||
<editform tolerant="1"></editform>
|
||||
<editforminit/>
|
||||
<editforminitcodesource>0</editforminitcodesource>
|
||||
<editforminitfilepath></editforminitfilepath>
|
||||
<editforminitcode><![CDATA[# -*- coding: utf-8 -*-
|
||||
"""
|
||||
QGIS forms can have a Python function that is called when the form is
|
||||
opened.
|
||||
|
||||
Use this function to add extra logic to your forms.
|
||||
|
||||
Enter the name of the function in the "Python Init function"
|
||||
field.
|
||||
An example follows:
|
||||
"""
|
||||
from qgis.PyQt.QtWidgets import QWidget
|
||||
|
||||
def my_form_open(dialog, layer, feature):
|
||||
geom = feature.geometry()
|
||||
control = dialog.findChild(QWidget, "MyLineEdit")
|
||||
]]></editforminitcode>
|
||||
<featformsuppress>0</featformsuppress>
|
||||
<editorlayout>generatedlayout</editorlayout>
|
||||
<editable>
|
||||
<field name="Stand" editable="1"/>
|
||||
<field name="ext_datier" editable="1"/>
|
||||
<field name="ext_eigenn" editable="1"/>
|
||||
<field name="ext_flurst" editable="1"/>
|
||||
<field name="ext_gemark" editable="1"/>
|
||||
<field name="ext_gemein" editable="1"/>
|
||||
<field name="ext_hausnu" editable="1"/>
|
||||
<field name="ext_hida_n" editable="1"/>
|
||||
<field name="ext_kchar1" editable="1"/>
|
||||
<field name="ext_kchar2" editable="1"/>
|
||||
<field name="ext_kchar3" editable="1"/>
|
||||
<field name="ext_kreis" editable="1"/>
|
||||
<field name="ext_objnr" editable="1"/>
|
||||
<field name="ext_ortste" editable="1"/>
|
||||
<field name="ext_strass" editable="1"/>
|
||||
<field name="ext_typ" editable="1"/>
|
||||
<field name="gd_ueberar" editable="1"/>
|
||||
<field name="gml_id" editable="1"/>
|
||||
<field name="obj_nr" editable="1"/>
|
||||
<field name="objectid" editable="1"/>
|
||||
<field name="sort" editable="1"/>
|
||||
<field name="text_1" editable="1"/>
|
||||
<field name="typ" editable="1"/>
|
||||
</editable>
|
||||
<labelOnTop>
|
||||
<field name="Stand" labelOnTop="0"/>
|
||||
<field name="ext_datier" labelOnTop="0"/>
|
||||
<field name="ext_eigenn" labelOnTop="0"/>
|
||||
<field name="ext_flurst" labelOnTop="0"/>
|
||||
<field name="ext_gemark" labelOnTop="0"/>
|
||||
<field name="ext_gemein" labelOnTop="0"/>
|
||||
<field name="ext_hausnu" labelOnTop="0"/>
|
||||
<field name="ext_hida_n" labelOnTop="0"/>
|
||||
<field name="ext_kchar1" labelOnTop="0"/>
|
||||
<field name="ext_kchar2" labelOnTop="0"/>
|
||||
<field name="ext_kchar3" labelOnTop="0"/>
|
||||
<field name="ext_kreis" labelOnTop="0"/>
|
||||
<field name="ext_objnr" labelOnTop="0"/>
|
||||
<field name="ext_ortste" labelOnTop="0"/>
|
||||
<field name="ext_strass" labelOnTop="0"/>
|
||||
<field name="ext_typ" labelOnTop="0"/>
|
||||
<field name="gd_ueberar" labelOnTop="0"/>
|
||||
<field name="gml_id" labelOnTop="0"/>
|
||||
<field name="obj_nr" labelOnTop="0"/>
|
||||
<field name="objectid" labelOnTop="0"/>
|
||||
<field name="sort" labelOnTop="0"/>
|
||||
<field name="text_1" labelOnTop="0"/>
|
||||
<field name="typ" labelOnTop="0"/>
|
||||
</labelOnTop>
|
||||
<dataDefinedFieldProperties/>
|
||||
<widgets/>
|
||||
<previewExpression>"gml_id"</previewExpression>
|
||||
<mapTip></mapTip>
|
||||
<layerGeometryType>2</layerGeometryType>
|
||||
</qgis>
|
||||
349
assets/GIS_Flst_Beschriftung_ALKIS_NAS.qml
Normal file
349
assets/GIS_Flst_Beschriftung_ALKIS_NAS.qml
Normal file
@@ -0,0 +1,349 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis labelsEnabled="1" version="3.40.4-Bratislava" styleCategories="Symbology|Labeling">
|
||||
<renderer-v2 enableorderby="0" type="singleSymbol" referencescale="-1" forceraster="0" symbollevels="0">
|
||||
<symbols>
|
||||
<symbol name="0" type="fill" force_rhr="0" clip_to_extent="1" is_animated="0" frame_rate="10" alpha="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer id="{bc287a30-ef97-44d4-ac42-1890985a8e6e}" class="SimpleFill" locked="0" enabled="1" pass="0">
|
||||
<Option type="Map">
|
||||
<Option name="border_width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="color" type="QString" value="229,182,54,255,rgb:0.89803921568627454,0.71372549019607845,0.21176470588235294,1"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="offset" type="QString" value="0,0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="outline_color" type="QString" value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1"/>
|
||||
<Option name="outline_style" type="QString" value="solid"/>
|
||||
<Option name="outline_width" type="QString" value="0.5"/>
|
||||
<Option name="outline_width_unit" type="QString" value="MM"/>
|
||||
<Option name="style" type="QString" value="no"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<rotation/>
|
||||
<sizescale/>
|
||||
<data-defined-properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data-defined-properties>
|
||||
</renderer-v2>
|
||||
<selection mode="Default">
|
||||
<selectionColor invalid="1"/>
|
||||
<selectionSymbol>
|
||||
<symbol name="" type="fill" force_rhr="0" clip_to_extent="1" is_animated="0" frame_rate="10" alpha="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer id="{819785db-4b31-4c4c-8332-821c09f81921}" class="SimpleFill" locked="0" enabled="1" pass="0">
|
||||
<Option type="Map">
|
||||
<Option name="border_width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="color" type="QString" value="0,0,255,255,rgb:0,0,1,1"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="offset" type="QString" value="0,0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="outline_color" type="QString" value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1"/>
|
||||
<Option name="outline_style" type="QString" value="solid"/>
|
||||
<Option name="outline_width" type="QString" value="0.26"/>
|
||||
<Option name="outline_width_unit" type="QString" value="MM"/>
|
||||
<Option name="style" type="QString" value="solid"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</selectionSymbol>
|
||||
</selection>
|
||||
<labeling type="rule-based">
|
||||
<rules key="{15ec465c-d050-4a64-b4ba-262af80bbb43}">
|
||||
<rule key="{b56520a8-9937-40dd-b8fe-c4386271088d}" filter=""flurstuecksnummer_ax_flurstuecksnummer_nenner" IS NULL" description="FlstNr_ohne_Zusatz">
|
||||
<settings calloutType="simple">
|
||||
<text-style forcedItalic="0" fontUnderline="0" previewBkgrdColor="255,255,255,255,rgb:1,1,1,1" fontItalic="0" tabStopDistanceUnit="Point" textOpacity="1" multilineHeight="1" fontFamily="Times New Roman" fontStrikeout="0" capitalization="0" fieldName="flurstuecksnummer_ax_flurstuecksnummer_zaehler" legendString="Aa" fontSizeUnit="Point" fontWeight="50" textOrientation="horizontal" multilineHeightUnit="Percentage" fontKerning="1" tabStopDistanceMapUnitScale="3x:0,0,0,0,0,0" forcedBold="0" fontWordSpacing="0" fontLetterSpacing="0" fontSizeMapUnitScale="3x:0,0,0,0,0,0" allowHtml="0" isExpression="0" useSubstitutions="0" textColor="0,0,0,255,rgb:0,0,0,1" blendMode="0" fontSize="7" namedStyle="Standard" tabStopDistance="80">
|
||||
<families/>
|
||||
<text-buffer bufferBlendMode="0" bufferSizeUnits="MM" bufferOpacity="1" bufferJoinStyle="128" bufferNoFill="1" bufferSizeMapUnitScale="3x:0,0,0,0,0,0" bufferDraw="1" bufferColor="255,255,255,255,rgb:1,1,1,1" bufferSize="1"/>
|
||||
<text-mask maskEnabled="0" maskSizeMapUnitScale="3x:0,0,0,0,0,0" maskSizeUnits="MM" maskJoinStyle="128" maskSize2="1.5" maskSize="1.5" maskOpacity="1" maskType="0" maskedSymbolLayers=""/>
|
||||
<background shapeOffsetX="0" shapeRadiiY="0" shapeSVGFile="" shapeRotation="0" shapeBorderWidth="0" shapeRadiiX="0" shapeSizeX="0" shapeBorderWidthMapUnitScale="3x:0,0,0,0,0,0" shapeSizeUnit="MM" shapeRotationType="0" shapeBorderColor="128,128,128,255,rgb:0.50196078431372548,0.50196078431372548,0.50196078431372548,1" shapeJoinStyle="64" shapeRadiiMapUnitScale="3x:0,0,0,0,0,0" shapeType="0" shapeOffsetMapUnitScale="3x:0,0,0,0,0,0" shapeDraw="0" shapeBorderWidthUnit="MM" shapeFillColor="255,255,255,255,rgb:1,1,1,1" shapeOffsetUnit="MM" shapeRadiiUnit="MM" shapeSizeMapUnitScale="3x:0,0,0,0,0,0" shapeOffsetY="0" shapeBlendMode="0" shapeSizeType="0" shapeSizeY="0" shapeOpacity="1">
|
||||
<symbol name="markerSymbol" type="marker" force_rhr="0" clip_to_extent="1" is_animated="0" frame_rate="10" alpha="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer id="" class="SimpleMarker" locked="0" enabled="1" pass="0">
|
||||
<Option type="Map">
|
||||
<Option name="angle" type="QString" value="0"/>
|
||||
<Option name="cap_style" type="QString" value="square"/>
|
||||
<Option name="color" type="QString" value="141,90,153,255,rgb:0.55294117647058827,0.35294117647058826,0.59999999999999998,1"/>
|
||||
<Option name="horizontal_anchor_point" type="QString" value="1"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="name" type="QString" value="circle"/>
|
||||
<Option name="offset" type="QString" value="0,0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="outline_color" type="QString" value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1"/>
|
||||
<Option name="outline_style" type="QString" value="solid"/>
|
||||
<Option name="outline_width" type="QString" value="0"/>
|
||||
<Option name="outline_width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="outline_width_unit" type="QString" value="MM"/>
|
||||
<Option name="scale_method" type="QString" value="diameter"/>
|
||||
<Option name="size" type="QString" value="2"/>
|
||||
<Option name="size_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="size_unit" type="QString" value="MM"/>
|
||||
<Option name="vertical_anchor_point" type="QString" value="1"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
<symbol name="fillSymbol" type="fill" force_rhr="0" clip_to_extent="1" is_animated="0" frame_rate="10" alpha="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer id="" class="SimpleFill" locked="0" enabled="1" pass="0">
|
||||
<Option type="Map">
|
||||
<Option name="border_width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="color" type="QString" value="255,255,255,255,rgb:1,1,1,1"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="offset" type="QString" value="0,0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="outline_color" type="QString" value="128,128,128,255,rgb:0.50196078431372548,0.50196078431372548,0.50196078431372548,1"/>
|
||||
<Option name="outline_style" type="QString" value="no"/>
|
||||
<Option name="outline_width" type="QString" value="0"/>
|
||||
<Option name="outline_width_unit" type="QString" value="MM"/>
|
||||
<Option name="style" type="QString" value="solid"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</background>
|
||||
<shadow shadowRadiusAlphaOnly="0" shadowOffsetAngle="135" shadowOpacity="0.69999999999999996" shadowOffsetUnit="MM" shadowColor="0,0,0,255,rgb:0,0,0,1" shadowRadiusMapUnitScale="3x:0,0,0,0,0,0" shadowRadius="1.5" shadowBlendMode="6" shadowScale="100" shadowDraw="0" shadowUnder="0" shadowOffsetDist="1" shadowRadiusUnit="MM" shadowOffsetMapUnitScale="3x:0,0,0,0,0,0" shadowOffsetGlobal="1"/>
|
||||
<dd_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</dd_properties>
|
||||
<substitutions/>
|
||||
</text-style>
|
||||
<text-format multilineAlign="3" autoWrapLength="0" reverseDirectionSymbol="0" plussign="0" rightDirectionSymbol=">" addDirectionSymbol="0" leftDirectionSymbol="<" formatNumbers="0" decimals="3" placeDirectionSymbol="0" wrapChar="" useMaxLineLengthForAutoWrap="1"/>
|
||||
<placement lineAnchorClipping="0" maximumDistanceMapUnitScale="3x:0,0,0,0,0,0" xOffset="0" maximumDistance="0" geometryGenerator="" distMapUnitScale="3x:0,0,0,0,0,0" predefinedPositionOrder="TR,TL,BR,BL,R,L,TSR,BSR" layerType="PolygonGeometry" lineAnchorPercent="0.5" rotationUnit="AngleDegrees" repeatDistanceMapUnitScale="3x:0,0,0,0,0,0" priority="9" yOffset="0" quadOffset="4" polygonPlacementFlags="2" centroidInside="1" placement="1" placementFlags="10" prioritization="PreferCloser" overrunDistance="0" offsetUnits="MM" maxCurvedCharAngleOut="-25" preserveRotation="1" lineAnchorTextPoint="CenterOfText" overlapHandling="PreventOverlap" rotationAngle="0" repeatDistance="0" offsetType="0" distUnits="MM" allowDegraded="0" overrunDistanceUnit="MM" centroidWhole="0" geometryGeneratorType="PointGeometry" fitInPolygonOnly="0" geometryGeneratorEnabled="0" dist="0" maxCurvedCharAngleIn="25" overrunDistanceMapUnitScale="3x:0,0,0,0,0,0" maximumDistanceUnit="MM" lineAnchorType="0" repeatDistanceUnits="MM" labelOffsetMapUnitScale="3x:0,0,0,0,0,0"/>
|
||||
<rendering fontMinPixelSize="3" fontMaxPixelSize="10000" maxNumLabels="2000" obstacleFactor="1" mergeLines="0" fontLimitPixelSize="0" limitNumLabels="0" minFeatureSize="0" scaleMin="0" scaleVisibility="0" labelPerPart="0" scaleMax="0" obstacleType="1" upsidedownLabels="0" drawLabels="1" zIndex="0" unplacedVisibility="0" obstacle="1"/>
|
||||
<dd_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</dd_properties>
|
||||
<callout type="simple">
|
||||
<Option type="Map">
|
||||
<Option name="anchorPoint" type="QString" value="centroid"/>
|
||||
<Option name="blendMode" type="int" value="0"/>
|
||||
<Option name="ddProperties" type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
<Option name="drawToAllParts" type="bool" value="false"/>
|
||||
<Option name="enabled" type="QString" value="1"/>
|
||||
<Option name="labelAnchorPoint" type="QString" value="point_on_exterior"/>
|
||||
<Option name="lineSymbol" type="QString" value="<symbol name="symbol" type="line" force_rhr="0" clip_to_extent="1" is_animated="0" frame_rate="10" alpha="1"><data_defined_properties><Option type="Map"><Option name="name" type="QString" value=""/><Option name="properties"/><Option name="type" type="QString" value="collection"/></Option></data_defined_properties><layer id="{3356d22c-5f69-4911-8e91-fcf32e8243fa}" class="SimpleLine" locked="0" enabled="1" pass="0"><Option type="Map"><Option name="align_dash_pattern" type="QString" value="0"/><Option name="capstyle" type="QString" value="square"/><Option name="customdash" type="QString" value="5;2"/><Option name="customdash_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/><Option name="customdash_unit" type="QString" value="MM"/><Option name="dash_pattern_offset" type="QString" value="0"/><Option name="dash_pattern_offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/><Option name="dash_pattern_offset_unit" type="QString" value="MM"/><Option name="draw_inside_polygon" type="QString" value="0"/><Option name="joinstyle" type="QString" value="bevel"/><Option name="line_color" type="QString" value="60,60,60,255,rgb:0.23529411764705882,0.23529411764705882,0.23529411764705882,1"/><Option name="line_style" type="QString" value="solid"/><Option name="line_width" type="QString" value="0.3"/><Option name="line_width_unit" type="QString" value="MM"/><Option name="offset" type="QString" value="0"/><Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/><Option name="offset_unit" type="QString" value="MM"/><Option name="ring_filter" type="QString" value="0"/><Option name="trim_distance_end" type="QString" value="0"/><Option name="trim_distance_end_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/><Option name="trim_distance_end_unit" type="QString" value="MM"/><Option name="trim_distance_start" type="QString" value="0"/><Option name="trim_distance_start_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/><Option name="trim_distance_start_unit" type="QString" value="MM"/><Option name="tweak_dash_pattern_on_corners" type="QString" value="0"/><Option name="use_custom_dash" type="QString" value="0"/><Option name="width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/></Option><data_defined_properties><Option type="Map"><Option name="name" type="QString" value=""/><Option name="properties"/><Option name="type" type="QString" value="collection"/></Option></data_defined_properties></layer></symbol>"/>
|
||||
<Option name="minLength" type="double" value="0"/>
|
||||
<Option name="minLengthMapUnitScale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="minLengthUnit" type="QString" value="MM"/>
|
||||
<Option name="offsetFromAnchor" type="double" value="0"/>
|
||||
<Option name="offsetFromAnchorMapUnitScale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offsetFromAnchorUnit" type="QString" value="MM"/>
|
||||
<Option name="offsetFromLabel" type="double" value="0"/>
|
||||
<Option name="offsetFromLabelMapUnitScale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offsetFromLabelUnit" type="QString" value="MM"/>
|
||||
</Option>
|
||||
</callout>
|
||||
</settings>
|
||||
</rule>
|
||||
<rule key="{a9800348-c55c-45d0-95ce-be6db84663c8}" filter=""flurstuecksnummer_ax_flurstuecksnummer_nenner" IS NOT NULL" description="Flst_num_Zusatz">
|
||||
<settings calloutType="simple">
|
||||
<text-style forcedItalic="0" fontUnderline="0" previewBkgrdColor="255,255,255,255,rgb:1,1,1,1" fontItalic="0" tabStopDistanceUnit="Point" textOpacity="1" multilineHeight="1" fontFamily="Times New Roman" fontStrikeout="0" capitalization="0" fieldName=""flurstuecksnummer_ax_flurstuecksnummer_zaehler" || '\n' || "flurstuecksnummer_ax_flurstuecksnummer_nenner" " legendString="Aa" fontSizeUnit="Point" fontWeight="50" textOrientation="horizontal" multilineHeightUnit="Percentage" fontKerning="1" tabStopDistanceMapUnitScale="3x:0,0,0,0,0,0" forcedBold="0" fontWordSpacing="0" fontLetterSpacing="0" fontSizeMapUnitScale="3x:0,0,0,0,0,0" allowHtml="0" isExpression="1" useSubstitutions="0" textColor="0,0,0,255,rgb:0,0,0,1" blendMode="0" fontSize="7" namedStyle="Standard" tabStopDistance="80">
|
||||
<families/>
|
||||
<text-buffer bufferBlendMode="0" bufferSizeUnits="MM" bufferOpacity="1" bufferJoinStyle="128" bufferNoFill="1" bufferSizeMapUnitScale="3x:0,0,0,0,0,0" bufferDraw="1" bufferColor="255,255,255,255,rgb:1,1,1,1" bufferSize="0.5"/>
|
||||
<text-mask maskEnabled="0" maskSizeMapUnitScale="3x:0,0,0,0,0,0" maskSizeUnits="MM" maskJoinStyle="128" maskSize2="1.5" maskSize="1.5" maskOpacity="1" maskType="0" maskedSymbolLayers=""/>
|
||||
<background shapeOffsetX="0" shapeRadiiY="0" shapeSVGFile="" shapeRotation="0" shapeBorderWidth="0" shapeRadiiX="0" shapeSizeX="4" shapeBorderWidthMapUnitScale="3x:0,0,0,0,0,0" shapeSizeUnit="MM" shapeRotationType="0" shapeBorderColor="128,128,128,255,rgb:0.50196078431372548,0.50196078431372548,0.50196078431372548,1" shapeJoinStyle="64" shapeRadiiMapUnitScale="3x:0,0,0,0,0,0" shapeType="5" shapeOffsetMapUnitScale="3x:0,0,0,0,0,0" shapeDraw="1" shapeBorderWidthUnit="MM" shapeFillColor="255,255,255,255,rgb:1,1,1,1" shapeOffsetUnit="MM" shapeRadiiUnit="MM" shapeSizeMapUnitScale="3x:0,0,0,0,0,0" shapeOffsetY="0" shapeBlendMode="0" shapeSizeType="1" shapeSizeY="0" shapeOpacity="1">
|
||||
<symbol name="markerSymbol" type="marker" force_rhr="0" clip_to_extent="1" is_animated="0" frame_rate="10" alpha="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer id="" class="SimpleMarker" locked="0" enabled="1" pass="0">
|
||||
<Option type="Map">
|
||||
<Option name="angle" type="QString" value="90"/>
|
||||
<Option name="cap_style" type="QString" value="square"/>
|
||||
<Option name="color" type="QString" value="255,158,23,255,rgb:1,0.61960784313725492,0.09019607843137255,1"/>
|
||||
<Option name="horizontal_anchor_point" type="QString" value="1"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="name" type="QString" value="line"/>
|
||||
<Option name="offset" type="QString" value="0,0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="outline_color" type="QString" value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1"/>
|
||||
<Option name="outline_style" type="QString" value="solid"/>
|
||||
<Option name="outline_width" type="QString" value="0.3"/>
|
||||
<Option name="outline_width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="outline_width_unit" type="QString" value="MM"/>
|
||||
<Option name="scale_method" type="QString" value="diameter"/>
|
||||
<Option name="size" type="QString" value="4"/>
|
||||
<Option name="size_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="size_unit" type="QString" value="MM"/>
|
||||
<Option name="vertical_anchor_point" type="QString" value="1"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
<symbol name="fillSymbol" type="fill" force_rhr="0" clip_to_extent="1" is_animated="0" frame_rate="10" alpha="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer id="" class="SimpleFill" locked="0" enabled="1" pass="0">
|
||||
<Option type="Map">
|
||||
<Option name="border_width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="color" type="QString" value="255,255,255,255,rgb:1,1,1,1"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="offset" type="QString" value="0,0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="outline_color" type="QString" value="128,128,128,255,rgb:0.50196078431372548,0.50196078431372548,0.50196078431372548,1"/>
|
||||
<Option name="outline_style" type="QString" value="no"/>
|
||||
<Option name="outline_width" type="QString" value="0"/>
|
||||
<Option name="outline_width_unit" type="QString" value="MM"/>
|
||||
<Option name="style" type="QString" value="solid"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</background>
|
||||
<shadow shadowRadiusAlphaOnly="0" shadowOffsetAngle="135" shadowOpacity="0.69999999999999996" shadowOffsetUnit="MM" shadowColor="0,0,0,255,rgb:0,0,0,1" shadowRadiusMapUnitScale="3x:0,0,0,0,0,0" shadowRadius="1.5" shadowBlendMode="6" shadowScale="100" shadowDraw="0" shadowUnder="0" shadowOffsetDist="1" shadowRadiusUnit="MM" shadowOffsetMapUnitScale="3x:0,0,0,0,0,0" shadowOffsetGlobal="1"/>
|
||||
<dd_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</dd_properties>
|
||||
<substitutions/>
|
||||
</text-style>
|
||||
<text-format multilineAlign="3" autoWrapLength="0" reverseDirectionSymbol="0" plussign="0" rightDirectionSymbol=">" addDirectionSymbol="0" leftDirectionSymbol="<" formatNumbers="0" decimals="3" placeDirectionSymbol="0" wrapChar="" useMaxLineLengthForAutoWrap="1"/>
|
||||
<placement lineAnchorClipping="0" maximumDistanceMapUnitScale="3x:0,0,0,0,0,0" xOffset="0" maximumDistance="0" geometryGenerator="" distMapUnitScale="3x:0,0,0,0,0,0" predefinedPositionOrder="TR,TL,BR,BL,R,L,TSR,BSR" layerType="PolygonGeometry" lineAnchorPercent="0.5" rotationUnit="AngleDegrees" repeatDistanceMapUnitScale="3x:0,0,0,0,0,0" priority="5" yOffset="0" quadOffset="4" polygonPlacementFlags="2" centroidInside="1" placement="1" placementFlags="10" prioritization="PreferCloser" overrunDistance="0" offsetUnits="MM" maxCurvedCharAngleOut="-25" preserveRotation="1" lineAnchorTextPoint="CenterOfText" overlapHandling="PreventOverlap" rotationAngle="0" repeatDistance="0" offsetType="0" distUnits="MM" allowDegraded="0" overrunDistanceUnit="MM" centroidWhole="0" geometryGeneratorType="PointGeometry" fitInPolygonOnly="0" geometryGeneratorEnabled="0" dist="0" maxCurvedCharAngleIn="25" overrunDistanceMapUnitScale="3x:0,0,0,0,0,0" maximumDistanceUnit="MM" lineAnchorType="0" repeatDistanceUnits="MM" labelOffsetMapUnitScale="3x:0,0,0,0,0,0"/>
|
||||
<rendering fontMinPixelSize="3" fontMaxPixelSize="10000" maxNumLabels="2000" obstacleFactor="1" mergeLines="0" fontLimitPixelSize="0" limitNumLabels="0" minFeatureSize="0" scaleMin="0" scaleVisibility="0" labelPerPart="0" scaleMax="0" obstacleType="1" upsidedownLabels="0" drawLabels="1" zIndex="0" unplacedVisibility="0" obstacle="1"/>
|
||||
<dd_properties>
|
||||
<Option type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties" type="Map">
|
||||
<Option name="FontStyle" type="Map">
|
||||
<Option name="active" type="bool" value="false"/>
|
||||
<Option name="field" type="QString" value="flstnrzae"/>
|
||||
<Option name="type" type="int" value="2"/>
|
||||
</Option>
|
||||
<Option name="Underline" type="Map">
|
||||
<Option name="active" type="bool" value="false"/>
|
||||
<Option name="field" type="QString" value="flstnrzae"/>
|
||||
<Option name="type" type="int" value="2"/>
|
||||
</Option>
|
||||
</Option>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
</dd_properties>
|
||||
<callout type="simple">
|
||||
<Option type="Map">
|
||||
<Option name="anchorPoint" type="QString" value="pole_of_inaccessibility"/>
|
||||
<Option name="blendMode" type="int" value="0"/>
|
||||
<Option name="ddProperties" type="Map">
|
||||
<Option name="name" type="QString" value=""/>
|
||||
<Option name="properties"/>
|
||||
<Option name="type" type="QString" value="collection"/>
|
||||
</Option>
|
||||
<Option name="drawToAllParts" type="bool" value="false"/>
|
||||
<Option name="enabled" type="QString" value="0"/>
|
||||
<Option name="labelAnchorPoint" type="QString" value="point_on_exterior"/>
|
||||
<Option name="lineSymbol" type="QString" value="<symbol name="symbol" type="line" force_rhr="0" clip_to_extent="1" is_animated="0" frame_rate="10" alpha="1"><data_defined_properties><Option type="Map"><Option name="name" type="QString" value=""/><Option name="properties"/><Option name="type" type="QString" value="collection"/></Option></data_defined_properties><layer id="{0a6da4bc-e8f1-4ec2-8062-844ead072d33}" class="SimpleLine" locked="0" enabled="1" pass="0"><Option type="Map"><Option name="align_dash_pattern" type="QString" value="0"/><Option name="capstyle" type="QString" value="square"/><Option name="customdash" type="QString" value="5;2"/><Option name="customdash_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/><Option name="customdash_unit" type="QString" value="MM"/><Option name="dash_pattern_offset" type="QString" value="0"/><Option name="dash_pattern_offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/><Option name="dash_pattern_offset_unit" type="QString" value="MM"/><Option name="draw_inside_polygon" type="QString" value="0"/><Option name="joinstyle" type="QString" value="bevel"/><Option name="line_color" type="QString" value="60,60,60,255,rgb:0.23529411764705882,0.23529411764705882,0.23529411764705882,1"/><Option name="line_style" type="QString" value="solid"/><Option name="line_width" type="QString" value="0.3"/><Option name="line_width_unit" type="QString" value="MM"/><Option name="offset" type="QString" value="0"/><Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/><Option name="offset_unit" type="QString" value="MM"/><Option name="ring_filter" type="QString" value="0"/><Option name="trim_distance_end" type="QString" value="0"/><Option name="trim_distance_end_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/><Option name="trim_distance_end_unit" type="QString" value="MM"/><Option name="trim_distance_start" type="QString" value="0"/><Option name="trim_distance_start_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/><Option name="trim_distance_start_unit" type="QString" value="MM"/><Option name="tweak_dash_pattern_on_corners" type="QString" value="0"/><Option name="use_custom_dash" type="QString" value="0"/><Option name="width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/></Option><data_defined_properties><Option type="Map"><Option name="name" type="QString" value=""/><Option name="properties"/><Option name="type" type="QString" value="collection"/></Option></data_defined_properties></layer></symbol>"/>
|
||||
<Option name="minLength" type="double" value="0"/>
|
||||
<Option name="minLengthMapUnitScale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="minLengthUnit" type="QString" value="MM"/>
|
||||
<Option name="offsetFromAnchor" type="double" value="0"/>
|
||||
<Option name="offsetFromAnchorMapUnitScale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offsetFromAnchorUnit" type="QString" value="MM"/>
|
||||
<Option name="offsetFromLabel" type="double" value="0"/>
|
||||
<Option name="offsetFromLabelMapUnitScale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offsetFromLabelUnit" type="QString" value="MM"/>
|
||||
</Option>
|
||||
</callout>
|
||||
</settings>
|
||||
</rule>
|
||||
</rules>
|
||||
</labeling>
|
||||
<blendMode>0</blendMode>
|
||||
<featureBlendMode>0</featureBlendMode>
|
||||
<layerGeometryType>2</layerGeometryType>
|
||||
</qgis>
|
||||
371
assets/GIS_LfULG_LSG.qml
Normal file
371
assets/GIS_LfULG_LSG.qml
Normal file
@@ -0,0 +1,371 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis styleCategories="Symbology" version="3.40.7-Bratislava">
|
||||
<renderer-v2 type="singleSymbol" forceraster="0" enableorderby="0" symbollevels="0" referencescale="-1">
|
||||
<symbols>
|
||||
<symbol type="fill" force_rhr="0" is_animated="0" frame_rate="10" name="0" alpha="1" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer class="MarkerLine" id="{edf1fe5f-96c0-427c-ac7b-b04c95e0da9c}" enabled="1" locked="0" pass="0">
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="4" name="average_angle_length"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="average_angle_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="average_angle_unit"/>
|
||||
<Option type="QString" value="5" name="interval"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="interval_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="interval_unit"/>
|
||||
<Option type="QString" value="0" name="offset"/>
|
||||
<Option type="QString" value="0" name="offset_along_line"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_along_line_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="offset_along_line_unit"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
|
||||
<Option type="QString" value="Pixel" name="offset_unit"/>
|
||||
<Option type="bool" value="true" name="place_on_every_part"/>
|
||||
<Option type="QString" value="Interval" name="placements"/>
|
||||
<Option type="QString" value="1" name="ring_filter"/>
|
||||
<Option type="QString" value="1" name="rotate"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<symbol type="marker" force_rhr="0" is_animated="0" frame_rate="10" name="@0@0" alpha="1" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer class="SimpleMarker" id="{857cb357-9b68-40ea-9e9f-edbdbd7de638}" enabled="1" locked="0" pass="0">
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="90" name="angle"/>
|
||||
<Option type="QString" value="square" name="cap_style"/>
|
||||
<Option type="QString" value="255,0,0,255,rgb:1,0,0,1" name="color"/>
|
||||
<Option type="QString" value="1" name="horizontal_anchor_point"/>
|
||||
<Option type="QString" value="bevel" name="joinstyle"/>
|
||||
<Option type="QString" value="line" name="name"/>
|
||||
<Option type="QString" value="1.99999999999999978,-1.5" name="offset"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="offset_unit"/>
|
||||
<Option type="QString" value="128,128,128,255,rgb:0.50196078431372548,0.50196078431372548,0.50196078431372548,1" name="outline_color"/>
|
||||
<Option type="QString" value="solid" name="outline_style"/>
|
||||
<Option type="QString" value="0.5" name="outline_width"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="outline_width_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="outline_width_unit"/>
|
||||
<Option type="QString" value="diameter" name="scale_method"/>
|
||||
<Option type="QString" value="3" name="size"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="size_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="size_unit"/>
|
||||
<Option type="QString" value="1" name="vertical_anchor_point"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
<layer class="SimpleMarker" id="{8da6ec0d-bd1d-4942-8241-be9e412a4ecd}" enabled="1" locked="0" pass="0">
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="0" name="angle"/>
|
||||
<Option type="QString" value="square" name="cap_style"/>
|
||||
<Option type="QString" value="128,128,128,255,rgb:0.50196078431372548,0.50196078431372548,0.50196078431372548,1" name="color"/>
|
||||
<Option type="QString" value="1" name="horizontal_anchor_point"/>
|
||||
<Option type="QString" value="bevel" name="joinstyle"/>
|
||||
<Option type="QString" value="line" name="name"/>
|
||||
<Option type="QString" value="3,1" name="offset"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="offset_unit"/>
|
||||
<Option type="QString" value="128,128,128,255,rgb:0.50196078431372548,0.50196078431372548,0.50196078431372548,1" name="outline_color"/>
|
||||
<Option type="QString" value="solid" name="outline_style"/>
|
||||
<Option type="QString" value="0.5" name="outline_width"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="outline_width_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="outline_width_unit"/>
|
||||
<Option type="QString" value="diameter" name="scale_method"/>
|
||||
<Option type="QString" value="2" name="size"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="size_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="size_unit"/>
|
||||
<Option type="QString" value="1" name="vertical_anchor_point"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
<layer class="SimpleMarker" id="{cf06f0f3-27d8-4b64-b56f-6bda0ed8508c}" enabled="1" locked="0" pass="0">
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="0" name="angle"/>
|
||||
<Option type="QString" value="square" name="cap_style"/>
|
||||
<Option type="QString" value="255,0,0,255,rgb:1,0,0,1" name="color"/>
|
||||
<Option type="QString" value="1" name="horizontal_anchor_point"/>
|
||||
<Option type="QString" value="bevel" name="joinstyle"/>
|
||||
<Option type="QString" value="line" name="name"/>
|
||||
<Option type="QString" value="2,1" name="offset"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="offset_unit"/>
|
||||
<Option type="QString" value="128,128,128,255,rgb:0.50196078431372548,0.50196078431372548,0.50196078431372548,1" name="outline_color"/>
|
||||
<Option type="QString" value="solid" name="outline_style"/>
|
||||
<Option type="QString" value="0.5" name="outline_width"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="outline_width_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="outline_width_unit"/>
|
||||
<Option type="QString" value="diameter" name="scale_method"/>
|
||||
<Option type="QString" value="2" name="size"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="size_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="size_unit"/>
|
||||
<Option type="QString" value="1" name="vertical_anchor_point"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
<layer class="SimpleMarker" id="{0f1b9591-1b5b-4e8a-8353-c0a7caaf7b21}" enabled="1" locked="0" pass="0">
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="0" name="angle"/>
|
||||
<Option type="QString" value="square" name="cap_style"/>
|
||||
<Option type="QString" value="128,128,128,255,rgb:0.50196078431372548,0.50196078431372548,0.50196078431372548,1" name="color"/>
|
||||
<Option type="QString" value="1" name="horizontal_anchor_point"/>
|
||||
<Option type="QString" value="bevel" name="joinstyle"/>
|
||||
<Option type="QString" value="line" name="name"/>
|
||||
<Option type="QString" value="1,1" name="offset"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="offset_unit"/>
|
||||
<Option type="QString" value="128,128,128,255,rgb:0.50196078431372548,0.50196078431372548,0.50196078431372548,1" name="outline_color"/>
|
||||
<Option type="QString" value="solid" name="outline_style"/>
|
||||
<Option type="QString" value="0.5" name="outline_width"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="outline_width_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="outline_width_unit"/>
|
||||
<Option type="QString" value="diameter" name="scale_method"/>
|
||||
<Option type="QString" value="2" name="size"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="size_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="size_unit"/>
|
||||
<Option type="QString" value="1" name="vertical_anchor_point"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
<layer class="SimpleMarker" id="{c9ae8a84-1a7d-4599-b27d-37bc1484098b}" enabled="1" locked="0" pass="0">
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="0" name="angle"/>
|
||||
<Option type="QString" value="square" name="cap_style"/>
|
||||
<Option type="QString" value="128,128,128,255,rgb:0.50196078431372548,0.50196078431372548,0.50196078431372548,1" name="color"/>
|
||||
<Option type="QString" value="1" name="horizontal_anchor_point"/>
|
||||
<Option type="QString" value="bevel" name="joinstyle"/>
|
||||
<Option type="QString" value="line" name="name"/>
|
||||
<Option type="QString" value="0,1" name="offset"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="offset_unit"/>
|
||||
<Option type="QString" value="128,128,128,255,rgb:0.50196078431372548,0.50196078431372548,0.50196078431372548,1" name="outline_color"/>
|
||||
<Option type="QString" value="solid" name="outline_style"/>
|
||||
<Option type="QString" value="0.5" name="outline_width"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="outline_width_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="outline_width_unit"/>
|
||||
<Option type="QString" value="diameter" name="scale_method"/>
|
||||
<Option type="QString" value="2" name="size"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="size_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="size_unit"/>
|
||||
<Option type="QString" value="1" name="vertical_anchor_point"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</layer>
|
||||
<layer class="SimpleLine" id="{fd1fd75a-85c6-4ace-a1bc-300a87cb1bcf}" enabled="1" locked="0" pass="0">
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="0" name="align_dash_pattern"/>
|
||||
<Option type="QString" value="square" name="capstyle"/>
|
||||
<Option type="QString" value="5;2" name="customdash"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="customdash_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="customdash_unit"/>
|
||||
<Option type="QString" value="0" name="dash_pattern_offset"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="dash_pattern_offset_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="dash_pattern_offset_unit"/>
|
||||
<Option type="QString" value="0" name="draw_inside_polygon"/>
|
||||
<Option type="QString" value="bevel" name="joinstyle"/>
|
||||
<Option type="QString" value="128,128,128,255,rgb:0.50196078431372548,0.50196078431372548,0.50196078431372548,1" name="line_color"/>
|
||||
<Option type="QString" value="solid" name="line_style"/>
|
||||
<Option type="QString" value="0.5" name="line_width"/>
|
||||
<Option type="QString" value="MM" name="line_width_unit"/>
|
||||
<Option type="QString" value="0" name="offset"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="offset_unit"/>
|
||||
<Option type="QString" value="0" name="ring_filter"/>
|
||||
<Option type="QString" value="0" name="trim_distance_end"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="trim_distance_end_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="trim_distance_end_unit"/>
|
||||
<Option type="QString" value="0" name="trim_distance_start"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="trim_distance_start_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="trim_distance_start_unit"/>
|
||||
<Option type="QString" value="0" name="tweak_dash_pattern_on_corners"/>
|
||||
<Option type="QString" value="0" name="use_custom_dash"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="width_map_unit_scale"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
<layer class="CentroidFill" id="{801668fb-6226-4c79-a72a-ec430781b326}" enabled="1" locked="0" pass="0">
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="1" name="clip_on_current_part_only"/>
|
||||
<Option type="QString" value="1" name="clip_points"/>
|
||||
<Option type="QString" value="1" name="point_on_all_parts"/>
|
||||
<Option type="QString" value="1" name="point_on_surface"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<symbol type="marker" force_rhr="0" is_animated="0" frame_rate="10" name="@0@2" alpha="1" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer class="SimpleMarker" id="{d075cd2b-6c94-49c8-b6a6-61d75f00fbc5}" enabled="1" locked="0" pass="0">
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="0" name="angle"/>
|
||||
<Option type="QString" value="square" name="cap_style"/>
|
||||
<Option type="QString" value="255,0,0,0,rgb:1,0,0,0" name="color"/>
|
||||
<Option type="QString" value="1" name="horizontal_anchor_point"/>
|
||||
<Option type="QString" value="bevel" name="joinstyle"/>
|
||||
<Option type="QString" value="circle" name="name"/>
|
||||
<Option type="QString" value="0,0" name="offset"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
|
||||
<Option type="QString" value="MapUnit" name="offset_unit"/>
|
||||
<Option type="QString" value="0,0,0,255,rgb:0,0,0,1" name="outline_color"/>
|
||||
<Option type="QString" value="solid" name="outline_style"/>
|
||||
<Option type="QString" value="0.5" name="outline_width"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="outline_width_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="outline_width_unit"/>
|
||||
<Option type="QString" value="diameter" name="scale_method"/>
|
||||
<Option type="QString" value="15" name="size"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="size_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="size_unit"/>
|
||||
<Option type="QString" value="1" name="vertical_anchor_point"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
<layer class="FontMarker" id="{d6023cfc-3bfd-46de-9557-e37b755164f3}" enabled="1" locked="0" pass="0">
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="0" name="angle"/>
|
||||
<Option type="QString" value="L" name="chr"/>
|
||||
<Option type="QString" value="0,0,0,255,rgb:0,0,0,1" name="color"/>
|
||||
<Option type="QString" value="Arial" name="font"/>
|
||||
<Option type="QString" value="Standard" name="font_style"/>
|
||||
<Option type="QString" value="1" name="horizontal_anchor_point"/>
|
||||
<Option type="QString" value="bevel" name="joinstyle"/>
|
||||
<Option type="QString" value="0,0" name="offset"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
|
||||
<Option type="QString" value="MapUnit" name="offset_unit"/>
|
||||
<Option type="QString" value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1" name="outline_color"/>
|
||||
<Option type="QString" value="0" name="outline_width"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="outline_width_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="outline_width_unit"/>
|
||||
<Option type="QString" value="5" name="size"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="size_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="size_unit"/>
|
||||
<Option type="QString" value="1" name="vertical_anchor_point"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<rotation/>
|
||||
<sizescale/>
|
||||
<data-defined-properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data-defined-properties>
|
||||
</renderer-v2>
|
||||
<selection mode="Default">
|
||||
<selectionColor invalid="1"/>
|
||||
<selectionSymbol>
|
||||
<symbol type="fill" force_rhr="0" is_animated="0" frame_rate="10" name="" alpha="1" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer class="SimpleFill" id="{790c0e9c-4587-46ac-845d-d8d4c15b81b7}" enabled="1" locked="0" pass="0">
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale"/>
|
||||
<Option type="QString" value="0,0,255,255,rgb:0,0,1,1" name="color"/>
|
||||
<Option type="QString" value="bevel" name="joinstyle"/>
|
||||
<Option type="QString" value="0,0" name="offset"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="offset_unit"/>
|
||||
<Option type="QString" value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1" name="outline_color"/>
|
||||
<Option type="QString" value="solid" name="outline_style"/>
|
||||
<Option type="QString" value="0.26" name="outline_width"/>
|
||||
<Option type="QString" value="MM" name="outline_width_unit"/>
|
||||
<Option type="QString" value="solid" name="style"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</selectionSymbol>
|
||||
</selection>
|
||||
<blendMode>0</blendMode>
|
||||
<featureBlendMode>0</featureBlendMode>
|
||||
<layerGeometryType>2</layerGeometryType>
|
||||
</qgis>
|
||||
575
assets/GIS_P41_60100A_FFH.qml
Normal file
575
assets/GIS_P41_60100A_FFH.qml
Normal file
@@ -0,0 +1,575 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis simplifyAlgorithm="0" simplifyDrawingTol="1" styleCategories="AllStyleCategories" labelsEnabled="1" simplifyLocal="1" version="3.16.0-Hannover" simplifyMaxScale="1" minScale="100000000" readOnly="0" hasScaleBasedVisibilityFlag="0" maxScale="0" simplifyDrawingHints="1">
|
||||
<flags>
|
||||
<Identifiable>1</Identifiable>
|
||||
<Removable>1</Removable>
|
||||
<Searchable>1</Searchable>
|
||||
</flags>
|
||||
<temporal fixedDuration="0" startField="" enabled="0" durationUnit="min" accumulate="0" mode="0" endField="" startExpression="" endExpression="" durationField="">
|
||||
<fixedRange>
|
||||
<start></start>
|
||||
<end></end>
|
||||
</fixedRange>
|
||||
</temporal>
|
||||
<renderer-v2 enableorderby="0" symbollevels="0" forceraster="0" type="singleSymbol">
|
||||
<symbols>
|
||||
<symbol name="0" clip_to_extent="1" force_rhr="0" alpha="1" type="fill">
|
||||
<layer class="LinePatternFill" enabled="1" locked="0" pass="0">
|
||||
<prop v="-45" k="angle"/>
|
||||
<prop v="213,180,60,255" k="color"/>
|
||||
<prop v="25" k="distance"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="distance_map_unit_scale"/>
|
||||
<prop v="Pixel" k="distance_unit"/>
|
||||
<prop v="0.26" k="line_width"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="line_width_map_unit_scale"/>
|
||||
<prop v="MM" k="line_width_unit"/>
|
||||
<prop v="0" k="offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||
<prop v="MM" k="offset_unit"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/>
|
||||
<prop v="MM" k="outline_width_unit"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<symbol name="@0@0" clip_to_extent="1" force_rhr="0" alpha="1" type="line">
|
||||
<layer class="SimpleLine" enabled="1" locked="0" pass="0">
|
||||
<prop v="0" k="align_dash_pattern"/>
|
||||
<prop v="square" k="capstyle"/>
|
||||
<prop v="5;2" k="customdash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="customdash_map_unit_scale"/>
|
||||
<prop v="Pixel" k="customdash_unit"/>
|
||||
<prop v="0" k="dash_pattern_offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="dash_pattern_offset_map_unit_scale"/>
|
||||
<prop v="MM" k="dash_pattern_offset_unit"/>
|
||||
<prop v="0" k="draw_inside_polygon"/>
|
||||
<prop v="bevel" k="joinstyle"/>
|
||||
<prop v="103,229,0,255" k="line_color"/>
|
||||
<prop v="solid" k="line_style"/>
|
||||
<prop v="2" k="line_width"/>
|
||||
<prop v="Pixel" k="line_width_unit"/>
|
||||
<prop v="0" k="offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||
<prop v="Pixel" k="offset_unit"/>
|
||||
<prop v="0" k="ring_filter"/>
|
||||
<prop v="0" k="tweak_dash_pattern_on_corners"/>
|
||||
<prop v="0" k="use_custom_dash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="width_map_unit_scale"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</layer>
|
||||
<layer class="LinePatternFill" enabled="1" locked="0" pass="0">
|
||||
<prop v="45" k="angle"/>
|
||||
<prop v="213,180,60,255" k="color"/>
|
||||
<prop v="25" k="distance"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="distance_map_unit_scale"/>
|
||||
<prop v="Pixel" k="distance_unit"/>
|
||||
<prop v="0.26" k="line_width"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="line_width_map_unit_scale"/>
|
||||
<prop v="MM" k="line_width_unit"/>
|
||||
<prop v="0" k="offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||
<prop v="MM" k="offset_unit"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/>
|
||||
<prop v="MM" k="outline_width_unit"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<symbol name="@0@1" clip_to_extent="1" force_rhr="0" alpha="1" type="line">
|
||||
<layer class="SimpleLine" enabled="1" locked="0" pass="0">
|
||||
<prop v="0" k="align_dash_pattern"/>
|
||||
<prop v="square" k="capstyle"/>
|
||||
<prop v="5;2" k="customdash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="customdash_map_unit_scale"/>
|
||||
<prop v="Pixel" k="customdash_unit"/>
|
||||
<prop v="0" k="dash_pattern_offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="dash_pattern_offset_map_unit_scale"/>
|
||||
<prop v="MM" k="dash_pattern_offset_unit"/>
|
||||
<prop v="0" k="draw_inside_polygon"/>
|
||||
<prop v="bevel" k="joinstyle"/>
|
||||
<prop v="103,229,0,255" k="line_color"/>
|
||||
<prop v="solid" k="line_style"/>
|
||||
<prop v="2" k="line_width"/>
|
||||
<prop v="Pixel" k="line_width_unit"/>
|
||||
<prop v="0" k="offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||
<prop v="Pixel" k="offset_unit"/>
|
||||
<prop v="0" k="ring_filter"/>
|
||||
<prop v="0" k="tweak_dash_pattern_on_corners"/>
|
||||
<prop v="0" k="use_custom_dash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="width_map_unit_scale"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</layer>
|
||||
<layer class="SimpleLine" enabled="1" locked="0" pass="0">
|
||||
<prop v="0" k="align_dash_pattern"/>
|
||||
<prop v="square" k="capstyle"/>
|
||||
<prop v="5;2" k="customdash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="customdash_map_unit_scale"/>
|
||||
<prop v="MM" k="customdash_unit"/>
|
||||
<prop v="0" k="dash_pattern_offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="dash_pattern_offset_map_unit_scale"/>
|
||||
<prop v="MM" k="dash_pattern_offset_unit"/>
|
||||
<prop v="0" k="draw_inside_polygon"/>
|
||||
<prop v="bevel" k="joinstyle"/>
|
||||
<prop v="0,168,0,255" k="line_color"/>
|
||||
<prop v="solid" k="line_style"/>
|
||||
<prop v="2" k="line_width"/>
|
||||
<prop v="Pixel" k="line_width_unit"/>
|
||||
<prop v="0" k="offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||
<prop v="MM" k="offset_unit"/>
|
||||
<prop v="0" k="ring_filter"/>
|
||||
<prop v="0" k="tweak_dash_pattern_on_corners"/>
|
||||
<prop v="0" k="use_custom_dash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="width_map_unit_scale"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<rotation/>
|
||||
<sizescale/>
|
||||
</renderer-v2>
|
||||
<labeling type="simple">
|
||||
<settings calloutType="simple">
|
||||
<text-style fontWeight="75" fontSizeUnit="Pixel" fontSize="15" fontUnderline="0" previewBkgrdColor="255,255,255,255" multilineHeight="1" isExpression="1" textOpacity="1" textOrientation="horizontal" textColor="0,0,0,255" blendMode="0" fontSizeMapUnitScale="3x:0,0,0,0,0,0" capitalization="0" fontStrikeout="0" fontKerning="1" fontLetterSpacing="0" fontWordSpacing="0" allowHtml="0" fontItalic="0" useSubstitutions="0" fieldName=" 'FFH' || '\n' || "SN_NR"
 " fontFamily="Verdana" namedStyle="Bold">
|
||||
<text-buffer bufferColor="255,255,255,255" bufferSize="1" bufferNoFill="1" bufferJoinStyle="128" bufferBlendMode="0" bufferSizeMapUnitScale="3x:0,0,0,0,0,0" bufferSizeUnits="MM" bufferOpacity="1" bufferDraw="0"/>
|
||||
<text-mask maskEnabled="0" maskOpacity="1" maskJoinStyle="128" maskSizeUnits="MM" maskSize="1.5" maskedSymbolLayers="" maskType="0" maskSizeMapUnitScale="3x:0,0,0,0,0,0"/>
|
||||
<background shapeBorderColor="128,128,128,255" shapeOffsetUnit="MM" shapeType="0" shapeSizeMapUnitScale="3x:0,0,0,0,0,0" shapeSizeX="0" shapeRotation="0" shapeSizeUnit="MM" shapeSVGFile="" shapeRadiiMapUnitScale="3x:0,0,0,0,0,0" shapeRotationType="0" shapeBorderWidthUnit="MM" shapeRadiiUnit="MM" shapeOffsetMapUnitScale="3x:0,0,0,0,0,0" shapeBorderWidth="0" shapeOpacity="1" shapeDraw="0" shapeSizeType="0" shapeRadiiX="0" shapeSizeY="0" shapeBorderWidthMapUnitScale="3x:0,0,0,0,0,0" shapeRadiiY="0" shapeJoinStyle="64" shapeOffsetX="0" shapeOffsetY="0" shapeFillColor="255,255,255,255" shapeBlendMode="0">
|
||||
<symbol name="markerSymbol" clip_to_extent="1" force_rhr="0" alpha="1" type="marker">
|
||||
<layer class="SimpleMarker" enabled="1" locked="0" pass="0">
|
||||
<prop v="0" k="angle"/>
|
||||
<prop v="232,113,141,255" k="color"/>
|
||||
<prop v="1" k="horizontal_anchor_point"/>
|
||||
<prop v="bevel" k="joinstyle"/>
|
||||
<prop v="circle" k="name"/>
|
||||
<prop v="0,0" k="offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||
<prop v="MM" k="offset_unit"/>
|
||||
<prop v="35,35,35,255" k="outline_color"/>
|
||||
<prop v="solid" k="outline_style"/>
|
||||
<prop v="0" k="outline_width"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/>
|
||||
<prop v="MM" k="outline_width_unit"/>
|
||||
<prop v="diameter" k="scale_method"/>
|
||||
<prop v="2" k="size"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/>
|
||||
<prop v="MM" k="size_unit"/>
|
||||
<prop v="1" k="vertical_anchor_point"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</background>
|
||||
<shadow shadowRadiusMapUnitScale="3x:0,0,0,0,0,0" shadowRadiusAlphaOnly="0" shadowScale="100" shadowColor="0,0,0,255" shadowOffsetAngle="135" shadowOffsetDist="1" shadowRadius="1.5" shadowRadiusUnit="MM" shadowDraw="0" shadowOffsetMapUnitScale="3x:0,0,0,0,0,0" shadowOpacity="0.7" shadowUnder="0" shadowOffsetUnit="MM" shadowOffsetGlobal="1" shadowBlendMode="6"/>
|
||||
<dd_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</dd_properties>
|
||||
<substitutions/>
|
||||
</text-style>
|
||||
<text-format addDirectionSymbol="0" decimals="3" plussign="0" wrapChar="" placeDirectionSymbol="0" reverseDirectionSymbol="0" autoWrapLength="0" useMaxLineLengthForAutoWrap="1" rightDirectionSymbol=">" leftDirectionSymbol="<" formatNumbers="0" multilineAlign="3"/>
|
||||
<placement placement="5" lineAnchorPercent="0.5" fitInPolygonOnly="0" quadOffset="5" geometryGenerator="" offsetUnits="MM" layerType="PolygonGeometry" labelOffsetMapUnitScale="3x:0,0,0,0,0,0" xOffset="0" overrunDistanceUnit="MM" overrunDistanceMapUnitScale="3x:0,0,0,0,0,0" distMapUnitScale="3x:0,0,0,0,0,0" maxCurvedCharAngleIn="25" repeatDistanceUnits="MM" geometryGeneratorEnabled="0" centroidInside="1" preserveRotation="1" priority="5" overrunDistance="0" predefinedPositionOrder="TR,TL,BR,BL,R,L,TSR,BSR" yOffset="0" placementFlags="10" offsetType="0" centroidWhole="0" distUnits="MM" dist="0" maxCurvedCharAngleOut="-25" polygonPlacementFlags="2" repeatDistance="0" repeatDistanceMapUnitScale="3x:0,0,0,0,0,0" lineAnchorType="0" rotationAngle="0" geometryGeneratorType="PointGeometry"/>
|
||||
<rendering minFeatureSize="0" displayAll="0" obstacleFactor="1" mergeLines="0" fontLimitPixelSize="0" zIndex="0" scaleVisibility="0" labelPerPart="0" scaleMax="0" drawLabels="1" obstacleType="1" limitNumLabels="0" scaleMin="0" fontMaxPixelSize="10000" upsidedownLabels="0" fontMinPixelSize="3" obstacle="1" maxNumLabels="2000"/>
|
||||
<dd_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</dd_properties>
|
||||
<callout type="simple">
|
||||
<Option type="Map">
|
||||
<Option value="pole_of_inaccessibility" name="anchorPoint" type="QString"/>
|
||||
<Option name="ddProperties" type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
<Option value="false" name="drawToAllParts" type="bool"/>
|
||||
<Option value="0" name="enabled" type="QString"/>
|
||||
<Option value="point_on_exterior" name="labelAnchorPoint" type="QString"/>
|
||||
<Option value="<symbol name="symbol" clip_to_extent="1" force_rhr="0" alpha="1" type="line"><layer class="SimpleLine" enabled="1" locked="0" pass="0"><prop v="0" k="align_dash_pattern"/><prop v="square" k="capstyle"/><prop v="5;2" k="customdash"/><prop v="3x:0,0,0,0,0,0" k="customdash_map_unit_scale"/><prop v="MM" k="customdash_unit"/><prop v="0" k="dash_pattern_offset"/><prop v="3x:0,0,0,0,0,0" k="dash_pattern_offset_map_unit_scale"/><prop v="MM" k="dash_pattern_offset_unit"/><prop v="0" k="draw_inside_polygon"/><prop v="bevel" k="joinstyle"/><prop v="60,60,60,255" k="line_color"/><prop v="solid" k="line_style"/><prop v="0.3" k="line_width"/><prop v="MM" k="line_width_unit"/><prop v="0" k="offset"/><prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/><prop v="MM" k="offset_unit"/><prop v="0" k="ring_filter"/><prop v="0" k="tweak_dash_pattern_on_corners"/><prop v="0" k="use_custom_dash"/><prop v="3x:0,0,0,0,0,0" k="width_map_unit_scale"/><data_defined_properties><Option type="Map"><Option value="" name="name" type="QString"/><Option name="properties"/><Option value="collection" name="type" type="QString"/></Option></data_defined_properties></layer></symbol>" name="lineSymbol" type="QString"/>
|
||||
<Option value="0" name="minLength" type="double"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="minLengthMapUnitScale" type="QString"/>
|
||||
<Option value="MM" name="minLengthUnit" type="QString"/>
|
||||
<Option value="0" name="offsetFromAnchor" type="double"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offsetFromAnchorMapUnitScale" type="QString"/>
|
||||
<Option value="MM" name="offsetFromAnchorUnit" type="QString"/>
|
||||
<Option value="0" name="offsetFromLabel" type="double"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offsetFromLabelMapUnitScale" type="QString"/>
|
||||
<Option value="MM" name="offsetFromLabelUnit" type="QString"/>
|
||||
</Option>
|
||||
</callout>
|
||||
</settings>
|
||||
</labeling>
|
||||
<customproperties>
|
||||
<property key="embeddedWidgets/count" value="0"/>
|
||||
<property key="variableNames"/>
|
||||
<property key="variableValues"/>
|
||||
</customproperties>
|
||||
<blendMode>0</blendMode>
|
||||
<featureBlendMode>0</featureBlendMode>
|
||||
<layerOpacity>1</layerOpacity>
|
||||
<SingleCategoryDiagramRenderer diagramType="Histogram" attributeLegend="1">
|
||||
<DiagramCategory height="15" enabled="0" sizeScale="3x:0,0,0,0,0,0" direction="0" penColor="#000000" opacity="1" labelPlacementMethod="XHeight" lineSizeType="MM" diagramOrientation="Up" backgroundColor="#ffffff" spacing="5" maxScaleDenominator="1e+08" scaleDependency="Area" sizeType="MM" barWidth="5" scaleBasedVisibility="0" spacingUnit="MM" minScaleDenominator="0" spacingUnitScale="3x:0,0,0,0,0,0" minimumSize="0" rotationOffset="270" backgroundAlpha="255" showAxis="1" penWidth="0" width="15" lineSizeScale="3x:0,0,0,0,0,0" penAlpha="255">
|
||||
<fontProperties style="" description="MS Shell Dlg 2,8.25,-1,5,50,0,0,0,0,0"/>
|
||||
<axisSymbol>
|
||||
<symbol name="" clip_to_extent="1" force_rhr="0" alpha="1" type="line">
|
||||
<layer class="SimpleLine" enabled="1" locked="0" pass="0">
|
||||
<prop v="0" k="align_dash_pattern"/>
|
||||
<prop v="square" k="capstyle"/>
|
||||
<prop v="5;2" k="customdash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="customdash_map_unit_scale"/>
|
||||
<prop v="MM" k="customdash_unit"/>
|
||||
<prop v="0" k="dash_pattern_offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="dash_pattern_offset_map_unit_scale"/>
|
||||
<prop v="MM" k="dash_pattern_offset_unit"/>
|
||||
<prop v="0" k="draw_inside_polygon"/>
|
||||
<prop v="bevel" k="joinstyle"/>
|
||||
<prop v="35,35,35,255" k="line_color"/>
|
||||
<prop v="solid" k="line_style"/>
|
||||
<prop v="0.26" k="line_width"/>
|
||||
<prop v="MM" k="line_width_unit"/>
|
||||
<prop v="0" k="offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||
<prop v="MM" k="offset_unit"/>
|
||||
<prop v="0" k="ring_filter"/>
|
||||
<prop v="0" k="tweak_dash_pattern_on_corners"/>
|
||||
<prop v="0" k="use_custom_dash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="width_map_unit_scale"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</axisSymbol>
|
||||
</DiagramCategory>
|
||||
</SingleCategoryDiagramRenderer>
|
||||
<DiagramLayerSettings priority="0" placement="1" linePlacementFlags="18" obstacle="0" showAll="1" zIndex="0" dist="0">
|
||||
<properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</properties>
|
||||
</DiagramLayerSettings>
|
||||
<geometryOptions removeDuplicateNodes="0" geometryPrecision="0">
|
||||
<activeChecks/>
|
||||
<checkConfiguration type="Map">
|
||||
<Option name="QgsGeometryGapCheck" type="Map">
|
||||
<Option value="0" name="allowedGapsBuffer" type="double"/>
|
||||
<Option value="false" name="allowedGapsEnabled" type="bool"/>
|
||||
<Option value="" name="allowedGapsLayer" type="QString"/>
|
||||
</Option>
|
||||
</checkConfiguration>
|
||||
</geometryOptions>
|
||||
<legend type="default-vector"/>
|
||||
<referencedLayers/>
|
||||
<fieldConfiguration>
|
||||
<field configurationFlags="None" name="OBJECTID">
|
||||
<editWidget type="Range">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="AREA">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="PERIMETER">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="TEILFL_BEZ">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="INFO">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="TEILFL">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="EU_NR">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="SN_NR">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="GEBIET">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="MELDEFLAEC">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="LEGENDE">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ERFASSUNG">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="RECHTS_GL">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="SHAPE.AREA">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="SHAPE.LEN">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
</fieldConfiguration>
|
||||
<aliases>
|
||||
<alias name="" index="0" field="OBJECTID"/>
|
||||
<alias name="" index="1" field="AREA"/>
|
||||
<alias name="" index="2" field="PERIMETER"/>
|
||||
<alias name="" index="3" field="TEILFL_BEZ"/>
|
||||
<alias name="" index="4" field="INFO"/>
|
||||
<alias name="" index="5" field="TEILFL"/>
|
||||
<alias name="" index="6" field="EU_NR"/>
|
||||
<alias name="" index="7" field="SN_NR"/>
|
||||
<alias name="" index="8" field="GEBIET"/>
|
||||
<alias name="" index="9" field="MELDEFLAEC"/>
|
||||
<alias name="" index="10" field="LEGENDE"/>
|
||||
<alias name="" index="11" field="ERFASSUNG"/>
|
||||
<alias name="" index="12" field="RECHTS_GL"/>
|
||||
<alias name="" index="13" field="SHAPE.AREA"/>
|
||||
<alias name="" index="14" field="SHAPE.LEN"/>
|
||||
</aliases>
|
||||
<defaults>
|
||||
<default expression="" applyOnUpdate="0" field="OBJECTID"/>
|
||||
<default expression="" applyOnUpdate="0" field="AREA"/>
|
||||
<default expression="" applyOnUpdate="0" field="PERIMETER"/>
|
||||
<default expression="" applyOnUpdate="0" field="TEILFL_BEZ"/>
|
||||
<default expression="" applyOnUpdate="0" field="INFO"/>
|
||||
<default expression="" applyOnUpdate="0" field="TEILFL"/>
|
||||
<default expression="" applyOnUpdate="0" field="EU_NR"/>
|
||||
<default expression="" applyOnUpdate="0" field="SN_NR"/>
|
||||
<default expression="" applyOnUpdate="0" field="GEBIET"/>
|
||||
<default expression="" applyOnUpdate="0" field="MELDEFLAEC"/>
|
||||
<default expression="" applyOnUpdate="0" field="LEGENDE"/>
|
||||
<default expression="" applyOnUpdate="0" field="ERFASSUNG"/>
|
||||
<default expression="" applyOnUpdate="0" field="RECHTS_GL"/>
|
||||
<default expression="" applyOnUpdate="0" field="SHAPE.AREA"/>
|
||||
<default expression="" applyOnUpdate="0" field="SHAPE.LEN"/>
|
||||
</defaults>
|
||||
<constraints>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="OBJECTID"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="AREA"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="PERIMETER"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="TEILFL_BEZ"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="INFO"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="TEILFL"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="EU_NR"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="SN_NR"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="GEBIET"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="MELDEFLAEC"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="LEGENDE"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="ERFASSUNG"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="RECHTS_GL"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="SHAPE.AREA"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="SHAPE.LEN"/>
|
||||
</constraints>
|
||||
<constraintExpressions>
|
||||
<constraint exp="" desc="" field="OBJECTID"/>
|
||||
<constraint exp="" desc="" field="AREA"/>
|
||||
<constraint exp="" desc="" field="PERIMETER"/>
|
||||
<constraint exp="" desc="" field="TEILFL_BEZ"/>
|
||||
<constraint exp="" desc="" field="INFO"/>
|
||||
<constraint exp="" desc="" field="TEILFL"/>
|
||||
<constraint exp="" desc="" field="EU_NR"/>
|
||||
<constraint exp="" desc="" field="SN_NR"/>
|
||||
<constraint exp="" desc="" field="GEBIET"/>
|
||||
<constraint exp="" desc="" field="MELDEFLAEC"/>
|
||||
<constraint exp="" desc="" field="LEGENDE"/>
|
||||
<constraint exp="" desc="" field="ERFASSUNG"/>
|
||||
<constraint exp="" desc="" field="RECHTS_GL"/>
|
||||
<constraint exp="" desc="" field="SHAPE.AREA"/>
|
||||
<constraint exp="" desc="" field="SHAPE.LEN"/>
|
||||
</constraintExpressions>
|
||||
<expressionfields/>
|
||||
<attributeactions>
|
||||
<defaultAction key="Canvas" value="{00000000-0000-0000-0000-000000000000}"/>
|
||||
</attributeactions>
|
||||
<attributetableconfig sortExpression="" actionWidgetStyle="dropDown" sortOrder="0">
|
||||
<columns>
|
||||
<column name="OBJECTID" width="-1" hidden="0" type="field"/>
|
||||
<column name="AREA" width="-1" hidden="0" type="field"/>
|
||||
<column name="PERIMETER" width="-1" hidden="0" type="field"/>
|
||||
<column name="TEILFL_BEZ" width="-1" hidden="0" type="field"/>
|
||||
<column name="INFO" width="-1" hidden="0" type="field"/>
|
||||
<column name="TEILFL" width="-1" hidden="0" type="field"/>
|
||||
<column name="EU_NR" width="-1" hidden="0" type="field"/>
|
||||
<column name="SN_NR" width="-1" hidden="0" type="field"/>
|
||||
<column name="GEBIET" width="-1" hidden="0" type="field"/>
|
||||
<column name="MELDEFLAEC" width="-1" hidden="0" type="field"/>
|
||||
<column name="LEGENDE" width="-1" hidden="0" type="field"/>
|
||||
<column name="ERFASSUNG" width="-1" hidden="0" type="field"/>
|
||||
<column name="RECHTS_GL" width="-1" hidden="0" type="field"/>
|
||||
<column name="SHAPE.AREA" width="-1" hidden="0" type="field"/>
|
||||
<column name="SHAPE.LEN" width="-1" hidden="0" type="field"/>
|
||||
<column width="-1" hidden="1" type="actions"/>
|
||||
</columns>
|
||||
</attributetableconfig>
|
||||
<conditionalstyles>
|
||||
<rowstyles/>
|
||||
<fieldstyles/>
|
||||
</conditionalstyles>
|
||||
<storedexpressions/>
|
||||
<editform tolerant="1"></editform>
|
||||
<editforminit/>
|
||||
<editforminitcodesource>0</editforminitcodesource>
|
||||
<editforminitfilepath></editforminitfilepath>
|
||||
<editforminitcode><![CDATA[# -*- coding: utf-8 -*-
|
||||
"""
|
||||
QGIS forms can have a Python function that is called when the form is
|
||||
opened.
|
||||
|
||||
Use this function to add extra logic to your forms.
|
||||
|
||||
Enter the name of the function in the "Python Init function"
|
||||
field.
|
||||
An example follows:
|
||||
"""
|
||||
from qgis.PyQt.QtWidgets import QWidget
|
||||
|
||||
def my_form_open(dialog, layer, feature):
|
||||
geom = feature.geometry()
|
||||
control = dialog.findChild(QWidget, "MyLineEdit")
|
||||
]]></editforminitcode>
|
||||
<featformsuppress>0</featformsuppress>
|
||||
<editorlayout>generatedlayout</editorlayout>
|
||||
<editable>
|
||||
<field name="AREA" editable="1"/>
|
||||
<field name="ERFASSUNG" editable="1"/>
|
||||
<field name="EU_NR" editable="1"/>
|
||||
<field name="GEBIET" editable="1"/>
|
||||
<field name="INFO" editable="1"/>
|
||||
<field name="LEGENDE" editable="1"/>
|
||||
<field name="MELDEFLAEC" editable="1"/>
|
||||
<field name="OBJECTID" editable="1"/>
|
||||
<field name="PERIMETER" editable="1"/>
|
||||
<field name="RECHTS_GL" editable="1"/>
|
||||
<field name="SHAPE.AREA" editable="1"/>
|
||||
<field name="SHAPE.LEN" editable="1"/>
|
||||
<field name="SN_NR" editable="1"/>
|
||||
<field name="TEILFL" editable="1"/>
|
||||
<field name="TEILFL_BEZ" editable="1"/>
|
||||
</editable>
|
||||
<labelOnTop>
|
||||
<field name="AREA" labelOnTop="0"/>
|
||||
<field name="ERFASSUNG" labelOnTop="0"/>
|
||||
<field name="EU_NR" labelOnTop="0"/>
|
||||
<field name="GEBIET" labelOnTop="0"/>
|
||||
<field name="INFO" labelOnTop="0"/>
|
||||
<field name="LEGENDE" labelOnTop="0"/>
|
||||
<field name="MELDEFLAEC" labelOnTop="0"/>
|
||||
<field name="OBJECTID" labelOnTop="0"/>
|
||||
<field name="PERIMETER" labelOnTop="0"/>
|
||||
<field name="RECHTS_GL" labelOnTop="0"/>
|
||||
<field name="SHAPE.AREA" labelOnTop="0"/>
|
||||
<field name="SHAPE.LEN" labelOnTop="0"/>
|
||||
<field name="SN_NR" labelOnTop="0"/>
|
||||
<field name="TEILFL" labelOnTop="0"/>
|
||||
<field name="TEILFL_BEZ" labelOnTop="0"/>
|
||||
</labelOnTop>
|
||||
<dataDefinedFieldProperties/>
|
||||
<widgets/>
|
||||
<previewExpression>"OBJECTID"</previewExpression>
|
||||
<mapTip></mapTip>
|
||||
<layerGeometryType>2</layerGeometryType>
|
||||
</qgis>
|
||||
536
assets/GIS_P41_60100A_SPA.qml
Normal file
536
assets/GIS_P41_60100A_SPA.qml
Normal file
@@ -0,0 +1,536 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis simplifyAlgorithm="0" simplifyDrawingTol="1" styleCategories="AllStyleCategories" labelsEnabled="1" simplifyLocal="1" version="3.16.0-Hannover" simplifyMaxScale="1" minScale="100000000" readOnly="0" hasScaleBasedVisibilityFlag="0" maxScale="0" simplifyDrawingHints="1">
|
||||
<flags>
|
||||
<Identifiable>1</Identifiable>
|
||||
<Removable>1</Removable>
|
||||
<Searchable>1</Searchable>
|
||||
</flags>
|
||||
<temporal fixedDuration="0" startField="" enabled="0" durationUnit="min" accumulate="0" mode="0" endField="" startExpression="" endExpression="" durationField="">
|
||||
<fixedRange>
|
||||
<start></start>
|
||||
<end></end>
|
||||
</fixedRange>
|
||||
</temporal>
|
||||
<renderer-v2 enableorderby="0" symbollevels="0" forceraster="0" type="singleSymbol">
|
||||
<symbols>
|
||||
<symbol name="0" clip_to_extent="1" force_rhr="0" alpha="1" type="fill">
|
||||
<layer class="LinePatternFill" enabled="1" locked="0" pass="0">
|
||||
<prop v="-45" k="angle"/>
|
||||
<prop v="213,180,60,255" k="color"/>
|
||||
<prop v="25" k="distance"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="distance_map_unit_scale"/>
|
||||
<prop v="Pixel" k="distance_unit"/>
|
||||
<prop v="0.26" k="line_width"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="line_width_map_unit_scale"/>
|
||||
<prop v="MM" k="line_width_unit"/>
|
||||
<prop v="0" k="offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||
<prop v="MM" k="offset_unit"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/>
|
||||
<prop v="MM" k="outline_width_unit"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<symbol name="@0@0" clip_to_extent="1" force_rhr="0" alpha="1" type="line">
|
||||
<layer class="SimpleLine" enabled="1" locked="0" pass="0">
|
||||
<prop v="0" k="align_dash_pattern"/>
|
||||
<prop v="square" k="capstyle"/>
|
||||
<prop v="5;2" k="customdash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="customdash_map_unit_scale"/>
|
||||
<prop v="Pixel" k="customdash_unit"/>
|
||||
<prop v="0" k="dash_pattern_offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="dash_pattern_offset_map_unit_scale"/>
|
||||
<prop v="MM" k="dash_pattern_offset_unit"/>
|
||||
<prop v="0" k="draw_inside_polygon"/>
|
||||
<prop v="bevel" k="joinstyle"/>
|
||||
<prop v="103,229,0,255" k="line_color"/>
|
||||
<prop v="solid" k="line_style"/>
|
||||
<prop v="2" k="line_width"/>
|
||||
<prop v="Pixel" k="line_width_unit"/>
|
||||
<prop v="0" k="offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||
<prop v="Pixel" k="offset_unit"/>
|
||||
<prop v="0" k="ring_filter"/>
|
||||
<prop v="0" k="tweak_dash_pattern_on_corners"/>
|
||||
<prop v="0" k="use_custom_dash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="width_map_unit_scale"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</layer>
|
||||
<layer class="LinePatternFill" enabled="1" locked="0" pass="0">
|
||||
<prop v="45" k="angle"/>
|
||||
<prop v="213,180,60,255" k="color"/>
|
||||
<prop v="25" k="distance"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="distance_map_unit_scale"/>
|
||||
<prop v="Pixel" k="distance_unit"/>
|
||||
<prop v="0.26" k="line_width"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="line_width_map_unit_scale"/>
|
||||
<prop v="MM" k="line_width_unit"/>
|
||||
<prop v="0" k="offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||
<prop v="MM" k="offset_unit"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/>
|
||||
<prop v="MM" k="outline_width_unit"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<symbol name="@0@1" clip_to_extent="1" force_rhr="0" alpha="1" type="line">
|
||||
<layer class="SimpleLine" enabled="1" locked="0" pass="0">
|
||||
<prop v="0" k="align_dash_pattern"/>
|
||||
<prop v="square" k="capstyle"/>
|
||||
<prop v="5;2" k="customdash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="customdash_map_unit_scale"/>
|
||||
<prop v="Pixel" k="customdash_unit"/>
|
||||
<prop v="0" k="dash_pattern_offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="dash_pattern_offset_map_unit_scale"/>
|
||||
<prop v="MM" k="dash_pattern_offset_unit"/>
|
||||
<prop v="0" k="draw_inside_polygon"/>
|
||||
<prop v="bevel" k="joinstyle"/>
|
||||
<prop v="103,229,0,255" k="line_color"/>
|
||||
<prop v="solid" k="line_style"/>
|
||||
<prop v="2" k="line_width"/>
|
||||
<prop v="Pixel" k="line_width_unit"/>
|
||||
<prop v="0" k="offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||
<prop v="Pixel" k="offset_unit"/>
|
||||
<prop v="0" k="ring_filter"/>
|
||||
<prop v="0" k="tweak_dash_pattern_on_corners"/>
|
||||
<prop v="0" k="use_custom_dash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="width_map_unit_scale"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</layer>
|
||||
<layer class="SimpleLine" enabled="1" locked="0" pass="0">
|
||||
<prop v="0" k="align_dash_pattern"/>
|
||||
<prop v="square" k="capstyle"/>
|
||||
<prop v="5;2" k="customdash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="customdash_map_unit_scale"/>
|
||||
<prop v="MM" k="customdash_unit"/>
|
||||
<prop v="0" k="dash_pattern_offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="dash_pattern_offset_map_unit_scale"/>
|
||||
<prop v="MM" k="dash_pattern_offset_unit"/>
|
||||
<prop v="0" k="draw_inside_polygon"/>
|
||||
<prop v="bevel" k="joinstyle"/>
|
||||
<prop v="0,168,0,255" k="line_color"/>
|
||||
<prop v="solid" k="line_style"/>
|
||||
<prop v="2" k="line_width"/>
|
||||
<prop v="Pixel" k="line_width_unit"/>
|
||||
<prop v="0" k="offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||
<prop v="MM" k="offset_unit"/>
|
||||
<prop v="0" k="ring_filter"/>
|
||||
<prop v="0" k="tweak_dash_pattern_on_corners"/>
|
||||
<prop v="0" k="use_custom_dash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="width_map_unit_scale"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<rotation/>
|
||||
<sizescale/>
|
||||
</renderer-v2>
|
||||
<labeling type="simple">
|
||||
<settings calloutType="simple">
|
||||
<text-style fontWeight="75" fontSizeUnit="Pixel" fontSize="15" fontUnderline="0" previewBkgrdColor="255,255,255,255" multilineHeight="1" isExpression="1" textOpacity="1" textOrientation="horizontal" textColor="0,0,0,255" blendMode="0" fontSizeMapUnitScale="3x:0,0,0,0,0,0" capitalization="0" fontStrikeout="0" fontKerning="1" fontLetterSpacing="0" fontWordSpacing="0" allowHtml="0" fontItalic="0" useSubstitutions="0" fieldName="'SPA' || '\n' || "LANDINT_NR"" fontFamily="Verdana" namedStyle="Bold">
|
||||
<text-buffer bufferColor="255,255,255,255" bufferSize="1" bufferNoFill="1" bufferJoinStyle="128" bufferBlendMode="0" bufferSizeMapUnitScale="3x:0,0,0,0,0,0" bufferSizeUnits="MM" bufferOpacity="1" bufferDraw="0"/>
|
||||
<text-mask maskEnabled="0" maskOpacity="1" maskJoinStyle="128" maskSizeUnits="MM" maskSize="1.5" maskedSymbolLayers="" maskType="0" maskSizeMapUnitScale="3x:0,0,0,0,0,0"/>
|
||||
<background shapeBorderColor="128,128,128,255" shapeOffsetUnit="MM" shapeType="0" shapeSizeMapUnitScale="3x:0,0,0,0,0,0" shapeSizeX="0" shapeRotation="0" shapeSizeUnit="MM" shapeSVGFile="" shapeRadiiMapUnitScale="3x:0,0,0,0,0,0" shapeRotationType="0" shapeBorderWidthUnit="MM" shapeRadiiUnit="MM" shapeOffsetMapUnitScale="3x:0,0,0,0,0,0" shapeBorderWidth="0" shapeOpacity="1" shapeDraw="0" shapeSizeType="0" shapeRadiiX="0" shapeSizeY="0" shapeBorderWidthMapUnitScale="3x:0,0,0,0,0,0" shapeRadiiY="0" shapeJoinStyle="64" shapeOffsetX="0" shapeOffsetY="0" shapeFillColor="255,255,255,255" shapeBlendMode="0">
|
||||
<symbol name="markerSymbol" clip_to_extent="1" force_rhr="0" alpha="1" type="marker">
|
||||
<layer class="SimpleMarker" enabled="1" locked="0" pass="0">
|
||||
<prop v="0" k="angle"/>
|
||||
<prop v="243,166,178,255" k="color"/>
|
||||
<prop v="1" k="horizontal_anchor_point"/>
|
||||
<prop v="bevel" k="joinstyle"/>
|
||||
<prop v="circle" k="name"/>
|
||||
<prop v="0,0" k="offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||
<prop v="MM" k="offset_unit"/>
|
||||
<prop v="35,35,35,255" k="outline_color"/>
|
||||
<prop v="solid" k="outline_style"/>
|
||||
<prop v="0" k="outline_width"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/>
|
||||
<prop v="MM" k="outline_width_unit"/>
|
||||
<prop v="diameter" k="scale_method"/>
|
||||
<prop v="2" k="size"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/>
|
||||
<prop v="MM" k="size_unit"/>
|
||||
<prop v="1" k="vertical_anchor_point"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</background>
|
||||
<shadow shadowRadiusMapUnitScale="3x:0,0,0,0,0,0" shadowRadiusAlphaOnly="0" shadowScale="100" shadowColor="0,0,0,255" shadowOffsetAngle="135" shadowOffsetDist="1" shadowRadius="1.5" shadowRadiusUnit="MM" shadowDraw="0" shadowOffsetMapUnitScale="3x:0,0,0,0,0,0" shadowOpacity="0.7" shadowUnder="0" shadowOffsetUnit="MM" shadowOffsetGlobal="1" shadowBlendMode="6"/>
|
||||
<dd_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</dd_properties>
|
||||
<substitutions/>
|
||||
</text-style>
|
||||
<text-format addDirectionSymbol="0" decimals="3" plussign="0" wrapChar="" placeDirectionSymbol="0" reverseDirectionSymbol="0" autoWrapLength="0" useMaxLineLengthForAutoWrap="1" rightDirectionSymbol=">" leftDirectionSymbol="<" formatNumbers="0" multilineAlign="3"/>
|
||||
<placement placement="5" lineAnchorPercent="0.5" fitInPolygonOnly="0" quadOffset="4" geometryGenerator="" offsetUnits="MM" layerType="PolygonGeometry" labelOffsetMapUnitScale="3x:0,0,0,0,0,0" xOffset="0" overrunDistanceUnit="MM" overrunDistanceMapUnitScale="3x:0,0,0,0,0,0" distMapUnitScale="3x:0,0,0,0,0,0" maxCurvedCharAngleIn="25" repeatDistanceUnits="MM" geometryGeneratorEnabled="0" centroidInside="1" preserveRotation="1" priority="5" overrunDistance="0" predefinedPositionOrder="TR,TL,BR,BL,R,L,TSR,BSR" yOffset="0" placementFlags="10" offsetType="0" centroidWhole="0" distUnits="MM" dist="0" maxCurvedCharAngleOut="-25" polygonPlacementFlags="2" repeatDistance="0" repeatDistanceMapUnitScale="3x:0,0,0,0,0,0" lineAnchorType="0" rotationAngle="0" geometryGeneratorType="PointGeometry"/>
|
||||
<rendering minFeatureSize="0" displayAll="0" obstacleFactor="1" mergeLines="0" fontLimitPixelSize="0" zIndex="0" scaleVisibility="0" labelPerPart="0" scaleMax="0" drawLabels="1" obstacleType="1" limitNumLabels="0" scaleMin="0" fontMaxPixelSize="10000" upsidedownLabels="0" fontMinPixelSize="3" obstacle="1" maxNumLabels="2000"/>
|
||||
<dd_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</dd_properties>
|
||||
<callout type="simple">
|
||||
<Option type="Map">
|
||||
<Option value="pole_of_inaccessibility" name="anchorPoint" type="QString"/>
|
||||
<Option name="ddProperties" type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
<Option value="false" name="drawToAllParts" type="bool"/>
|
||||
<Option value="0" name="enabled" type="QString"/>
|
||||
<Option value="point_on_exterior" name="labelAnchorPoint" type="QString"/>
|
||||
<Option value="<symbol name="symbol" clip_to_extent="1" force_rhr="0" alpha="1" type="line"><layer class="SimpleLine" enabled="1" locked="0" pass="0"><prop v="0" k="align_dash_pattern"/><prop v="square" k="capstyle"/><prop v="5;2" k="customdash"/><prop v="3x:0,0,0,0,0,0" k="customdash_map_unit_scale"/><prop v="MM" k="customdash_unit"/><prop v="0" k="dash_pattern_offset"/><prop v="3x:0,0,0,0,0,0" k="dash_pattern_offset_map_unit_scale"/><prop v="MM" k="dash_pattern_offset_unit"/><prop v="0" k="draw_inside_polygon"/><prop v="bevel" k="joinstyle"/><prop v="60,60,60,255" k="line_color"/><prop v="solid" k="line_style"/><prop v="0.3" k="line_width"/><prop v="MM" k="line_width_unit"/><prop v="0" k="offset"/><prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/><prop v="MM" k="offset_unit"/><prop v="0" k="ring_filter"/><prop v="0" k="tweak_dash_pattern_on_corners"/><prop v="0" k="use_custom_dash"/><prop v="3x:0,0,0,0,0,0" k="width_map_unit_scale"/><data_defined_properties><Option type="Map"><Option value="" name="name" type="QString"/><Option name="properties"/><Option value="collection" name="type" type="QString"/></Option></data_defined_properties></layer></symbol>" name="lineSymbol" type="QString"/>
|
||||
<Option value="0" name="minLength" type="double"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="minLengthMapUnitScale" type="QString"/>
|
||||
<Option value="MM" name="minLengthUnit" type="QString"/>
|
||||
<Option value="0" name="offsetFromAnchor" type="double"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offsetFromAnchorMapUnitScale" type="QString"/>
|
||||
<Option value="MM" name="offsetFromAnchorUnit" type="QString"/>
|
||||
<Option value="0" name="offsetFromLabel" type="double"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offsetFromLabelMapUnitScale" type="QString"/>
|
||||
<Option value="MM" name="offsetFromLabelUnit" type="QString"/>
|
||||
</Option>
|
||||
</callout>
|
||||
</settings>
|
||||
</labeling>
|
||||
<customproperties>
|
||||
<property key="dualview/previewExpressions">
|
||||
<value>"OBJECTID_1"</value>
|
||||
</property>
|
||||
<property key="embeddedWidgets/count" value="0"/>
|
||||
<property key="variableNames"/>
|
||||
<property key="variableValues"/>
|
||||
</customproperties>
|
||||
<blendMode>0</blendMode>
|
||||
<featureBlendMode>0</featureBlendMode>
|
||||
<layerOpacity>1</layerOpacity>
|
||||
<SingleCategoryDiagramRenderer diagramType="Histogram" attributeLegend="1">
|
||||
<DiagramCategory height="15" enabled="0" sizeScale="3x:0,0,0,0,0,0" direction="0" penColor="#000000" opacity="1" labelPlacementMethod="XHeight" lineSizeType="MM" diagramOrientation="Up" backgroundColor="#ffffff" spacing="5" maxScaleDenominator="1e+08" scaleDependency="Area" sizeType="MM" barWidth="5" scaleBasedVisibility="0" spacingUnit="MM" minScaleDenominator="0" spacingUnitScale="3x:0,0,0,0,0,0" minimumSize="0" rotationOffset="270" backgroundAlpha="255" showAxis="1" penWidth="0" width="15" lineSizeScale="3x:0,0,0,0,0,0" penAlpha="255">
|
||||
<fontProperties style="" description="MS Shell Dlg 2,8.25,-1,5,50,0,0,0,0,0"/>
|
||||
<axisSymbol>
|
||||
<symbol name="" clip_to_extent="1" force_rhr="0" alpha="1" type="line">
|
||||
<layer class="SimpleLine" enabled="1" locked="0" pass="0">
|
||||
<prop v="0" k="align_dash_pattern"/>
|
||||
<prop v="square" k="capstyle"/>
|
||||
<prop v="5;2" k="customdash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="customdash_map_unit_scale"/>
|
||||
<prop v="MM" k="customdash_unit"/>
|
||||
<prop v="0" k="dash_pattern_offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="dash_pattern_offset_map_unit_scale"/>
|
||||
<prop v="MM" k="dash_pattern_offset_unit"/>
|
||||
<prop v="0" k="draw_inside_polygon"/>
|
||||
<prop v="bevel" k="joinstyle"/>
|
||||
<prop v="35,35,35,255" k="line_color"/>
|
||||
<prop v="solid" k="line_style"/>
|
||||
<prop v="0.26" k="line_width"/>
|
||||
<prop v="MM" k="line_width_unit"/>
|
||||
<prop v="0" k="offset"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||
<prop v="MM" k="offset_unit"/>
|
||||
<prop v="0" k="ring_filter"/>
|
||||
<prop v="0" k="tweak_dash_pattern_on_corners"/>
|
||||
<prop v="0" k="use_custom_dash"/>
|
||||
<prop v="3x:0,0,0,0,0,0" k="width_map_unit_scale"/>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</axisSymbol>
|
||||
</DiagramCategory>
|
||||
</SingleCategoryDiagramRenderer>
|
||||
<DiagramLayerSettings priority="0" placement="1" linePlacementFlags="18" obstacle="0" showAll="1" zIndex="0" dist="0">
|
||||
<properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</properties>
|
||||
</DiagramLayerSettings>
|
||||
<geometryOptions removeDuplicateNodes="0" geometryPrecision="0">
|
||||
<activeChecks/>
|
||||
<checkConfiguration type="Map">
|
||||
<Option name="QgsGeometryGapCheck" type="Map">
|
||||
<Option value="0" name="allowedGapsBuffer" type="double"/>
|
||||
<Option value="false" name="allowedGapsEnabled" type="bool"/>
|
||||
<Option value="" name="allowedGapsLayer" type="QString"/>
|
||||
</Option>
|
||||
</checkConfiguration>
|
||||
</geometryOptions>
|
||||
<legend type="default-vector"/>
|
||||
<referencedLayers/>
|
||||
<fieldConfiguration>
|
||||
<field configurationFlags="None" name="OBJECTID_1">
|
||||
<editWidget type="Range">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="OBJECTID">
|
||||
<editWidget type="Range">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="AREA">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="PERIMETER">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="GEBIET">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="LANDINT_NR">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="ERFASSUNG">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="INFO">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="EU_NR">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="RECHTS_GL">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="SHAPE.AREA">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
<field configurationFlags="None" name="SHAPE.LEN">
|
||||
<editWidget type="TextEdit">
|
||||
<config>
|
||||
<Option/>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
</fieldConfiguration>
|
||||
<aliases>
|
||||
<alias name="" index="0" field="OBJECTID_1"/>
|
||||
<alias name="" index="1" field="OBJECTID"/>
|
||||
<alias name="" index="2" field="AREA"/>
|
||||
<alias name="" index="3" field="PERIMETER"/>
|
||||
<alias name="" index="4" field="GEBIET"/>
|
||||
<alias name="" index="5" field="LANDINT_NR"/>
|
||||
<alias name="" index="6" field="ERFASSUNG"/>
|
||||
<alias name="" index="7" field="INFO"/>
|
||||
<alias name="" index="8" field="EU_NR"/>
|
||||
<alias name="" index="9" field="RECHTS_GL"/>
|
||||
<alias name="" index="10" field="SHAPE.AREA"/>
|
||||
<alias name="" index="11" field="SHAPE.LEN"/>
|
||||
</aliases>
|
||||
<defaults>
|
||||
<default expression="" applyOnUpdate="0" field="OBJECTID_1"/>
|
||||
<default expression="" applyOnUpdate="0" field="OBJECTID"/>
|
||||
<default expression="" applyOnUpdate="0" field="AREA"/>
|
||||
<default expression="" applyOnUpdate="0" field="PERIMETER"/>
|
||||
<default expression="" applyOnUpdate="0" field="GEBIET"/>
|
||||
<default expression="" applyOnUpdate="0" field="LANDINT_NR"/>
|
||||
<default expression="" applyOnUpdate="0" field="ERFASSUNG"/>
|
||||
<default expression="" applyOnUpdate="0" field="INFO"/>
|
||||
<default expression="" applyOnUpdate="0" field="EU_NR"/>
|
||||
<default expression="" applyOnUpdate="0" field="RECHTS_GL"/>
|
||||
<default expression="" applyOnUpdate="0" field="SHAPE.AREA"/>
|
||||
<default expression="" applyOnUpdate="0" field="SHAPE.LEN"/>
|
||||
</defaults>
|
||||
<constraints>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="OBJECTID_1"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="OBJECTID"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="AREA"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="PERIMETER"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="GEBIET"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="LANDINT_NR"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="ERFASSUNG"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="INFO"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="EU_NR"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="RECHTS_GL"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="SHAPE.AREA"/>
|
||||
<constraint exp_strength="0" unique_strength="0" notnull_strength="0" constraints="0" field="SHAPE.LEN"/>
|
||||
</constraints>
|
||||
<constraintExpressions>
|
||||
<constraint exp="" desc="" field="OBJECTID_1"/>
|
||||
<constraint exp="" desc="" field="OBJECTID"/>
|
||||
<constraint exp="" desc="" field="AREA"/>
|
||||
<constraint exp="" desc="" field="PERIMETER"/>
|
||||
<constraint exp="" desc="" field="GEBIET"/>
|
||||
<constraint exp="" desc="" field="LANDINT_NR"/>
|
||||
<constraint exp="" desc="" field="ERFASSUNG"/>
|
||||
<constraint exp="" desc="" field="INFO"/>
|
||||
<constraint exp="" desc="" field="EU_NR"/>
|
||||
<constraint exp="" desc="" field="RECHTS_GL"/>
|
||||
<constraint exp="" desc="" field="SHAPE.AREA"/>
|
||||
<constraint exp="" desc="" field="SHAPE.LEN"/>
|
||||
</constraintExpressions>
|
||||
<expressionfields/>
|
||||
<attributeactions>
|
||||
<defaultAction key="Canvas" value="{00000000-0000-0000-0000-000000000000}"/>
|
||||
</attributeactions>
|
||||
<attributetableconfig sortExpression="" actionWidgetStyle="dropDown" sortOrder="0">
|
||||
<columns>
|
||||
<column name="OBJECTID_1" width="-1" hidden="0" type="field"/>
|
||||
<column name="OBJECTID" width="-1" hidden="0" type="field"/>
|
||||
<column name="AREA" width="-1" hidden="0" type="field"/>
|
||||
<column name="PERIMETER" width="-1" hidden="0" type="field"/>
|
||||
<column name="GEBIET" width="-1" hidden="0" type="field"/>
|
||||
<column name="LANDINT_NR" width="-1" hidden="0" type="field"/>
|
||||
<column name="ERFASSUNG" width="-1" hidden="0" type="field"/>
|
||||
<column name="INFO" width="-1" hidden="0" type="field"/>
|
||||
<column name="EU_NR" width="-1" hidden="0" type="field"/>
|
||||
<column name="RECHTS_GL" width="-1" hidden="0" type="field"/>
|
||||
<column name="SHAPE.AREA" width="-1" hidden="0" type="field"/>
|
||||
<column name="SHAPE.LEN" width="-1" hidden="0" type="field"/>
|
||||
<column width="-1" hidden="1" type="actions"/>
|
||||
</columns>
|
||||
</attributetableconfig>
|
||||
<conditionalstyles>
|
||||
<rowstyles/>
|
||||
<fieldstyles/>
|
||||
</conditionalstyles>
|
||||
<storedexpressions/>
|
||||
<editform tolerant="1"></editform>
|
||||
<editforminit/>
|
||||
<editforminitcodesource>0</editforminitcodesource>
|
||||
<editforminitfilepath></editforminitfilepath>
|
||||
<editforminitcode><![CDATA[# -*- coding: utf-8 -*-
|
||||
"""
|
||||
QGIS forms can have a Python function that is called when the form is
|
||||
opened.
|
||||
|
||||
Use this function to add extra logic to your forms.
|
||||
|
||||
Enter the name of the function in the "Python Init function"
|
||||
field.
|
||||
An example follows:
|
||||
"""
|
||||
from qgis.PyQt.QtWidgets import QWidget
|
||||
|
||||
def my_form_open(dialog, layer, feature):
|
||||
geom = feature.geometry()
|
||||
control = dialog.findChild(QWidget, "MyLineEdit")
|
||||
]]></editforminitcode>
|
||||
<featformsuppress>0</featformsuppress>
|
||||
<editorlayout>generatedlayout</editorlayout>
|
||||
<editable>
|
||||
<field name="AREA" editable="1"/>
|
||||
<field name="ERFASSUNG" editable="1"/>
|
||||
<field name="EU_NR" editable="1"/>
|
||||
<field name="GEBIET" editable="1"/>
|
||||
<field name="INFO" editable="1"/>
|
||||
<field name="LANDINT_NR" editable="1"/>
|
||||
<field name="OBJECTID" editable="1"/>
|
||||
<field name="OBJECTID_1" editable="1"/>
|
||||
<field name="PERIMETER" editable="1"/>
|
||||
<field name="RECHTS_GL" editable="1"/>
|
||||
<field name="SHAPE.AREA" editable="1"/>
|
||||
<field name="SHAPE.LEN" editable="1"/>
|
||||
</editable>
|
||||
<labelOnTop>
|
||||
<field name="AREA" labelOnTop="0"/>
|
||||
<field name="ERFASSUNG" labelOnTop="0"/>
|
||||
<field name="EU_NR" labelOnTop="0"/>
|
||||
<field name="GEBIET" labelOnTop="0"/>
|
||||
<field name="INFO" labelOnTop="0"/>
|
||||
<field name="LANDINT_NR" labelOnTop="0"/>
|
||||
<field name="OBJECTID" labelOnTop="0"/>
|
||||
<field name="OBJECTID_1" labelOnTop="0"/>
|
||||
<field name="PERIMETER" labelOnTop="0"/>
|
||||
<field name="RECHTS_GL" labelOnTop="0"/>
|
||||
<field name="SHAPE.AREA" labelOnTop="0"/>
|
||||
<field name="SHAPE.LEN" labelOnTop="0"/>
|
||||
</labelOnTop>
|
||||
<dataDefinedFieldProperties/>
|
||||
<widgets/>
|
||||
<previewExpression>"OBJECTID_1"</previewExpression>
|
||||
<mapTip></mapTip>
|
||||
<layerGeometryType>2</layerGeometryType>
|
||||
</qgis>
|
||||
86
assets/Gebietskulisse_pvfvo.qml
Normal file
86
assets/Gebietskulisse_pvfvo.qml
Normal file
@@ -0,0 +1,86 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis labelsEnabled="0" version="3.40.7-Bratislava" styleCategories="Symbology|Labeling">
|
||||
<renderer-v2 referencescale="-1" type="singleSymbol" enableorderby="0" symbollevels="0" forceraster="0">
|
||||
<symbols>
|
||||
<symbol force_rhr="0" alpha="1" name="0" frame_rate="10" is_animated="0" type="fill" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer enabled="1" id="{51b633ae-19c8-494c-9f61-fed6d0658609}" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale" type="QString"/>
|
||||
<Option value="0,170,127,255,rgb:0,0.66666666666666663,0.49803921568627452,1" name="color" type="QString"/>
|
||||
<Option value="bevel" name="joinstyle" type="QString"/>
|
||||
<Option value="0,0" name="offset" type="QString"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offset_map_unit_scale" type="QString"/>
|
||||
<Option value="MM" name="offset_unit" type="QString"/>
|
||||
<Option value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1" name="outline_color" type="QString"/>
|
||||
<Option value="solid" name="outline_style" type="QString"/>
|
||||
<Option value="0.26" name="outline_width" type="QString"/>
|
||||
<Option value="MM" name="outline_width_unit" type="QString"/>
|
||||
<Option value="solid" name="style" type="QString"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<rotation/>
|
||||
<sizescale/>
|
||||
<data-defined-properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data-defined-properties>
|
||||
</renderer-v2>
|
||||
<selection mode="Default">
|
||||
<selectionColor invalid="1"/>
|
||||
<selectionSymbol>
|
||||
<symbol force_rhr="0" alpha="1" name="" frame_rate="10" is_animated="0" type="fill" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer enabled="1" id="{196362a1-d1f5-42ac-83e1-fde17aedfc32}" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale" type="QString"/>
|
||||
<Option value="0,0,255,255,rgb:0,0,1,1" name="color" type="QString"/>
|
||||
<Option value="bevel" name="joinstyle" type="QString"/>
|
||||
<Option value="0,0" name="offset" type="QString"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offset_map_unit_scale" type="QString"/>
|
||||
<Option value="MM" name="offset_unit" type="QString"/>
|
||||
<Option value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1" name="outline_color" type="QString"/>
|
||||
<Option value="solid" name="outline_style" type="QString"/>
|
||||
<Option value="0.26" name="outline_width" type="QString"/>
|
||||
<Option value="MM" name="outline_width_unit" type="QString"/>
|
||||
<Option value="solid" name="style" type="QString"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</selectionSymbol>
|
||||
</selection>
|
||||
<blendMode>0</blendMode>
|
||||
<featureBlendMode>0</featureBlendMode>
|
||||
<layerGeometryType>2</layerGeometryType>
|
||||
</qgis>
|
||||
86
assets/Haupteinzugsgebiete.qml
Normal file
86
assets/Haupteinzugsgebiete.qml
Normal file
@@ -0,0 +1,86 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis labelsEnabled="0" version="3.40.7-Bratislava" styleCategories="Symbology|Labeling">
|
||||
<renderer-v2 referencescale="-1" type="singleSymbol" enableorderby="0" symbollevels="0" forceraster="0">
|
||||
<symbols>
|
||||
<symbol force_rhr="0" alpha="1" name="0" frame_rate="10" is_animated="0" type="fill" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer enabled="1" id="{aee1670c-f16b-4ce8-9910-bc0fd065e8e8}" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale" type="QString"/>
|
||||
<Option value="231,113,72,255,rgb:0.90588235294117647,0.44313725490196076,0.28235294117647058,1" name="color" type="QString"/>
|
||||
<Option value="bevel" name="joinstyle" type="QString"/>
|
||||
<Option value="0,0" name="offset" type="QString"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offset_map_unit_scale" type="QString"/>
|
||||
<Option value="MM" name="offset_unit" type="QString"/>
|
||||
<Option value="64,74,255,255,rgb:0.25098039215686274,0.29019607843137257,1,1" name="outline_color" type="QString"/>
|
||||
<Option value="dash" name="outline_style" type="QString"/>
|
||||
<Option value="0.26" name="outline_width" type="QString"/>
|
||||
<Option value="MM" name="outline_width_unit" type="QString"/>
|
||||
<Option value="no" name="style" type="QString"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<rotation/>
|
||||
<sizescale/>
|
||||
<data-defined-properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data-defined-properties>
|
||||
</renderer-v2>
|
||||
<selection mode="Default">
|
||||
<selectionColor invalid="1"/>
|
||||
<selectionSymbol>
|
||||
<symbol force_rhr="0" alpha="1" name="" frame_rate="10" is_animated="0" type="fill" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer enabled="1" id="{5f015e2e-554f-4515-ab45-c44905dfe509}" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale" type="QString"/>
|
||||
<Option value="0,0,255,255,rgb:0,0,1,1" name="color" type="QString"/>
|
||||
<Option value="bevel" name="joinstyle" type="QString"/>
|
||||
<Option value="0,0" name="offset" type="QString"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offset_map_unit_scale" type="QString"/>
|
||||
<Option value="MM" name="offset_unit" type="QString"/>
|
||||
<Option value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1" name="outline_color" type="QString"/>
|
||||
<Option value="solid" name="outline_style" type="QString"/>
|
||||
<Option value="0.26" name="outline_width" type="QString"/>
|
||||
<Option value="MM" name="outline_width_unit" type="QString"/>
|
||||
<Option value="solid" name="style" type="QString"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</selectionSymbol>
|
||||
</selection>
|
||||
<blendMode>0</blendMode>
|
||||
<featureBlendMode>0</featureBlendMode>
|
||||
<layerGeometryType>2</layerGeometryType>
|
||||
</qgis>
|
||||
BIN
assets/Linkliste.xlsx
Normal file
BIN
assets/Linkliste.xlsx
Normal file
Binary file not shown.
86
assets/Standgewässer.qml
Normal file
86
assets/Standgewässer.qml
Normal file
@@ -0,0 +1,86 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis labelsEnabled="0" version="3.40.7-Bratislava" styleCategories="Symbology|Labeling">
|
||||
<renderer-v2 referencescale="-1" type="singleSymbol" enableorderby="0" symbollevels="0" forceraster="0">
|
||||
<symbols>
|
||||
<symbol force_rhr="0" alpha="1" name="0" frame_rate="10" is_animated="0" type="fill" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer enabled="1" id="{a2788a8d-f4df-42c4-9934-2bbbe85406e8}" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale" type="QString"/>
|
||||
<Option value="32,129,255,255,rgb:0.12549019607843137,0.50588235294117645,1,1" name="color" type="QString"/>
|
||||
<Option value="bevel" name="joinstyle" type="QString"/>
|
||||
<Option value="0,0" name="offset" type="QString"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offset_map_unit_scale" type="QString"/>
|
||||
<Option value="MM" name="offset_unit" type="QString"/>
|
||||
<Option value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1" name="outline_color" type="QString"/>
|
||||
<Option value="solid" name="outline_style" type="QString"/>
|
||||
<Option value="0.26" name="outline_width" type="QString"/>
|
||||
<Option value="MM" name="outline_width_unit" type="QString"/>
|
||||
<Option value="solid" name="style" type="QString"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<rotation/>
|
||||
<sizescale/>
|
||||
<data-defined-properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data-defined-properties>
|
||||
</renderer-v2>
|
||||
<selection mode="Default">
|
||||
<selectionColor invalid="1"/>
|
||||
<selectionSymbol>
|
||||
<symbol force_rhr="0" alpha="1" name="" frame_rate="10" is_animated="0" type="fill" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer enabled="1" id="{9dbcfb26-6cfe-454c-ae48-813791c1dfd4}" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale" type="QString"/>
|
||||
<Option value="0,0,255,255,rgb:0,0,1,1" name="color" type="QString"/>
|
||||
<Option value="bevel" name="joinstyle" type="QString"/>
|
||||
<Option value="0,0" name="offset" type="QString"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offset_map_unit_scale" type="QString"/>
|
||||
<Option value="MM" name="offset_unit" type="QString"/>
|
||||
<Option value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1" name="outline_color" type="QString"/>
|
||||
<Option value="solid" name="outline_style" type="QString"/>
|
||||
<Option value="0.26" name="outline_width" type="QString"/>
|
||||
<Option value="MM" name="outline_width_unit" type="QString"/>
|
||||
<Option value="solid" name="style" type="QString"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</selectionSymbol>
|
||||
</selection>
|
||||
<blendMode>0</blendMode>
|
||||
<featureBlendMode>0</featureBlendMode>
|
||||
<layerGeometryType>2</layerGeometryType>
|
||||
</qgis>
|
||||
86
assets/Teileinzugsgebiete.qml
Normal file
86
assets/Teileinzugsgebiete.qml
Normal file
@@ -0,0 +1,86 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis labelsEnabled="0" version="3.40.7-Bratislava" styleCategories="Symbology|Labeling">
|
||||
<renderer-v2 referencescale="-1" type="singleSymbol" enableorderby="0" symbollevels="0" forceraster="0">
|
||||
<symbols>
|
||||
<symbol force_rhr="0" alpha="1" name="0" frame_rate="10" is_animated="0" type="fill" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer enabled="1" id="{e3273eed-9cb5-4040-b82c-2ce3ac4ae803}" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale" type="QString"/>
|
||||
<Option value="187,235,255,255,rgb:0.73333333333333328,0.92156862745098034,1,1" name="color" type="QString"/>
|
||||
<Option value="bevel" name="joinstyle" type="QString"/>
|
||||
<Option value="0,0" name="offset" type="QString"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offset_map_unit_scale" type="QString"/>
|
||||
<Option value="MM" name="offset_unit" type="QString"/>
|
||||
<Option value="0,85,255,255,rgb:0,0.33333333333333331,1,1" name="outline_color" type="QString"/>
|
||||
<Option value="dot" name="outline_style" type="QString"/>
|
||||
<Option value="0.26" name="outline_width" type="QString"/>
|
||||
<Option value="MM" name="outline_width_unit" type="QString"/>
|
||||
<Option value="no" name="style" type="QString"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<rotation/>
|
||||
<sizescale/>
|
||||
<data-defined-properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data-defined-properties>
|
||||
</renderer-v2>
|
||||
<selection mode="Default">
|
||||
<selectionColor invalid="1"/>
|
||||
<selectionSymbol>
|
||||
<symbol force_rhr="0" alpha="1" name="" frame_rate="10" is_animated="0" type="fill" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer enabled="1" id="{bbb5064e-a0e4-45ae-8768-88e448d64bd4}" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale" type="QString"/>
|
||||
<Option value="0,0,255,255,rgb:0,0,1,1" name="color" type="QString"/>
|
||||
<Option value="bevel" name="joinstyle" type="QString"/>
|
||||
<Option value="0,0" name="offset" type="QString"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offset_map_unit_scale" type="QString"/>
|
||||
<Option value="MM" name="offset_unit" type="QString"/>
|
||||
<Option value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1" name="outline_color" type="QString"/>
|
||||
<Option value="solid" name="outline_style" type="QString"/>
|
||||
<Option value="0.26" name="outline_width" type="QString"/>
|
||||
<Option value="MM" name="outline_width_unit" type="QString"/>
|
||||
<Option value="solid" name="style" type="QString"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</selectionSymbol>
|
||||
</selection>
|
||||
<blendMode>0</blendMode>
|
||||
<featureBlendMode>0</featureBlendMode>
|
||||
<layerGeometryType>2</layerGeometryType>
|
||||
</qgis>
|
||||
140
assets/Verfahrensgebiet.qml
Normal file
140
assets/Verfahrensgebiet.qml
Normal file
@@ -0,0 +1,140 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis version="3.40.7-Bratislava" styleCategories="Symbology">
|
||||
<renderer-v2 referencescale="-1" forceraster="0" enableorderby="0" type="singleSymbol" symbollevels="0">
|
||||
<symbols>
|
||||
<symbol is_animated="0" frame_rate="10" clip_to_extent="1" type="fill" alpha="1" force_rhr="0" name="0">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer locked="0" id="{feca00b2-500a-4c9a-b285-67ba2d99d8f6}" enabled="1" class="SimpleLine" pass="0">
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="0" name="align_dash_pattern"/>
|
||||
<Option type="QString" value="square" name="capstyle"/>
|
||||
<Option type="QString" value="5;2" name="customdash"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="customdash_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="customdash_unit"/>
|
||||
<Option type="QString" value="0" name="dash_pattern_offset"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="dash_pattern_offset_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="dash_pattern_offset_unit"/>
|
||||
<Option type="QString" value="0" name="draw_inside_polygon"/>
|
||||
<Option type="QString" value="round" name="joinstyle"/>
|
||||
<Option type="QString" value="215,168,255,255,rgb:0.84313725490196079,0.6588235294117647,1,1" name="line_color"/>
|
||||
<Option type="QString" value="solid" name="line_style"/>
|
||||
<Option type="QString" value="1.5" name="line_width"/>
|
||||
<Option type="QString" value="MM" name="line_width_unit"/>
|
||||
<Option type="QString" value="-0.75" name="offset"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="offset_unit"/>
|
||||
<Option type="QString" value="0" name="ring_filter"/>
|
||||
<Option type="QString" value="0" name="trim_distance_end"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="trim_distance_end_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="trim_distance_end_unit"/>
|
||||
<Option type="QString" value="0" name="trim_distance_start"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="trim_distance_start_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="trim_distance_start_unit"/>
|
||||
<Option type="QString" value="0" name="tweak_dash_pattern_on_corners"/>
|
||||
<Option type="QString" value="0" name="use_custom_dash"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="width_map_unit_scale"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
<layer locked="0" id="{fdc4d6fd-0995-41df-bbfb-19970b4fc2cc}" enabled="1" class="SimpleLine" pass="0">
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="0" name="align_dash_pattern"/>
|
||||
<Option type="QString" value="square" name="capstyle"/>
|
||||
<Option type="QString" value="5;2" name="customdash"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="customdash_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="customdash_unit"/>
|
||||
<Option type="QString" value="0" name="dash_pattern_offset"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="dash_pattern_offset_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="dash_pattern_offset_unit"/>
|
||||
<Option type="QString" value="0" name="draw_inside_polygon"/>
|
||||
<Option type="QString" value="round" name="joinstyle"/>
|
||||
<Option type="QString" value="204,174,137,255,rgb:0.80000000000000004,0.68235294117647061,0.53725490196078429,1" name="line_color"/>
|
||||
<Option type="QString" value="solid" name="line_style"/>
|
||||
<Option type="QString" value="0.5" name="line_width"/>
|
||||
<Option type="QString" value="MM" name="line_width_unit"/>
|
||||
<Option type="QString" value="0" name="offset"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="offset_unit"/>
|
||||
<Option type="QString" value="0" name="ring_filter"/>
|
||||
<Option type="QString" value="0" name="trim_distance_end"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="trim_distance_end_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="trim_distance_end_unit"/>
|
||||
<Option type="QString" value="0" name="trim_distance_start"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="trim_distance_start_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="trim_distance_start_unit"/>
|
||||
<Option type="QString" value="0" name="tweak_dash_pattern_on_corners"/>
|
||||
<Option type="QString" value="0" name="use_custom_dash"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="width_map_unit_scale"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<rotation/>
|
||||
<sizescale/>
|
||||
<data-defined-properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data-defined-properties>
|
||||
</renderer-v2>
|
||||
<selection mode="Default">
|
||||
<selectionColor invalid="1"/>
|
||||
<selectionSymbol>
|
||||
<symbol is_animated="0" frame_rate="10" clip_to_extent="1" type="fill" alpha="1" force_rhr="0" name="">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer locked="0" id="{f18003f5-220a-487f-8a6d-b24facc4c1a5}" enabled="1" class="SimpleFill" pass="0">
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale"/>
|
||||
<Option type="QString" value="0,0,255,255,rgb:0,0,1,1" name="color"/>
|
||||
<Option type="QString" value="bevel" name="joinstyle"/>
|
||||
<Option type="QString" value="0,0" name="offset"/>
|
||||
<Option type="QString" value="3x:0,0,0,0,0,0" name="offset_map_unit_scale"/>
|
||||
<Option type="QString" value="MM" name="offset_unit"/>
|
||||
<Option type="QString" value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1" name="outline_color"/>
|
||||
<Option type="QString" value="solid" name="outline_style"/>
|
||||
<Option type="QString" value="0.26" name="outline_width"/>
|
||||
<Option type="QString" value="MM" name="outline_width_unit"/>
|
||||
<Option type="QString" value="solid" name="style"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option type="QString" value="" name="name"/>
|
||||
<Option name="properties"/>
|
||||
<Option type="QString" value="collection" name="type"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</selectionSymbol>
|
||||
</selection>
|
||||
<blendMode>0</blendMode>
|
||||
<featureBlendMode>0</featureBlendMode>
|
||||
<layerGeometryType>2</layerGeometryType>
|
||||
</qgis>
|
||||
189
assets/WEA_wald.qml
Normal file
189
assets/WEA_wald.qml
Normal file
@@ -0,0 +1,189 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis labelsEnabled="0" version="3.40.7-Bratislava" styleCategories="Symbology|Labeling">
|
||||
<renderer-v2 referencescale="-1" attr="WEA_KAT" type="categorizedSymbol" enableorderby="0" symbollevels="0" forceraster="0">
|
||||
<categories>
|
||||
<category render="true" value="A" label="A" uuid="{a493e3ec-8448-4033-a408-6f5f74aec791}" type="string" symbol="0"/>
|
||||
<category render="true" value="B" label="B" uuid="{589d5abd-c75b-48e8-ade4-5b8a3d2b6195}" type="string" symbol="1"/>
|
||||
<category render="true" value="C" label="C" uuid="{3bf350c1-f0ef-4280-a08f-19b2f57130fd}" type="string" symbol="2"/>
|
||||
</categories>
|
||||
<symbols>
|
||||
<symbol force_rhr="0" alpha="1" name="0" frame_rate="10" is_animated="0" type="fill" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer enabled="1" id="{b8ee3477-3916-448a-8351-c62eaec5cbd4}" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale" type="QString"/>
|
||||
<Option value="99,213,43,255,hsv:0.27777777777777779,0.80000000000000004,0.83529411764705885,1" name="color" type="QString"/>
|
||||
<Option value="bevel" name="joinstyle" type="QString"/>
|
||||
<Option value="0,0" name="offset" type="QString"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offset_map_unit_scale" type="QString"/>
|
||||
<Option value="MM" name="offset_unit" type="QString"/>
|
||||
<Option value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1" name="outline_color" type="QString"/>
|
||||
<Option value="solid" name="outline_style" type="QString"/>
|
||||
<Option value="0.26" name="outline_width" type="QString"/>
|
||||
<Option value="MM" name="outline_width_unit" type="QString"/>
|
||||
<Option value="solid" name="style" type="QString"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
<symbol force_rhr="0" alpha="1" name="1" frame_rate="10" is_animated="0" type="fill" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer enabled="1" id="{86c7ac31-2afd-4384-996e-585e69cff44d}" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale" type="QString"/>
|
||||
<Option value="255,170,0,255,rgb:1,0.66666666666666663,0,1" name="color" type="QString"/>
|
||||
<Option value="bevel" name="joinstyle" type="QString"/>
|
||||
<Option value="0,0" name="offset" type="QString"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offset_map_unit_scale" type="QString"/>
|
||||
<Option value="MM" name="offset_unit" type="QString"/>
|
||||
<Option value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1" name="outline_color" type="QString"/>
|
||||
<Option value="solid" name="outline_style" type="QString"/>
|
||||
<Option value="0.26" name="outline_width" type="QString"/>
|
||||
<Option value="MM" name="outline_width_unit" type="QString"/>
|
||||
<Option value="solid" name="style" type="QString"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
<symbol force_rhr="0" alpha="1" name="2" frame_rate="10" is_animated="0" type="fill" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer enabled="1" id="{b2db4925-4441-458f-9fd8-e8939e7b8ec9}" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale" type="QString"/>
|
||||
<Option value="218,110,85,255,hsv:0.03055555555555555,0.60784313725490191,0.85490196078431369,1" name="color" type="QString"/>
|
||||
<Option value="bevel" name="joinstyle" type="QString"/>
|
||||
<Option value="0,0" name="offset" type="QString"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offset_map_unit_scale" type="QString"/>
|
||||
<Option value="MM" name="offset_unit" type="QString"/>
|
||||
<Option value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1" name="outline_color" type="QString"/>
|
||||
<Option value="solid" name="outline_style" type="QString"/>
|
||||
<Option value="0.26" name="outline_width" type="QString"/>
|
||||
<Option value="MM" name="outline_width_unit" type="QString"/>
|
||||
<Option value="solid" name="style" type="QString"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<source-symbol>
|
||||
<symbol force_rhr="0" alpha="1" name="0" frame_rate="10" is_animated="0" type="fill" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer enabled="1" id="{d73d1702-c6a5-489a-9eea-e4f3a56547e2}" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale" type="QString"/>
|
||||
<Option value="255,158,23,255,rgb:1,0.61960784313725492,0.09019607843137255,1" name="color" type="QString"/>
|
||||
<Option value="bevel" name="joinstyle" type="QString"/>
|
||||
<Option value="0,0" name="offset" type="QString"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offset_map_unit_scale" type="QString"/>
|
||||
<Option value="MM" name="offset_unit" type="QString"/>
|
||||
<Option value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1" name="outline_color" type="QString"/>
|
||||
<Option value="solid" name="outline_style" type="QString"/>
|
||||
<Option value="0.26" name="outline_width" type="QString"/>
|
||||
<Option value="MM" name="outline_width_unit" type="QString"/>
|
||||
<Option value="solid" name="style" type="QString"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</source-symbol>
|
||||
<colorramp name="[source]" type="randomcolors">
|
||||
<Option/>
|
||||
</colorramp>
|
||||
<rotation/>
|
||||
<sizescale/>
|
||||
<data-defined-properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data-defined-properties>
|
||||
</renderer-v2>
|
||||
<selection mode="Default">
|
||||
<selectionColor invalid="1"/>
|
||||
<selectionSymbol>
|
||||
<symbol force_rhr="0" alpha="1" name="" frame_rate="10" is_animated="0" type="fill" clip_to_extent="1">
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
<layer enabled="1" id="{9629aa90-8580-4cfc-a7d4-8e2bc3b261b5}" pass="0" locked="0" class="SimpleFill">
|
||||
<Option type="Map">
|
||||
<Option value="3x:0,0,0,0,0,0" name="border_width_map_unit_scale" type="QString"/>
|
||||
<Option value="0,0,255,255,rgb:0,0,1,1" name="color" type="QString"/>
|
||||
<Option value="bevel" name="joinstyle" type="QString"/>
|
||||
<Option value="0,0" name="offset" type="QString"/>
|
||||
<Option value="3x:0,0,0,0,0,0" name="offset_map_unit_scale" type="QString"/>
|
||||
<Option value="MM" name="offset_unit" type="QString"/>
|
||||
<Option value="35,35,35,255,rgb:0.13725490196078433,0.13725490196078433,0.13725490196078433,1" name="outline_color" type="QString"/>
|
||||
<Option value="solid" name="outline_style" type="QString"/>
|
||||
<Option value="0.26" name="outline_width" type="QString"/>
|
||||
<Option value="MM" name="outline_width_unit" type="QString"/>
|
||||
<Option value="solid" name="style" type="QString"/>
|
||||
</Option>
|
||||
<data_defined_properties>
|
||||
<Option type="Map">
|
||||
<Option value="" name="name" type="QString"/>
|
||||
<Option name="properties"/>
|
||||
<Option value="collection" name="type" type="QString"/>
|
||||
</Option>
|
||||
</data_defined_properties>
|
||||
</layer>
|
||||
</symbol>
|
||||
</selectionSymbol>
|
||||
</selection>
|
||||
<blendMode>0</blendMode>
|
||||
<featureBlendMode>0</featureBlendMode>
|
||||
<layerGeometryType>2</layerGeometryType>
|
||||
</qgis>
|
||||
43
assets/atlasobjekte.qml
Normal file
43
assets/atlasobjekte.qml
Normal file
@@ -0,0 +1,43 @@
|
||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
||||
<qgis version="3.34.0" styleCategories="AllStyleCategories">
|
||||
<renderer-v2 type="singleSymbol" symbollevels="0" enableorderby="0" referencescale="-1" forceraster="0">
|
||||
<symbols>
|
||||
<symbol alpha="1" type="fill" name="0" force_rhr="0" clip_to_extent="1">
|
||||
<layer class="SimpleFill" enabled="1" locked="0" pass="0">
|
||||
<Option type="Map">
|
||||
<Option name="border_width_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="color" type="QString" value="255,0,0,40"/>
|
||||
<Option name="joinstyle" type="QString" value="bevel"/>
|
||||
<Option name="offset" type="QString" value="0,0"/>
|
||||
<Option name="offset_map_unit_scale" type="QString" value="3x:0,0,0,0,0,0"/>
|
||||
<Option name="offset_unit" type="QString" value="MM"/>
|
||||
<Option name="outline_color" type="QString" value="255,0,0,255"/>
|
||||
<Option name="outline_style" type="QString" value="solid"/>
|
||||
<Option name="outline_width" type="QString" value="0.8"/>
|
||||
<Option name="outline_width_unit" type="QString" value="MM"/>
|
||||
<Option name="style" type="QString" value="solid"/>
|
||||
</Option>
|
||||
</layer>
|
||||
</symbol>
|
||||
</symbols>
|
||||
</renderer-v2>
|
||||
<fieldConfiguration>
|
||||
<field name="Seitenzahl" configurationFlags="None">
|
||||
<editWidget type="Range">
|
||||
<config>
|
||||
<Option type="Map">
|
||||
<Option name="AllowNull" type="bool" value="false"/>
|
||||
<Option name="Max" type="double" value="9999"/>
|
||||
<Option name="Min" type="double" value="1"/>
|
||||
<Option name="Precision" type="int" value="0"/>
|
||||
<Option name="Step" type="double" value="1"/>
|
||||
<Option name="Style" type="QString" value="SpinBox"/>
|
||||
</Option>
|
||||
</config>
|
||||
</editWidget>
|
||||
</field>
|
||||
</fieldConfiguration>
|
||||
<defaults>
|
||||
<default field="Seitenzahl" expression="" applyOnUpdate="0"/>
|
||||
</defaults>
|
||||
</qgis>
|
||||
58
doc/Datenbank_ERD.md
Normal file
58
doc/Datenbank_ERD.md
Normal file
@@ -0,0 +1,58 @@
|
||||
```mermaid
|
||||
erDiagram
|
||||
tbl_akteure{
|
||||
Int4 fid PK
|
||||
varchar Bezeichnung
|
||||
varchar(6) vkz "Verfahren, für das der Akteur relevant ist"
|
||||
}
|
||||
tbl_konten{
|
||||
varchar(3) kontonr
|
||||
varchar bezeichnung
|
||||
}
|
||||
tbl_ausbauart{
|
||||
int4 id PK
|
||||
varchar Ausbauart_text
|
||||
int4 preis
|
||||
varchar(3) tbe_nr
|
||||
varchar(3) Ausbauart_nr "Nr. der Ausbauart zur einfacheren Referenz"
|
||||
}
|
||||
tbl_Massnahme{
|
||||
int4 MnNr
|
||||
int4 Abschnitte FK
|
||||
}
|
||||
p41_Massnahmen_linie{
|
||||
int4 id PK
|
||||
geom Geometrie
|
||||
varchar mnnr "Berechnet aus mn_konto und lfd_nr"
|
||||
varchar mnname
|
||||
int4 ausbauart FK "ref:tbl_ausbauart.id"
|
||||
varchar(3) mn_konto FK "ref: tbl_konten.kontonr"
|
||||
varchar(2) lfd_nr
|
||||
varchar(1) tbe
|
||||
bool umsetzung
|
||||
int4 unterhalt_bisher FK "ref: tbl_akteure.id"
|
||||
int4 unterhalt_zukuenftig FK "ref: tbl_akteure.id"
|
||||
int4 bautraeger FK "ref: tbl_akteure.id"
|
||||
int4 kostentraeger FK "ref: tbl_akteure.id"
|
||||
int4 Planungsjahr
|
||||
int4 baujahr
|
||||
int4 Pflege_Anfang
|
||||
int4 Pflege_Ende
|
||||
float8 fahrbahnbreite
|
||||
float8 gesamtbreite
|
||||
varchar vorgesehene_regelungen
|
||||
varchar bemerkungen
|
||||
int4 laenge
|
||||
int4 flaeche
|
||||
varchar foerdersatz
|
||||
bool ingenieurbauwerk
|
||||
varchar bildpfad
|
||||
bool fertiggestellt
|
||||
int4 ausbauart_nr
|
||||
bool plangenehmigt
|
||||
}
|
||||
|
||||
tbl_konten ||--o{ p41_Massnahmen_linie : verwendet
|
||||
tbl_akteure ||--o{ p41_Massnahmen_linie : verwendet
|
||||
tbl_ausbauart ||--o{ p41_Massnahmen_linie : verwendet
|
||||
```
|
||||
39
main.py
39
main.py
@@ -1,11 +1,17 @@
|
||||
# sn_plan41/main.py
|
||||
|
||||
from qgis.utils import plugins
|
||||
from sn_basis.ui.dockmanager import DockManager
|
||||
from .ui.dockwidget import DockWidget
|
||||
from sn_plan41.ui.dockwidget import DockWidget
|
||||
from sn_basis.modules.DataGrabber import DataGrabber
|
||||
from sn_basis.modules.Pruefmanager import Pruefmanager
|
||||
|
||||
|
||||
class Plan41:
|
||||
def __init__(self, iface):
|
||||
self.iface = iface
|
||||
self.pruefmanager=Pruefmanager(ui_modus="qgis")
|
||||
self.data_grabber=DataGrabber(pruefmanager=self.pruefmanager)
|
||||
self.action = None
|
||||
self.dockwidget = None
|
||||
|
||||
@@ -15,14 +21,17 @@ class Plan41:
|
||||
|
||||
def initGui(self):
|
||||
basis = plugins.get("sn_basis")
|
||||
if basis and basis.ui:
|
||||
self.action = basis.ui.add_action(
|
||||
self.plugin_name,
|
||||
self.run,
|
||||
tooltip=f"Öffnet {self.plugin_name}",
|
||||
priority=20
|
||||
)
|
||||
basis.ui.finalize_menu_and_toolbar()
|
||||
if not basis or not getattr(basis, "ui", None):
|
||||
return
|
||||
|
||||
self.action = basis.ui.add_action(
|
||||
self.plugin_name,
|
||||
self.run,
|
||||
tooltip=f"Öffnet {self.plugin_name}",
|
||||
priority=20,
|
||||
)
|
||||
basis.ui.finalize_menu_and_toolbar()
|
||||
print("Plan41/sn_Basis:initGui called")
|
||||
|
||||
def unload(self):
|
||||
if self.dockwidget:
|
||||
@@ -32,13 +41,17 @@ class Plan41:
|
||||
|
||||
if self.action:
|
||||
basis = plugins.get("sn_basis")
|
||||
if basis and basis.ui:
|
||||
# Action aus Menü und Toolbar entfernen
|
||||
if basis and getattr(basis, "ui", None):
|
||||
basis.ui.remove_action(self.action)
|
||||
self.action = None
|
||||
|
||||
def run(self):
|
||||
self.dockwidget = DockWidget(self.iface.mainWindow(), subtitle=self.plugin_name)
|
||||
self.dockwidget = DockWidget(
|
||||
self.iface.mainWindow(),
|
||||
subtitle=self.plugin_name,
|
||||
pruefmanager=self.pruefmanager,
|
||||
data_grabber=self.data_grabber)
|
||||
|
||||
self.dockwidget.setObjectName(self.dock_name)
|
||||
|
||||
# Action-Referenz im Dock speichern
|
||||
@@ -48,5 +61,5 @@ class Plan41:
|
||||
|
||||
# Toolbar-Button als aktiv markieren
|
||||
basis = plugins.get("sn_basis")
|
||||
if basis and basis.ui:
|
||||
if basis and getattr(basis, "ui", None):
|
||||
basis.ui.set_active_plugin(self.action)
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
[general]
|
||||
name=LNO Sachsen | Plan41
|
||||
qgisMinimumVersion=3.0
|
||||
qgisMaximumVersion=4.99
|
||||
description=Plugin zum Erzeugen der Pläne nach §38 und §41
|
||||
version=25.11.3
|
||||
version=26.3.11
|
||||
author=Michael Otto
|
||||
email=michael.otto@landkreis-mittelsachsen.de
|
||||
about=Plugin zum Erzeugen der Pläne nach §38 und §41
|
||||
@@ -10,4 +11,5 @@ category=Plugins
|
||||
homepage=https://entwicklung.vln-sn.de/AG_QGIS/Plugin_SN_Plan41
|
||||
repository=https://entwicklung.vln-sn.de/AG_QGIS/Repository
|
||||
supportsQt6=true
|
||||
experimental=true
|
||||
experimental=true
|
||||
|
||||
|
||||
138
modules/listenauswerter.py
Normal file
138
modules/listenauswerter.py
Normal file
@@ -0,0 +1,138 @@
|
||||
#sn_plan41/modules/listenauswerter.py
|
||||
from typing import Any, Dict, List, Mapping, Optional, Tuple
|
||||
from collections.abc import Mapping as _Mapping
|
||||
# Prüfer-Typen (werden als Instanzen erwartet)
|
||||
from sn_basis.modules.Pruefmanager import Pruefmanager # type: ignore
|
||||
from sn_basis.modules.pruef_ergebnis import pruef_ergebnis
|
||||
from sn_basis.modules.stilpruefer import Stilpruefer # type: ignore
|
||||
|
||||
class Listenauswerter:
|
||||
"""
|
||||
Validiert Zeilen aus einem DataDict, das vom DataGrabber stammt.
|
||||
Erwartet wird die Struktur::
|
||||
|
||||
{"rows": [ {attr}, ... ]}
|
||||
|
||||
Die Linkprüfung entfällt vollständig, da der DataGrabber nur gültige
|
||||
Links liefert. Diese Methode prüft ausschließlich die Konsistenz der
|
||||
Zeilen mit dem erwarteten Datenschema und führt optional eine
|
||||
Stilprüfung durch.
|
||||
"""
|
||||
def __init__(self, pruefmanager, stil_pruefer):
|
||||
""" Parameters
|
||||
----------
|
||||
pruefmanager: Instanz des Pruefmanagers, der pruef_ergebnis verarbeitet.
|
||||
stil_pruefer: Instanz des Stilpruefers, der Stildateien prüft.
|
||||
"""
|
||||
self.pruefmanager = pruefmanager
|
||||
self.stil_pruefer = stil_pruefer
|
||||
|
||||
def validate_rows(
|
||||
self,
|
||||
data_dict: Dict[str, List[Mapping[str, Any]]]
|
||||
) -> Tuple[Dict[str, List[Mapping[str, Any]]], List[Any]]:
|
||||
"""
|
||||
Validiert die Zeilen aus ``data_dict`` anhand des erwarteten Schemas.
|
||||
|
||||
Erwartete Felder pro Zeile
|
||||
--------------------------
|
||||
Pflichtfelder:
|
||||
- ``ident``: eindeutige Kennung
|
||||
- ``Link``: bereits geprüfter Link (vom DataGrabber garantiert gültig)
|
||||
- ``Provider``: Datenquelle (wird in Großbuchstaben normalisiert)
|
||||
|
||||
Optionale Felder:
|
||||
- ``Inhalt``: thematische Beschreibung
|
||||
- ``Stildatei``: Pfad zur Stildatei (falls vorhanden)
|
||||
|
||||
Verhalten
|
||||
---------
|
||||
- Zeilen, denen Pflichtfelder fehlen oder deren Werte leer sind,
|
||||
werden verworfen.
|
||||
- ``Provider`` wird in Großbuchstaben normalisiert.
|
||||
- Wenn ``Stildatei`` vorhanden ist, wird sie durch
|
||||
``self.stil_pruefer.pruefe(...)`` geprüft.
|
||||
- Bei OK bleibt der Wert erhalten.
|
||||
- Bei nicht OK wird ``Stildatei`` auf ``None`` gesetzt und das
|
||||
verarbeitete Prüfergebnis gesammelt.
|
||||
- Alle Prüfergebnisse werden durch ``self.pruefmanager.verarbeite(...)``
|
||||
geleitet und in der Rückgabe gesammelt.
|
||||
|
||||
Rückgabe
|
||||
--------
|
||||
Tuple[Dict[str, List[Mapping[str, Any]]]], List[Any]]
|
||||
- ``valid_data_dict``: enthält nur Zeilen, die dem Schema entsprechen
|
||||
- ``processed_results``: Liste der verarbeiteten Prüfergebnisse
|
||||
|
||||
Hinweise
|
||||
--------
|
||||
- Diese Methode führt **keine Linkprüfung** durch.
|
||||
- Die Verantwortung für die Linkvalidität liegt vollständig beim DataGrabber.
|
||||
- Die Methode verändert die Zeilen nur minimal (Provider‑Normalisierung,
|
||||
Stildatei ggf. auf ``None``).
|
||||
"""
|
||||
|
||||
processed_results: List[Any] = []
|
||||
valid_rows: List[Mapping[str, Any]] = []
|
||||
|
||||
# Grundstruktur prüfen
|
||||
if not isinstance(data_dict, dict):
|
||||
return {"rows": []}, processed_results
|
||||
|
||||
rows = data_dict.get("rows", [])
|
||||
if not isinstance(rows, (list, tuple)):
|
||||
return {"rows": []}, processed_results
|
||||
|
||||
for raw in rows:
|
||||
# Sicherstellen, dass raw ein Mapping ist
|
||||
if not isinstance(raw, _Mapping):
|
||||
continue
|
||||
|
||||
ident = raw.get("ident")
|
||||
inhalt = raw.get("Inhalt")
|
||||
link = raw.get("Link")
|
||||
stildatei = raw.get("stildatei") or raw.get("Stildatei")
|
||||
provider = raw.get("Provider")
|
||||
|
||||
# Pflichtfelder prüfen
|
||||
if not ident or not link or not provider:
|
||||
# Fehler dokumentieren
|
||||
pe = pruef_ergebnis(
|
||||
ok=False,
|
||||
meldung="Pflichtfelder fehlen oder sind leer",
|
||||
aktion="pflichtfelder_fehlen",
|
||||
kontext=raw,
|
||||
)
|
||||
processed_results.append(self.pruefmanager.verarbeite(pe))
|
||||
continue
|
||||
|
||||
# Provider normalisieren
|
||||
provider_norm = str(provider).upper()
|
||||
|
||||
# Stildatei prüfen (falls vorhanden)
|
||||
if stildatei:
|
||||
pe_stil = self.stil_pruefer.pruefe(stildatei)
|
||||
processed_stil = self.pruefmanager.verarbeite(pe_stil)
|
||||
|
||||
if not getattr(processed_stil, "ok", False):
|
||||
processed_results.append(processed_stil)
|
||||
stildatei_value: Optional[str] = None
|
||||
else:
|
||||
stildatei_value = stildatei
|
||||
else:
|
||||
stildatei_value = None
|
||||
|
||||
# Validierte Zeile zusammenbauen
|
||||
validated_row = {
|
||||
"ident": ident,
|
||||
"Inhalt": inhalt,
|
||||
"Link": link,
|
||||
"stildatei": stildatei_value,
|
||||
"Stildatei": stildatei_value,
|
||||
"Provider": provider_norm,
|
||||
}
|
||||
|
||||
valid_rows.append(validated_row)
|
||||
|
||||
result_dict = {"rows": valid_rows}
|
||||
return result_dict, processed_results
|
||||
10
plugin.cfg
Normal file
10
plugin.cfg
Normal file
@@ -0,0 +1,10 @@
|
||||
name=LNO Sachsen | Plan41
|
||||
description=Plugin zum Erzeugen der Pläne nach §38 und §41
|
||||
author=Michael Otto
|
||||
email=michael.otto@landkreis-mittelsachsen.de
|
||||
qgisMinimumVersion=3.0
|
||||
qgisMaximumVersion=4.99
|
||||
deprecated=False
|
||||
experimental=True
|
||||
supportsQt6=Yes
|
||||
zip_folder=plugin_folder
|
||||
10
plugin.info
Normal file
10
plugin.info
Normal file
@@ -0,0 +1,10 @@
|
||||
name=LNO Sachsen | Plan41
|
||||
description=Plugin zum Erzeugen der Pläne nach §38 und §41
|
||||
author=Michael Otto
|
||||
email=michael.otto@landkreis-mittelsachsen.de
|
||||
qgisMinimumVersion=3.0
|
||||
qgisMaximumVersion=4.99
|
||||
deprecated=False
|
||||
experimental=True
|
||||
supportsQt6=Yes
|
||||
zip_folder=plugin_folder
|
||||
1
tests/__init__.py
Normal file
1
tests/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
#Testordner
|
||||
148
tests/run_tests.py
Normal file
148
tests/run_tests.py
Normal file
@@ -0,0 +1,148 @@
|
||||
"""
|
||||
sn_plan41/test/run_tests.py
|
||||
|
||||
Zentraler Test-Runner für sn_plan41.
|
||||
Wrapper-konform, QGIS-unabhängig, CI- und IDE-fähig.
|
||||
"""
|
||||
|
||||
import unittest
|
||||
import datetime
|
||||
import inspect
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# Plugin-Roots bestimmen
|
||||
# ---------------------------------------------------------
|
||||
|
||||
THIS_FILE = Path(__file__).resolve()
|
||||
|
||||
# .../plugins/sn_plan41
|
||||
SN_PLAN41_ROOT = THIS_FILE.parents[1]
|
||||
# .../plugins/sn_basis
|
||||
SN_BASIS_ROOT = SN_PLAN41_ROOT.parent / "sn_basis"
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# sys.path Bootstrap
|
||||
# ---------------------------------------------------------
|
||||
|
||||
for path in (SN_PLAN41_ROOT, SN_BASIS_ROOT):
|
||||
path_str = str(path)
|
||||
if path_str not in sys.path:
|
||||
sys.path.insert(0, path_str)
|
||||
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# Farben
|
||||
# ---------------------------------------------------------
|
||||
|
||||
RED = "\033[91m"
|
||||
YELLOW = "\033[93m"
|
||||
GREEN = "\033[92m"
|
||||
CYAN = "\033[96m"
|
||||
MAGENTA = "\033[95m"
|
||||
RESET = "\033[0m"
|
||||
|
||||
GLOBAL_TEST_COUNTER = 0
|
||||
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# Farbige TestResult-Klasse
|
||||
# ---------------------------------------------------------
|
||||
|
||||
class ColoredTestResult(unittest.TextTestResult):
|
||||
|
||||
_last_test_class = None
|
||||
|
||||
def startTest(self, test):
|
||||
global GLOBAL_TEST_COUNTER
|
||||
GLOBAL_TEST_COUNTER += 1
|
||||
self.stream.write(f"{CYAN}[Test {GLOBAL_TEST_COUNTER}]{RESET}\n")
|
||||
super().startTest(test)
|
||||
|
||||
def startTestClass(self, test):
|
||||
cls = test.__class__
|
||||
file = inspect.getfile(cls)
|
||||
filename = os.path.basename(file)
|
||||
|
||||
self.stream.write(
|
||||
f"\n{MAGENTA}{'=' * 70}\n"
|
||||
f"Starte Testklasse: {filename} → {cls.__name__}\n"
|
||||
f"{'=' * 70}{RESET}\n"
|
||||
)
|
||||
|
||||
def addError(self, test, err):
|
||||
super().addError(test, err)
|
||||
self.stream.write(f"{RED}ERROR{RESET}\n")
|
||||
|
||||
def addFailure(self, test, err):
|
||||
super().addFailure(test, err)
|
||||
self.stream.write(f"{RED}FAILURE{RESET}\n")
|
||||
|
||||
def addSkip(self, test, reason):
|
||||
super().addSkip(test, reason)
|
||||
self.stream.write(f"{YELLOW}SKIPPED{RESET}: {reason}\n")
|
||||
|
||||
def addSuccess(self, test):
|
||||
super().addSuccess(test)
|
||||
self.stream.write(f"{GREEN}OK{RESET}\n")
|
||||
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# Farbiger TestRunner
|
||||
# ---------------------------------------------------------
|
||||
|
||||
class ColoredTestRunner(unittest.TextTestRunner):
|
||||
|
||||
def _makeResult(self):
|
||||
result = ColoredTestResult(
|
||||
self.stream,
|
||||
self.descriptions,
|
||||
self.verbosity,
|
||||
)
|
||||
|
||||
original_start_test = result.startTest
|
||||
|
||||
def patched_start_test(test):
|
||||
if result._last_test_class != test.__class__:
|
||||
result.startTestClass(test)
|
||||
result._last_test_class = test.__class__
|
||||
original_start_test(test)
|
||||
|
||||
result.startTest = patched_start_test
|
||||
return result
|
||||
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# Testlauf starten
|
||||
# ---------------------------------------------------------
|
||||
|
||||
def main():
|
||||
print("\n" + "=" * 70)
|
||||
print(
|
||||
f"{CYAN}Testlauf gestartet am: "
|
||||
f"{datetime.datetime.now():%Y-%m-%d %H:%M:%S}{RESET}"
|
||||
)
|
||||
print("=" * 70 + "\n")
|
||||
|
||||
loader = unittest.TestLoader()
|
||||
|
||||
TEST_ROOT = SN_PLAN41_ROOT / "tests"
|
||||
|
||||
suite = loader.discover(
|
||||
start_dir=str(TEST_ROOT),
|
||||
pattern="test_*.py",
|
||||
top_level_dir=str(SN_PLAN41_ROOT.parent),
|
||||
)
|
||||
|
||||
|
||||
runner = ColoredTestRunner(verbosity=2)
|
||||
result = runner.run(suite)
|
||||
|
||||
return 0 if result.wasSuccessful() else 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
9
tests/start_osgeo4w_qgis.bat
Normal file
9
tests/start_osgeo4w_qgis.bat
Normal file
@@ -0,0 +1,9 @@
|
||||
@echo off
|
||||
SET OSGEO4W_ROOT=D:\QGISQT5
|
||||
call %OSGEO4W_ROOT%\bin\o4w_env.bat
|
||||
set QGIS_PREFIX_PATH=%OSGEO4W_ROOT%\apps\qgis
|
||||
set PYTHONPATH=%QGIS_PREFIX_PATH%\python;%PYTHONPATH%
|
||||
set PATH=%OSGEO4W_ROOT%\bin;%QGIS_PREFIX_PATH%\bin;%PATH%
|
||||
|
||||
REM Neue Eingabeaufforderung starten und Python-Skript ausführen
|
||||
start cmd /k "python run_tests.py"
|
||||
153
tests/test_tab_a_logic.py
Normal file
153
tests/test_tab_a_logic.py
Normal file
@@ -0,0 +1,153 @@
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from tempfile import TemporaryDirectory
|
||||
|
||||
from sn_plan41.ui.tab_a_logic import TabALogic # type: ignore
|
||||
from sn_basis.functions.variable_wrapper import get_variable # type: ignore
|
||||
from sn_basis.functions.sys_wrapper import file_exists # type: ignore
|
||||
|
||||
|
||||
class TestTabALogic(unittest.TestCase):
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 1. Verfahrens-DB setzen und laden
|
||||
# -----------------------------------------------------
|
||||
def test_verfahrens_db_set_and_load(self):
|
||||
logic = TabALogic()
|
||||
|
||||
with TemporaryDirectory() as tmp:
|
||||
db_path = Path(tmp) / "test.gpkg"
|
||||
db_path.write_text("")
|
||||
|
||||
logic.set_verfahrens_db(str(db_path))
|
||||
|
||||
stored = get_variable("verfahrens_db", scope="project")
|
||||
self.assertEqual(stored, str(db_path))
|
||||
|
||||
loaded = logic.load_verfahrens_db()
|
||||
self.assertEqual(loaded, str(db_path))
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 2. Verfahrens-DB löschen
|
||||
# -----------------------------------------------------
|
||||
def test_verfahrens_db_clear(self):
|
||||
logic = TabALogic()
|
||||
|
||||
logic.set_verfahrens_db(None)
|
||||
|
||||
stored = get_variable("verfahrens_db", scope="project")
|
||||
self.assertEqual(stored, "")
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 3. Neue Verfahrens-DB anlegen
|
||||
# -----------------------------------------------------
|
||||
def test_create_new_verfahrens_db(self):
|
||||
logic = TabALogic()
|
||||
|
||||
with TemporaryDirectory() as tmp:
|
||||
db_path = Path(tmp) / "neu.gpkg"
|
||||
|
||||
result = logic.create_new_verfahrens_db(str(db_path))
|
||||
|
||||
self.assertTrue(result)
|
||||
self.assertTrue(file_exists(db_path))
|
||||
|
||||
stored = get_variable("verfahrens_db", scope="project")
|
||||
self.assertEqual(stored, str(db_path))
|
||||
|
||||
def test_create_new_verfahrens_db_with_none_path(self):
|
||||
logic = TabALogic()
|
||||
result = logic.create_new_verfahrens_db(None)
|
||||
self.assertFalse(result)
|
||||
|
||||
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 4. Linkliste setzen und laden
|
||||
# -----------------------------------------------------
|
||||
def test_linkliste_set_and_load(self):
|
||||
logic = TabALogic()
|
||||
|
||||
with TemporaryDirectory() as tmp:
|
||||
link_path = Path(tmp) / "links.xlsx"
|
||||
link_path.write_text("dummy")
|
||||
|
||||
logic.set_linkliste(str(link_path))
|
||||
|
||||
stored = get_variable("linkliste", scope="project")
|
||||
self.assertEqual(stored, str(link_path))
|
||||
|
||||
loaded = logic.load_linkliste()
|
||||
self.assertEqual(loaded, str(link_path))
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 5. Linkliste löschen
|
||||
# -----------------------------------------------------
|
||||
def test_linkliste_clear(self):
|
||||
logic = TabALogic()
|
||||
|
||||
logic.set_linkliste(None)
|
||||
|
||||
stored = get_variable("linkliste", scope="project")
|
||||
self.assertEqual(stored, "")
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 6. Layer-ID speichern
|
||||
# -----------------------------------------------------
|
||||
def test_verfahrensgebiet_layer_id_storage(self):
|
||||
logic = TabALogic()
|
||||
|
||||
class MockLayer:
|
||||
def id(self):
|
||||
return "layer-123"
|
||||
|
||||
logic.save_verfahrensgebiet_layer(MockLayer())
|
||||
|
||||
stored = get_variable("verfahrensgebiet_layer", scope="project")
|
||||
self.assertEqual(stored, "layer-123")
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 7. Ungültiger Layer wird ignoriert
|
||||
# -----------------------------------------------------
|
||||
def test_invalid_layer_is_rejected(self):
|
||||
logic = TabALogic()
|
||||
|
||||
class InvalidLayer:
|
||||
pass
|
||||
|
||||
logic.save_verfahrensgebiet_layer(InvalidLayer())
|
||||
|
||||
stored = get_variable("verfahrensgebiet_layer", scope="project")
|
||||
self.assertEqual(stored, "")
|
||||
#-----------------------------------------------------
|
||||
# 8. Layer-ID wirft Exception
|
||||
#----------------------------------------------------
|
||||
def test_layer_id_raises_exception(self):
|
||||
logic = TabALogic()
|
||||
|
||||
class BadLayer:
|
||||
def id(self):
|
||||
raise RuntimeError("boom")
|
||||
|
||||
logic.save_verfahrensgebiet_layer(BadLayer())
|
||||
|
||||
stored = get_variable("verfahrensgebiet_layer", scope="project")
|
||||
self.assertEqual(stored, "")
|
||||
# -----------------------------------------------------
|
||||
# 11. Layer ID wird leer zurückgegeben
|
||||
# -----------------------------------------------------
|
||||
def test_layer_id_returns_empty(self):
|
||||
logic = TabALogic()
|
||||
|
||||
class EmptyLayer:
|
||||
def id(self):
|
||||
return ""
|
||||
|
||||
logic.save_verfahrensgebiet_layer(EmptyLayer())
|
||||
|
||||
stored = get_variable("verfahrensgebiet_layer", scope="project")
|
||||
self.assertEqual(stored, "")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
57
tests/test_tab_a_ui.py
Normal file
57
tests/test_tab_a_ui.py
Normal file
@@ -0,0 +1,57 @@
|
||||
"""
|
||||
Smoke-Tests für TabA UI (sn_plan41/ui/tab_a_ui.py)
|
||||
|
||||
Ziel:
|
||||
- UI kann erstellt werden
|
||||
- Callbacks crashen nicht
|
||||
- Keine Qt-Verhaltensprüfung
|
||||
"""
|
||||
|
||||
import unittest
|
||||
|
||||
from sn_plan41.ui.tab_a_ui import TabA #type:ignore
|
||||
|
||||
|
||||
class TestTabAUI(unittest.TestCase):
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 1. UI kann erstellt werden
|
||||
# -----------------------------------------------------
|
||||
def test_tab_a_ui_can_be_created(self):
|
||||
tab = TabA(parent=None,build_ui=False)
|
||||
|
||||
self.assertIsNotNone(tab)
|
||||
self.assertEqual(tab.tab_title, "Daten")
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 2. Toggle-Callbacks crashen nicht
|
||||
# -----------------------------------------------------
|
||||
def test_tab_a_toggle_callbacks_do_not_crash(self):
|
||||
tab = TabA(parent=None,build_ui=False)
|
||||
|
||||
tab._toggle_group(True)
|
||||
tab._toggle_group(False)
|
||||
|
||||
tab._toggle_optional(True)
|
||||
tab._toggle_optional(False)
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 3. Datei-Callbacks akzeptieren leere Eingaben
|
||||
# -----------------------------------------------------
|
||||
def test_tab_a_file_callbacks_accept_empty_input(self):
|
||||
tab = TabA(parent=None,build_ui=False)
|
||||
|
||||
tab._on_verfahrens_db_changed("")
|
||||
tab._on_linkliste_changed("")
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 4. Layer-Callback akzeptiert None
|
||||
# -----------------------------------------------------
|
||||
def test_tab_a_layer_callback_accepts_none(self):
|
||||
tab = TabA(parent=None,build_ui=False)
|
||||
|
||||
tab._on_layer_changed(None)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
@@ -1,7 +1,45 @@
|
||||
from sn_basis.ui.tabs.settings_tab import SettingsTab
|
||||
from sn_plan41.ui.tabs.tab_a import TabA
|
||||
from sn_plan41.ui.tabs.tab_b import TabB
|
||||
#sn_plan41/ui/dockwidget.py
|
||||
from sn_basis.ui.tabs.settings_tab import SettingsTab
|
||||
from sn_plan41.ui.tab_a_ui import TabA
|
||||
from sn_plan41.ui.tab_b_ui import TabB
|
||||
from sn_basis.ui.base_dockwidget import BaseDockWidget
|
||||
from sn_basis.functions.qt_wrapper import QTabWidget
|
||||
from sn_basis.functions.message_wrapper import error
|
||||
|
||||
|
||||
class DockWidget(BaseDockWidget):
|
||||
tabs = [TabA, TabB, SettingsTab]
|
||||
tabs = [TabA, TabB,SettingsTab]
|
||||
|
||||
def __init__(self, parent=None, subtitle="", pruefmanager=None, data_grabber=None):
|
||||
super().__init__(parent, subtitle)
|
||||
|
||||
# Services als Attribute speichern
|
||||
self.pruefmanager = pruefmanager
|
||||
self.data_grabber = data_grabber
|
||||
|
||||
# Tabs NACH Services initialisieren (override der Basis-Logik)
|
||||
self._init_tabs_with_services()
|
||||
|
||||
def _init_tabs_with_services(self):
|
||||
"""Tabs mit pruefmanager/data_grabber initialisieren"""
|
||||
try:
|
||||
# Bestehendes TabWidget löschen
|
||||
self.setWidget(None)
|
||||
|
||||
tab_widget = QTabWidget()
|
||||
for tab_class in self.tabs:
|
||||
tab_instance = tab_class(self) # parent=self.dockwidget
|
||||
tab_title = getattr(tab_class, "tab_title", tab_class.__name__)
|
||||
tab_widget.addTab(tab_instance, tab_title)
|
||||
|
||||
# Services durchreichen
|
||||
if hasattr(tab_instance, 'set_services'):
|
||||
tab_instance.set_services(
|
||||
pruefmanager=self.pruefmanager,
|
||||
data_grabber=self.data_grabber
|
||||
)
|
||||
|
||||
self.setWidget(tab_widget)
|
||||
except Exception as e:
|
||||
error("Services-Tabs konnten nicht initialisiert werden", str(e))
|
||||
|
||||
|
||||
431
ui/layout.py
Normal file
431
ui/layout.py
Normal file
@@ -0,0 +1,431 @@
|
||||
"""
|
||||
sn_plan41/ui/layout.py – Aufbau von Drucklayouts für Plan41.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import math
|
||||
from typing import Any
|
||||
|
||||
from sn_basis.functions.qt_wrapper import QFont
|
||||
from sn_basis.functions.qgiscore_wrapper import (
|
||||
QgsLayoutItem,
|
||||
QgsLayoutItemLabel,
|
||||
QgsLayoutItemMap,
|
||||
QgsLayoutPoint,
|
||||
QgsLayoutSize,
|
||||
QgsPrintLayout,
|
||||
QgsProject,
|
||||
QgsUnitTypes,
|
||||
)
|
||||
from sn_basis.functions.qgisui_wrapper import open_layout_designer
|
||||
|
||||
|
||||
MM = QgsUnitTypes.LayoutMillimeters
|
||||
|
||||
|
||||
class Layout:
|
||||
"""Erzeugt ein QGIS-Layout für den Druck."""
|
||||
|
||||
def __init__(self, project: Any | None = None) -> None:
|
||||
self.project = project or QgsProject.instance()
|
||||
|
||||
def create_single_page_layout(
|
||||
self,
|
||||
name: str,
|
||||
page_width_mm: float,
|
||||
page_height_mm: float,
|
||||
map_width_mm: float,
|
||||
map_height_mm: float,
|
||||
extent: Any,
|
||||
plotmassstab: float,
|
||||
thema: str = "",
|
||||
) -> Any:
|
||||
"""Erzeugt ein einseitiges Layout und öffnet es im Designer."""
|
||||
print(f"[Layout] create_single_page_layout: name='{name}', "
|
||||
f"page=({page_width_mm}x{page_height_mm}), map=({map_width_mm:.1f}x{map_height_mm:.1f}), "
|
||||
f"massstab={plotmassstab}, thema='{thema}'")
|
||||
layout_manager = self.project.layoutManager()
|
||||
print(f"[Layout] layoutManager: {layout_manager!r}")
|
||||
existing_layout = layout_manager.layoutByName(name)
|
||||
if existing_layout is not None:
|
||||
raise ValueError(f"Eine Vorlage mit der Bezeichnung '{name}' existiert bereits.")
|
||||
|
||||
layout = QgsPrintLayout(self.project)
|
||||
layout.initializeDefaults()
|
||||
layout.setName(name)
|
||||
print(f"[Layout] QgsPrintLayout erstellt: {layout!r}")
|
||||
|
||||
page = layout.pageCollection().page(0)
|
||||
page.setPageSize(QgsLayoutSize(page_width_mm, page_height_mm, MM))
|
||||
print(f"[Layout] Seitengröße gesetzt: {page_width_mm}x{page_height_mm} mm")
|
||||
|
||||
map_left_mm = 10.0
|
||||
map_top_mm = 10.0
|
||||
map_right_mm = map_left_mm + map_width_mm
|
||||
map_bottom_mm = map_top_mm + map_height_mm
|
||||
print(
|
||||
f"[Layout] Kartenbild-Kanten: rechts={map_right_mm:.1f} mm, unten={map_bottom_mm:.1f} mm"
|
||||
)
|
||||
|
||||
hauptkarte = QgsLayoutItemMap(layout)
|
||||
hauptkarte.setId("Hauptkarte")
|
||||
print(f"[Layout] QgsLayoutItemMap erstellt")
|
||||
|
||||
# Zum Layout hinzufügen, BEVOR Eigenschaften gesetzt werden
|
||||
layout.addLayoutItem(hauptkarte)
|
||||
print("[Layout] Hauptkarte zum Layout hinzugefügt")
|
||||
|
||||
# Position und Größe setzen
|
||||
hauptkarte.attemptMove(QgsLayoutPoint(map_left_mm, map_top_mm, MM))
|
||||
hauptkarte.attemptResize(QgsLayoutSize(map_width_mm, map_height_mm, MM))
|
||||
print(f"[Layout] Position und Größe gesetzt: pos=({map_left_mm}, {map_top_mm}), size=({map_width_mm:.1f}x{map_height_mm:.1f})")
|
||||
|
||||
# Extent und Maßstab setzen
|
||||
x_min = getattr(extent, "xMinimum", lambda: float("nan"))()
|
||||
y_min = getattr(extent, "yMinimum", lambda: float("nan"))()
|
||||
x_max = getattr(extent, "xMaximum", lambda: float("nan"))()
|
||||
y_max = getattr(extent, "yMaximum", lambda: float("nan"))()
|
||||
print(f"[Layout] Extent input: xmin={x_min}, ymin={y_min}, xmax={x_max}, ymax={y_max}")
|
||||
|
||||
if extent is not None and hasattr(extent, "isNull") and callable(extent.isNull) and not extent.isNull():
|
||||
try:
|
||||
hauptkarte.setExtent(extent)
|
||||
print(f"[Layout] setExtent() erfolgreich")
|
||||
except Exception as exc:
|
||||
print(f"[Layout] WARN: setExtent() fehlgeschlagen: {exc}")
|
||||
else:
|
||||
print(f"[Layout] WARN: Extent nicht gültig/callable, setExtent übersprungen")
|
||||
|
||||
# Maßstab setzen (NACH Extent)
|
||||
if isinstance(plotmassstab, (int, float)) and math.isfinite(plotmassstab) and plotmassstab > 0:
|
||||
try:
|
||||
hauptkarte.setScale(plotmassstab)
|
||||
print(f"[Layout] setScale({plotmassstab}) erfolgreich")
|
||||
except Exception as exc:
|
||||
print(f"[Layout] WARN: setScale({plotmassstab}) fehlgeschlagen: {exc}")
|
||||
else:
|
||||
print(f"[Layout] WARN: ungültiger plotmassstab={plotmassstab!r}, setScale übersprungen")
|
||||
|
||||
# Rahmen aktivieren
|
||||
set_frame_enabled = getattr(hauptkarte, "setFrameEnabled", None)
|
||||
if callable(set_frame_enabled):
|
||||
try:
|
||||
set_frame_enabled(True)
|
||||
print(f"[Layout] Rahmen aktiviert")
|
||||
except Exception as exc:
|
||||
print(f"[Layout] WARN: setFrameEnabled fehlgeschlagen: {exc}")
|
||||
|
||||
set_frame_stroke_width = getattr(hauptkarte, "setFrameStrokeWidth", None)
|
||||
if callable(set_frame_stroke_width):
|
||||
try:
|
||||
set_frame_stroke_width(0.5)
|
||||
print(f"[Layout] Rahmenstrichbreite auf 0.5 mm gesetzt")
|
||||
except Exception as exc:
|
||||
print(f"[Layout] WARN: setFrameStrokeWidth(0.5) fehlgeschlagen: {exc}")
|
||||
|
||||
# Kartenthema setzen
|
||||
if thema and thema != "aktuell":
|
||||
follow_theme = getattr(hauptkarte, "setFollowVisibilityPreset", None)
|
||||
set_theme_name = getattr(hauptkarte, "setFollowVisibilityPresetName", None)
|
||||
if callable(follow_theme):
|
||||
try:
|
||||
follow_theme(True)
|
||||
print(f"[Layout] setFollowVisibilityPreset(True)")
|
||||
except Exception as exc:
|
||||
print(f"[Layout] WARN: setFollowVisibilityPreset fehlgeschlagen: {exc}")
|
||||
if callable(set_theme_name):
|
||||
try:
|
||||
set_theme_name(thema)
|
||||
print(f"[Layout] Kartenthema auf '{thema}' gesetzt")
|
||||
except Exception as exc:
|
||||
print(f"[Layout] WARN: setFollowVisibilityPresetName('{thema}') fehlgeschlagen: {exc}")
|
||||
else:
|
||||
print(f"[Layout] Kartenthema nicht gesetzt (thema='{thema}')")
|
||||
|
||||
# Erst nach allen Properties: LayerSet einfrieren für Export
|
||||
set_keep_layer_set = getattr(hauptkarte, "setKeepLayerSet", None)
|
||||
if callable(set_keep_layer_set):
|
||||
try:
|
||||
set_keep_layer_set(True)
|
||||
print("[Layout] setKeepLayerSet(True) – Layerset für Export erhalten")
|
||||
except Exception as exc:
|
||||
print(f"[Layout] WARN: setKeepLayerSet fehlgeschlagen: {exc}")
|
||||
|
||||
# Refresh-Strategie (optional, nur wenn vorhanden)
|
||||
set_refresh_strategy = getattr(hauptkarte, "setRefreshStrategy", None)
|
||||
if callable(set_refresh_strategy):
|
||||
refresh_cache = getattr(hauptkarte, "RefreshLaterOnly", None) or getattr(hauptkarte, "RefreshWhenRequested", None) or 0
|
||||
if refresh_cache is not None:
|
||||
try:
|
||||
set_refresh_strategy(refresh_cache)
|
||||
print(f"[Layout] setRefreshStrategy({refresh_cache}) gesetzt")
|
||||
except Exception as exc:
|
||||
print(f"[Layout] WARN: setRefreshStrategy fehlgeschlagen: {exc}")
|
||||
|
||||
print(f"[Layout] Hauptkarte vollständig konfiguriert")
|
||||
|
||||
quellenangabe = QgsLayoutItemLabel(layout)
|
||||
quellenangabe.setId("Quellenangabe")
|
||||
quellenangabe.setText(
|
||||
"Quelle Geobasisdaten: GeoSN, "
|
||||
"<a href=\"https://www.govdata.de/dl-de/by-2-0\">dl-de/by-2-0</a><br><br>"
|
||||
"Quelle Fachdaten: Darstellung auf der Grundlage von Daten und mit Erlaubnis des "
|
||||
"Sächsischen Landesamtes für Umwelt, Landwirtschaft und Geologie<br><br>"
|
||||
"Basemap:<br><br>"
|
||||
"© GeoBasis-DE / <a href=\"https://www.bkg.bund.de\">BKG</a> ([%year($now)%]) "
|
||||
"<a href=\"https://creativecommons.org/licences/by/4.0/\">CC BY 4.0</a> "
|
||||
"mit teilweise angepasster Signatur<br>"
|
||||
)
|
||||
set_mode = getattr(quellenangabe, "setMode", None)
|
||||
mode_html = getattr(QgsLayoutItemLabel, "ModeHtml", None)
|
||||
print(f"[Layout] QgsLayoutItemLabel.ModeHtml={mode_html!r}")
|
||||
if callable(set_mode) and mode_html is not None:
|
||||
set_mode(mode_html)
|
||||
quellenangabe.setFont(QFont("Arial", 12))
|
||||
set_reference_point = getattr(quellenangabe, "setReferencePoint", None)
|
||||
lower_left = getattr(getattr(QgsLayoutItem, "ReferencePoint", object), "LowerLeft", None)
|
||||
print(f"[Layout] QgsLayoutItem.ReferencePoint.LowerLeft={lower_left!r}")
|
||||
if callable(set_reference_point) and lower_left is not None:
|
||||
set_reference_point(lower_left)
|
||||
quellenangabe_x_mm = map_right_mm + 20.0
|
||||
quellenangabe_y_mm = map_bottom_mm - 120.0
|
||||
quellenangabe.attemptMove(QgsLayoutPoint(quellenangabe_x_mm, quellenangabe_y_mm, MM))
|
||||
quellenangabe.attemptResize(QgsLayoutSize(180.0, 100.0, MM))
|
||||
layout.addLayoutItem(quellenangabe)
|
||||
print("[Layout] Quellenangabe zum Layout hinzugefügt")
|
||||
|
||||
layout_manager.addLayout(layout)
|
||||
print("[Layout] Layout zum LayoutManager hinzugefügt")
|
||||
open_layout_designer(layout)
|
||||
print("[Layout] Layout Designer geöffnet")
|
||||
return layout
|
||||
|
||||
def create_atlas_layout(
|
||||
self,
|
||||
name: str,
|
||||
page_width_mm: float,
|
||||
page_height_mm: float,
|
||||
map_width_mm: float,
|
||||
map_height_mm: float,
|
||||
extent: Any,
|
||||
plotmassstab: float,
|
||||
atlas_layer: Any,
|
||||
thema: str = "",
|
||||
) -> Any:
|
||||
"""Erzeugt ein Atlas-Layout mit Coverage-Layer ``Atlasobjekte``."""
|
||||
layout_manager = self.project.layoutManager()
|
||||
existing_layout = layout_manager.layoutByName(name)
|
||||
if existing_layout is not None:
|
||||
raise ValueError(f"Eine Vorlage mit der Bezeichnung '{name}' existiert bereits.")
|
||||
|
||||
layout = QgsPrintLayout(self.project)
|
||||
layout.initializeDefaults()
|
||||
layout.setName(name)
|
||||
|
||||
page = layout.pageCollection().page(0)
|
||||
page.setPageSize(QgsLayoutSize(page_width_mm, page_height_mm, MM))
|
||||
# Verifiziere, dass QGIS die Größe akzeptiert hat
|
||||
page_size = page.pageSize() if hasattr(page, 'pageSize') else None
|
||||
if page_size is not None and hasattr(page_size, 'width'):
|
||||
actual_w = float(page_size.width())
|
||||
actual_h = float(page_size.height())
|
||||
print(f"[Layout] Atlas Page gesetzt: x=0, y=0, width={page_width_mm:.1f}mm→{actual_w:.1f}mm, height={page_height_mm:.1f}mm→{actual_h:.1f}mm")
|
||||
else:
|
||||
print(f"[Layout] Atlas Page: x=0, y=0, width={page_width_mm:.1f}mm, height={page_height_mm:.1f}mm")
|
||||
|
||||
map_left_mm = 10.0
|
||||
map_top_mm = 10.0
|
||||
map_right_mm = map_left_mm + map_width_mm
|
||||
map_bottom_mm = map_top_mm + map_height_mm
|
||||
|
||||
hauptkarte = QgsLayoutItemMap(layout)
|
||||
hauptkarte.setId("Hauptkarte")
|
||||
layout.addLayoutItem(hauptkarte)
|
||||
hauptkarte.attemptMove(QgsLayoutPoint(map_left_mm, map_top_mm, MM))
|
||||
hauptkarte.attemptResize(QgsLayoutSize(map_width_mm, map_height_mm, MM))
|
||||
|
||||
# Verifiziere mit Units-bewussten Methoden (rect() kann andere Units verwenden).
|
||||
actual_w = None
|
||||
actual_h = None
|
||||
actual_x = None
|
||||
actual_y = None
|
||||
|
||||
# Versuche zuerst, die Größe mit Unit-Methoden zu lesen
|
||||
try:
|
||||
if hasattr(hauptkarte, 'sizeWithUnits'):
|
||||
size_item = hauptkarte.sizeWithUnits()
|
||||
if hasattr(size_item, 'width') and hasattr(size_item, 'height'):
|
||||
actual_w = float(size_item.width())
|
||||
actual_h = float(size_item.height())
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
try:
|
||||
if hasattr(hauptkarte, 'positionWithUnits'):
|
||||
pos_item = hauptkarte.positionWithUnits()
|
||||
if hasattr(pos_item, 'x') and hasattr(pos_item, 'y'):
|
||||
actual_x = float(pos_item.x())
|
||||
actual_y = float(pos_item.y())
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Fallback: nutze rect() und teile durch UnitFaktor, falls nötig
|
||||
if actual_w is None or actual_h is None:
|
||||
try:
|
||||
actual_rect = hauptkarte.rect()
|
||||
if actual_rect is not None:
|
||||
actual_w = float(actual_rect.width())
|
||||
actual_h = float(actual_rect.height())
|
||||
actual_x = float(actual_rect.x())
|
||||
actual_y = float(actual_rect.y())
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if actual_w is not None and actual_h is not None:
|
||||
print(f"[Layout] Atlas Hauptkarte gesetzt: x={map_left_mm:.1f}mm→{actual_x:.1f}mm, y={map_top_mm:.1f}mm→{actual_y:.1f}mm, width={map_width_mm:.1f}mm→{actual_w:.1f}mm, height={map_height_mm:.1f}mm→{actual_h:.1f}mm")
|
||||
else:
|
||||
print(f"[Layout] Atlas Hauptkarte: x={map_left_mm:.1f}mm, y={map_top_mm:.1f}mm, width={map_width_mm:.1f}mm, height={map_height_mm:.1f}mm")
|
||||
|
||||
if extent is not None and hasattr(extent, "isNull") and callable(extent.isNull) and not extent.isNull():
|
||||
try:
|
||||
hauptkarte.setExtent(extent)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if isinstance(plotmassstab, (int, float)) and math.isfinite(plotmassstab) and plotmassstab > 0:
|
||||
try:
|
||||
hauptkarte.setScale(plotmassstab)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
set_frame_enabled = getattr(hauptkarte, "setFrameEnabled", None)
|
||||
if callable(set_frame_enabled):
|
||||
try:
|
||||
set_frame_enabled(True)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
set_frame_stroke_width = getattr(hauptkarte, "setFrameStrokeWidth", None)
|
||||
if callable(set_frame_stroke_width):
|
||||
try:
|
||||
set_frame_stroke_width(0.5)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if thema and thema != "aktuell":
|
||||
follow_theme = getattr(hauptkarte, "setFollowVisibilityPreset", None)
|
||||
set_theme_name = getattr(hauptkarte, "setFollowVisibilityPresetName", None)
|
||||
if callable(follow_theme):
|
||||
try:
|
||||
follow_theme(True)
|
||||
except Exception:
|
||||
pass
|
||||
if callable(set_theme_name):
|
||||
try:
|
||||
set_theme_name(thema)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
set_atlas_driven = getattr(hauptkarte, "setAtlasDriven", None)
|
||||
if callable(set_atlas_driven):
|
||||
try:
|
||||
set_atlas_driven(True)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Fester Atlas-Maßstab: plotmassstab bleibt unverändert.
|
||||
set_scaling_mode = getattr(hauptkarte, "setAtlasScalingMode", None)
|
||||
if callable(set_scaling_mode):
|
||||
fixed_mode = getattr(QgsLayoutItemMap, "Fixed", None)
|
||||
if fixed_mode is not None:
|
||||
try:
|
||||
set_scaling_mode(fixed_mode)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
set_atlas_margin = getattr(hauptkarte, "setAtlasMargin", None)
|
||||
if callable(set_atlas_margin):
|
||||
try:
|
||||
set_atlas_margin(0.0)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
set_keep_layer_set = getattr(hauptkarte, "setKeepLayerSet", None)
|
||||
if callable(set_keep_layer_set):
|
||||
try:
|
||||
set_keep_layer_set(True)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Sicherheit: Größe nochmal nach Atlas-Konfiguration setzen, um sicherzustellen, dass sie nicht von der Atlas-Einstellung überschrieben wurde.
|
||||
hauptkarte.attemptResize(QgsLayoutSize(map_width_mm, map_height_mm, MM))
|
||||
print(f"[Layout] Atlas Hauptkarte Größe nach Atlas-Konfiguration erneut gesetzt: {map_width_mm:.1f}mm × {map_height_mm:.1f}mm")
|
||||
|
||||
quellenangabe = QgsLayoutItemLabel(layout)
|
||||
quellenangabe.setId("Quellenangabe")
|
||||
quellenangabe.setText(
|
||||
"Quelle Geobasisdaten: GeoSN, "
|
||||
"<a href=\"https://www.govdata.de/dl-de/by-2-0\">dl-de/by-2-0</a><br><br>"
|
||||
"Quelle Fachdaten: Darstellung auf der Grundlage von Daten und mit Erlaubnis des "
|
||||
"Sächsischen Landesamtes für Umwelt, Landwirtschaft und Geologie<br><br>"
|
||||
"Basemap:<br><br>"
|
||||
"© GeoBasis-DE / <a href=\"https://www.bkg.bund.de\">BKG</a> ([%year($now)%]) "
|
||||
"<a href=\"https://creativecommons.org/licences/by/4.0/\">CC BY 4.0</a> "
|
||||
"mit teilweise angepasster Signatur<br>"
|
||||
)
|
||||
set_mode = getattr(quellenangabe, "setMode", None)
|
||||
mode_html = getattr(QgsLayoutItemLabel, "ModeHtml", None)
|
||||
if callable(set_mode) and mode_html is not None:
|
||||
set_mode(mode_html)
|
||||
quellenangabe.setFont(QFont("Arial", 12))
|
||||
set_reference_point = getattr(quellenangabe, "setReferencePoint", None)
|
||||
lower_left = getattr(getattr(QgsLayoutItem, "ReferencePoint", object), "LowerLeft", None)
|
||||
if callable(set_reference_point) and lower_left is not None:
|
||||
set_reference_point(lower_left)
|
||||
quellenangabe.attemptMove(QgsLayoutPoint(map_right_mm + 5.0, map_bottom_mm, MM))
|
||||
quellenangabe.attemptResize(QgsLayoutSize(180.0, 100.0, MM))
|
||||
layout.addLayoutItem(quellenangabe)
|
||||
|
||||
seitenzahl_label = QgsLayoutItemLabel(layout)
|
||||
seitenzahl_label.setId("Seitenzahl")
|
||||
seitenzahl_label.setFont(QFont("Arial", 12))
|
||||
set_expr_enabled = getattr(seitenzahl_label, "setExpressionEnabled", None)
|
||||
if callable(set_expr_enabled):
|
||||
try:
|
||||
set_expr_enabled(True)
|
||||
except Exception:
|
||||
pass
|
||||
# Ausdrucksauswertung robust über [% ... %]-Platzhalter.
|
||||
seitenzahl_label.setText(
|
||||
"Seite [% attribute(@atlas_feature, 'Seitenzahl') %] von [% @atlas_totalfeatures %]"
|
||||
)
|
||||
set_reference_point = getattr(seitenzahl_label, "setReferencePoint", None)
|
||||
lower_left = getattr(getattr(QgsLayoutItem, "ReferencePoint", object), "LowerLeft", None)
|
||||
if callable(set_reference_point) and lower_left is not None:
|
||||
set_reference_point(lower_left)
|
||||
seitenzahl_label.attemptMove(QgsLayoutPoint(map_right_mm + 5.0, map_bottom_mm - 2.0, MM))
|
||||
seitenzahl_label.attemptResize(QgsLayoutSize(60.0, 8.0, MM))
|
||||
layout.addLayoutItem(seitenzahl_label)
|
||||
|
||||
atlas = layout.atlas()
|
||||
if atlas is not None:
|
||||
set_enabled = getattr(atlas, "setEnabled", None)
|
||||
set_coverage = getattr(atlas, "setCoverageLayer", None)
|
||||
set_hide_coverage = getattr(atlas, "setHideCoverage", None)
|
||||
set_filter_features = getattr(atlas, "setFilterFeatures", None)
|
||||
set_page_name = getattr(atlas, "setPageNameExpression", None)
|
||||
|
||||
if callable(set_enabled):
|
||||
set_enabled(True)
|
||||
if callable(set_coverage):
|
||||
set_coverage(atlas_layer)
|
||||
if callable(set_hide_coverage):
|
||||
set_hide_coverage(True)
|
||||
if callable(set_filter_features):
|
||||
set_filter_features(False)
|
||||
if callable(set_page_name):
|
||||
set_page_name("attribute(@atlas_feature, 'Seitenzahl')")
|
||||
|
||||
layout_manager.addLayout(layout)
|
||||
open_layout_designer(layout)
|
||||
return layout
|
||||
1070
ui/tab_a_logic.py
Normal file
1070
ui/tab_a_logic.py
Normal file
File diff suppressed because it is too large
Load Diff
317
ui/tab_a_ui.py
Normal file
317
ui/tab_a_ui.py
Normal file
@@ -0,0 +1,317 @@
|
||||
"""
|
||||
sn_plan41/ui/tab_a_ui.py – UI für Tab A (Daten)
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Optional
|
||||
|
||||
from sn_basis.functions.qt_wrapper import (
|
||||
QWidget,
|
||||
QVBoxLayout,
|
||||
QLabel,
|
||||
QPushButton,
|
||||
QToolButton,
|
||||
QFileDialog,
|
||||
QMessageBox,
|
||||
ToolButtonTextBesideIcon,
|
||||
ArrowDown,
|
||||
ArrowRight,
|
||||
SizePolicyPreferred,
|
||||
SizePolicyMaximum,
|
||||
QComboBox,
|
||||
)
|
||||
from sn_basis.functions.qgisui_wrapper import QgsFileWidget, QgsMapLayerComboBox
|
||||
from sn_basis.functions.qgiscore_wrapper import QgsProject, QgsMapLayerProxyModel
|
||||
from sn_basis.functions.variable_wrapper import get_variable, set_variable
|
||||
from sn_basis.modules.pruef_ergebnis import pruef_ergebnis
|
||||
|
||||
# Services (werden von DockWidget injiziert)
|
||||
from sn_basis.modules.Pruefmanager import Pruefmanager
|
||||
from sn_basis.modules.DataGrabber import DataGrabber
|
||||
from sn_basis.modules.Dateipruefer import Dateipruefer
|
||||
from sn_plan41.ui.tab_a_logic import TabALogic
|
||||
from sn_basis.modules.linkpruefer import Linkpruefer
|
||||
from sn_basis.modules.stilpruefer import Stilpruefer
|
||||
|
||||
# Konstanten
|
||||
RAUMFILTER_VAR = "Raumfilter"
|
||||
RAUMFILTER_OPTIONS = ("Verfahrensgebiet", "Pufferlayer", "ohne")
|
||||
RAUMFILTER_DEFAULT = "Pufferlayer"
|
||||
|
||||
|
||||
class TabA(QWidget):
|
||||
"""
|
||||
UI-Klasse für Tab A (Daten) des Plan41-Plugins.
|
||||
|
||||
Zuständig für:
|
||||
- Anzeige und Auswahl von Verfahrens-DB, Linklisten und Layern
|
||||
- Steuerung der Pipeline über "Fachdaten laden"
|
||||
- Persistierung von UI-States via Projektvariablen
|
||||
|
||||
Services (Pruefmanager, DataGrabber) werden zur Laufzeit vom DockWidget injiziert.
|
||||
Alle fachlichen Prüfungen laufen über den zentralen Pruefmanager.
|
||||
"""
|
||||
|
||||
tab_title = "Daten" #: Tab-Titel für BaseDockWidget
|
||||
|
||||
def __init__(self, parent: Optional[QWidget] = None):
|
||||
"""
|
||||
Initialisiert die UI-Struktur.
|
||||
|
||||
Services werden später über :meth:`set_services` injiziert.
|
||||
|
||||
:param parent: Parent-Widget (typischerweise DockWidget)
|
||||
"""
|
||||
super().__init__(parent)
|
||||
|
||||
# Services (werden von DockWidget gesetzt)
|
||||
self.pruefmanager: Optional[Pruefmanager] = None
|
||||
|
||||
self.logic: Optional[TabALogic] = None
|
||||
|
||||
# UI-State
|
||||
self.verfahrens_db: Optional[str] = None
|
||||
self.lokale_linkliste: Optional[str] = None
|
||||
self._pufferlayer = None
|
||||
self._attributes_list = []
|
||||
|
||||
# UI-Referenzen
|
||||
self._raumfilter_combo: Optional[QComboBox] = None
|
||||
|
||||
self._build_ui()
|
||||
self._restore_state()
|
||||
|
||||
def set_services(self, pruefmanager: Pruefmanager, data_grabber: DataGrabber) -> None:
|
||||
"""
|
||||
Injiziert Services vom übergeordneten DockWidget.
|
||||
|
||||
:param pruefmanager: Zentrale Prüfmanager-Instanz
|
||||
:param data_grabber: DataGrabber für Quellenprüfung/Abruf
|
||||
"""
|
||||
self.pruefmanager = pruefmanager
|
||||
self.data_grabber = data_grabber
|
||||
self.logic = TabALogic(
|
||||
pruefmanager=self.pruefmanager,
|
||||
link_pruefer=Linkpruefer(),
|
||||
stil_pruefer=Stilpruefer(),
|
||||
)
|
||||
|
||||
# DataGrabber in die Logik injizieren
|
||||
self.logic.data_grabber = self.data_grabber
|
||||
|
||||
def _build_ui(self) -> None:
|
||||
"""Erstellt die komplette UI-Hierarchie mit allen Gruppen."""
|
||||
main_layout = QVBoxLayout()
|
||||
main_layout.setSpacing(4)
|
||||
main_layout.setContentsMargins(4, 4, 4, 4)
|
||||
|
||||
# === VERFAHRENS-DATENBANK ===
|
||||
self.group_button = QToolButton()
|
||||
self.group_button.setText("Verfahrens-Datenbank")
|
||||
self.group_button.setCheckable(True)
|
||||
self.group_button.setChecked(True)
|
||||
self.group_button.setToolButtonStyle(ToolButtonTextBesideIcon)
|
||||
self.group_button.setArrowType(ArrowDown)
|
||||
self.group_button.setStyleSheet("font-weight: bold;")
|
||||
self.group_button.toggled.connect(self._toggle_group)
|
||||
main_layout.addWidget(self.group_button)
|
||||
|
||||
self.group_content = QWidget()
|
||||
self.group_content.setSizePolicy(SizePolicyPreferred, SizePolicyMaximum)
|
||||
group_layout = QVBoxLayout()
|
||||
group_layout.setSpacing(2)
|
||||
group_layout.setContentsMargins(10, 4, 4, 4)
|
||||
|
||||
group_layout.addWidget(QLabel("bestehende Datei auswählen"))
|
||||
self.file_widget = QgsFileWidget()
|
||||
self.file_widget.setStorageMode(QgsFileWidget.GetFile)
|
||||
self.file_widget.setFilter("Geopackage (*.gpkg)")
|
||||
self.file_widget.fileChanged.connect(self._on_verfahrens_db_changed)
|
||||
group_layout.addWidget(self.file_widget)
|
||||
|
||||
group_layout.addWidget(QLabel("-oder-"))
|
||||
self.btn_new = QPushButton("Neue Verfahrens-DB anlegen")
|
||||
self.btn_new.clicked.connect(self._create_new_gpkg)
|
||||
group_layout.addWidget(self.btn_new)
|
||||
|
||||
self.group_content.setLayout(group_layout)
|
||||
main_layout.addWidget(self.group_content)
|
||||
|
||||
# === OPTIONALE LINKLISTE ===
|
||||
self.optional_button = QToolButton()
|
||||
self.optional_button.setText("Optional: Lokale Linkliste")
|
||||
self.optional_button.setCheckable(True)
|
||||
self.optional_button.setChecked(False)
|
||||
self.optional_button.setToolButtonStyle(ToolButtonTextBesideIcon)
|
||||
self.optional_button.setArrowType(ArrowRight)
|
||||
self.optional_button.setStyleSheet("font-weight: bold; margin-top: 6px;")
|
||||
self.optional_button.toggled.connect(self._toggle_optional)
|
||||
main_layout.addWidget(self.optional_button)
|
||||
|
||||
self.optional_content = QWidget()
|
||||
self.optional_content.setSizePolicy(SizePolicyPreferred, SizePolicyMaximum)
|
||||
optional_layout = QVBoxLayout()
|
||||
optional_layout.setSpacing(2)
|
||||
optional_layout.setContentsMargins(10, 4, 4, 20)
|
||||
|
||||
optional_layout.addWidget(QLabel("(frei lassen für globale Linkliste)"))
|
||||
self.linkliste_widget = QgsFileWidget()
|
||||
self.linkliste_widget.setStorageMode(QgsFileWidget.GetFile)
|
||||
self.linkliste_widget.setFilter("Excelliste (*.xlsx)")
|
||||
self.linkliste_widget.fileChanged.connect(self._on_linkliste_changed)
|
||||
optional_layout.addWidget(self.linkliste_widget)
|
||||
|
||||
self.optional_content.setLayout(optional_layout)
|
||||
self.optional_content.setVisible(False)
|
||||
main_layout.addWidget(self.optional_content)
|
||||
|
||||
# === LAYER-AUSWAHL + RAUMFILTER ===
|
||||
layer_label = QLabel("Verfahrensgebiet-Layer auswählen")
|
||||
layer_label.setStyleSheet("font-weight: bold; margin-top: 6px;")
|
||||
main_layout.addWidget(layer_label)
|
||||
|
||||
self.layer_combo = QgsMapLayerComboBox()
|
||||
self.layer_combo.setFilters(QgsMapLayerProxyModel.VectorLayer)
|
||||
self.layer_combo.layerChanged.connect(self._on_layer_changed)
|
||||
main_layout.addWidget(self.layer_combo)
|
||||
|
||||
main_layout.addWidget(QLabel("Raumfilter"))
|
||||
self._raumfilter_combo = QComboBox(self)
|
||||
self._raumfilter_combo.setToolTip("Wählt die räumliche Bezugsfläche für die Datenextraktion.")
|
||||
self._raumfilter_combo.addItems(RAUMFILTER_OPTIONS)
|
||||
self._raumfilter_combo.currentTextChanged.connect(self._on_raumfilter_changed)
|
||||
main_layout.addWidget(self._raumfilter_combo)
|
||||
|
||||
# === PIPELINE-STEUERUNG ===
|
||||
self.btn_pipeline = QPushButton("Fachdaten laden")
|
||||
self.btn_pipeline.setToolTip("Starte Pipeline: Linkliste → DataGrabber → Datenschreiber → Log")
|
||||
self.btn_pipeline.clicked.connect(self._on_load_fachdaten)
|
||||
main_layout.addWidget(self.btn_pipeline)
|
||||
|
||||
|
||||
main_layout.addStretch(1)
|
||||
self.setLayout(main_layout)
|
||||
|
||||
def _restore_state(self) -> None:
|
||||
"""Stellt UI-State aus Projektvariablen/Persistenz wieder her."""
|
||||
# Verfahrens-DB
|
||||
try:
|
||||
db = get_variable("tab_a_verfahrens_db", scope="project")
|
||||
if db and self.file_widget:
|
||||
self.file_widget.setFilePath(db)
|
||||
self.verfahrens_db = db
|
||||
self._update_group_color()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Linkliste
|
||||
try:
|
||||
link = get_variable("tab_a_linkliste", scope="project")
|
||||
if link and self.linkliste_widget:
|
||||
self.linkliste_widget.setFilePath(link)
|
||||
self.lokale_linkliste = link
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Layer
|
||||
try:
|
||||
layer_id = get_variable("tab_a_layer_id", scope="project")
|
||||
if layer_id:
|
||||
layer = QgsProject.instance().mapLayer(layer_id)
|
||||
if layer and self.layer_combo:
|
||||
self.layer_combo.setLayer(layer)
|
||||
self._pufferlayer = layer
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Raumfilter (schon im _build_ui behandelt)
|
||||
|
||||
# === UI CALLBACKS ===
|
||||
def _toggle_group(self, checked: bool) -> None:
|
||||
"""Zeigt/verbirgt Verfahrens-DB-Gruppe."""
|
||||
self.group_button.setArrowType(ArrowDown if checked else ArrowRight)
|
||||
self.group_content.setVisible(checked)
|
||||
|
||||
def _toggle_optional(self, checked: bool) -> None:
|
||||
"""Zeigt/verbirgt optionale Linkliste."""
|
||||
self.optional_button.setArrowType(ArrowDown if checked else ArrowRight)
|
||||
self.optional_content.setVisible(checked)
|
||||
|
||||
def _on_verfahrens_db_changed(self, path: str) -> None:
|
||||
"""Persistieret Verfahrens-DB-Pfad."""
|
||||
self.verfahrens_db = path
|
||||
set_variable("tab_a_verfahrens_db", path, scope="project")
|
||||
self._update_group_color()
|
||||
|
||||
def _on_linkliste_changed(self, path: str) -> None:
|
||||
"""Persistieret lokale Linkliste."""
|
||||
self.lokale_linkliste = path
|
||||
set_variable("tab_a_linkliste", path, scope="project")
|
||||
|
||||
def _on_layer_changed(self, layer) -> None:
|
||||
"""Persistiert Layer-Auswahl und registriert Verfahrensgebiet."""
|
||||
self._pufferlayer = layer
|
||||
|
||||
if not layer:
|
||||
return
|
||||
|
||||
# UI-State speichern
|
||||
set_variable("tab_a_layer_id", layer.id(), scope="project")
|
||||
|
||||
# 🔹 NEU: Verfahrensgebiet explizit registrieren
|
||||
if self.logic:
|
||||
self.logic.save_verfahrensgebiet_layer(layer)
|
||||
|
||||
|
||||
def _on_raumfilter_changed(self, value: str) -> None:
|
||||
"""Persistieret Raumfilter-Auswahl."""
|
||||
set_variable(RAUMFILTER_VAR, value, scope="project")
|
||||
|
||||
def _create_new_gpkg(self) -> None:
|
||||
"""Delegiert GPKG-Erstellung (Prüfungen über Services)."""
|
||||
file_path, _ = QFileDialog.getSaveFileName(
|
||||
self, "Neue Verfahrens-Datenbank", "", "Geopackage (*.gpkg)"
|
||||
)
|
||||
if file_path:
|
||||
if not file_path.lower().endswith(".gpkg"):
|
||||
file_path += ".gpkg"
|
||||
self.verfahrens_db = file_path
|
||||
self.file_widget.setFilePath(file_path)
|
||||
set_variable("tab_a_verfahrens_db", file_path, scope="project")
|
||||
self._update_group_color()
|
||||
|
||||
def _update_group_color(self) -> None:
|
||||
"""Visuelles Feedback für Verfahrens-DB-Status."""
|
||||
if self.verfahrens_db:
|
||||
self.group_button.setStyleSheet("font-weight: bold; background-color: ##d7a8ff;")
|
||||
else:
|
||||
self.group_button.setStyleSheet("font-weight: bold;")
|
||||
|
||||
|
||||
|
||||
|
||||
def _on_load_fachdaten(self) -> None:
|
||||
"""Kompatibilitäts-Handler → neue Pipeline."""
|
||||
source = self.file_widget.filePath()
|
||||
raumfilter = self._raumfilter_combo.currentText()
|
||||
linkliste = self.linkliste_widget.filePath()
|
||||
|
||||
if self.logic and self.layer_combo:
|
||||
layer = self.layer_combo.currentLayer()
|
||||
else:
|
||||
layer = None
|
||||
|
||||
if layer and layer.name() == "Verfahrensgebiet":
|
||||
self.logic.save_verfahrensgebiet_layer(layer)
|
||||
|
||||
if self.logic:
|
||||
try:
|
||||
self.logic._on_run_pipeline(source, linkliste, raumfilter)
|
||||
except Exception as exc:
|
||||
QMessageBox.warning(
|
||||
self,
|
||||
"Fehler beim Laden",
|
||||
f"Fehler beim Ausführen der Pipeline: {exc}",
|
||||
QMessageBox.StandardButton.Ok,
|
||||
)
|
||||
680
ui/tab_b_logic.py
Normal file
680
ui/tab_b_logic.py
Normal file
@@ -0,0 +1,680 @@
|
||||
"""
|
||||
sn_plan41/ui/tab_b_logic.py – Fachlogik für Tab B (Druck)
|
||||
"""
|
||||
from __future__ import annotations
|
||||
import math
|
||||
from typing import Any
|
||||
|
||||
from sn_basis.functions.qt_wrapper import QVariant
|
||||
from sn_basis.functions.variable_wrapper import set_variable, get_variable
|
||||
from sn_basis.functions.qgiscore_wrapper import get_layer_extent
|
||||
from sn_basis.functions.qgiscore_wrapper import (
|
||||
QgsProject,
|
||||
QgsVectorLayer,
|
||||
QgsGeometry,
|
||||
QgsFeature,
|
||||
QgsField,
|
||||
QgsVectorFileWriter,
|
||||
)
|
||||
from sn_basis.functions.sys_wrapper import get_plugin_root, join_path, file_exists
|
||||
from sn_basis.modules.Pruefmanager import Pruefmanager
|
||||
from sn_basis.modules.layerpruefer import Layerpruefer
|
||||
from sn_plan41.ui.layout import Layout
|
||||
|
||||
|
||||
KARTENNAME_VAR = "sn_kartenname"
|
||||
PLOTMASSSTAB_VAR = "sn_plotmassstab"
|
||||
VIEW_VAR = "sn_view"
|
||||
ZIELGROESSE_VAR = "sn_zielgroesse"
|
||||
FORMFAKTOR_VAR = "sn_formfaktor"
|
||||
KARTENNAME_38 = "§38"
|
||||
KARTENNAME_41 = "§41"
|
||||
MASSSTAB_WIE_KARTENFENSTER = "Wie Kartenfenster"
|
||||
THEMA_WIE_KARTENFENSTER = "wie kartenfenster"
|
||||
|
||||
KARTENNAME_BY_AUSWAHL = {
|
||||
KARTENNAME_38: "Planungsübersicht §38 FlurbG",
|
||||
KARTENNAME_41: "Karte zum Plan über die gemeinschaftlichen und öffentlichen Anlagen (§ 41 FlurbG)",
|
||||
}
|
||||
|
||||
PLOTMASSSTAB_BY_AUSWAHL = {
|
||||
"1:5.000": "5000",
|
||||
"1:10.000": "10000",
|
||||
"1:15.000": "15000",
|
||||
"1:20.000": "20000",
|
||||
"1:25.000": "25000",
|
||||
"1:50.000": "50000",
|
||||
"1:100.000": "100000",
|
||||
}
|
||||
|
||||
# Breite x Höhe in mm (Hochformat, DIN-Standard)
|
||||
DIN_GROESSEN: dict[str, tuple[int, int]] = {
|
||||
"DIN A0": (841, 1189),
|
||||
"DIN A1": (594, 841),
|
||||
"DIN A2": (420, 594),
|
||||
"DIN A3": (297, 420),
|
||||
"DIN A4": (210, 297),
|
||||
}
|
||||
DIN_STANDARD = "DIN A0"
|
||||
|
||||
class TabBLogic:
|
||||
"""
|
||||
Kapselt die Fachlogik von Tab B.
|
||||
"""
|
||||
|
||||
def __init__(self, pruefmanager: Pruefmanager) -> None:
|
||||
self.pruefmanager = pruefmanager
|
||||
|
||||
@staticmethod
|
||||
def _wkt_rect(x_min: float, y_min: float, x_max: float, y_max: float) -> str:
|
||||
return (
|
||||
f"POLYGON(({x_min} {y_min}, {x_max} {y_min}, {x_max} {y_max}, "
|
||||
f"{x_min} {y_max}, {x_min} {y_min}))"
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def _set_topological_editing_enabled() -> None:
|
||||
project = QgsProject.instance()
|
||||
set_topological = getattr(project, "setTopologicalEditing", None)
|
||||
if callable(set_topological):
|
||||
try:
|
||||
set_topological(True)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def _apply_atlas_style(layer: Any) -> None:
|
||||
style_path = join_path(get_plugin_root(), "sn_plan41", "assets", "atlasobjekte.qml")
|
||||
if not file_exists(style_path):
|
||||
return
|
||||
try:
|
||||
ok, _ = layer.loadNamedStyle(str(style_path))
|
||||
if ok:
|
||||
getattr(layer, "triggerRepaint", lambda: None)()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def _find_tile_grid_for_roll_atlas(
|
||||
kartenbild_w_mm: float,
|
||||
kartenbild_h_mm: float,
|
||||
din_dims: tuple[int, int],
|
||||
respect_max_sheet_size: bool = False,
|
||||
) -> tuple[int, int, float, float]:
|
||||
"""Bestimmt ein Atlas-Raster für Endlosrolle, das Kacheln statt Streifen erzeugt.
|
||||
|
||||
Ziel: Kachel-Seitenverhältnis möglichst nah am Einzelblatt-Kartenfenster
|
||||
(inkl. Rändern) bei zugleich moderater Seitenanzahl.
|
||||
"""
|
||||
if kartenbild_w_mm <= 0 or kartenbild_h_mm <= 0:
|
||||
return 1, 1, max(1.0, kartenbild_w_mm), max(1.0, kartenbild_h_mm)
|
||||
|
||||
# Einzelblatt-Kartenfenster für beide Orientierungen
|
||||
dim_w, dim_h = float(din_dims[0]), float(din_dims[1])
|
||||
orientation_candidates: list[tuple[float, float]] = [
|
||||
(dim_w - 210.0, dim_h - 20.0),
|
||||
(dim_h - 210.0, dim_w - 20.0),
|
||||
]
|
||||
|
||||
best_score = math.inf
|
||||
best_result: tuple[int, int, float, float] | None = None
|
||||
|
||||
for target_w, target_h in orientation_candidates:
|
||||
if target_w <= 0 or target_h <= 0:
|
||||
continue
|
||||
|
||||
target_aspect = target_w / target_h
|
||||
px0 = max(1, int(round(kartenbild_w_mm / target_w)))
|
||||
py0 = max(1, int(round(kartenbild_h_mm / target_h)))
|
||||
|
||||
for pages_x in range(max(1, px0 - 3), px0 + 4):
|
||||
for pages_y in range(max(1, py0 - 3), py0 + 4):
|
||||
tile_w = kartenbild_w_mm / pages_x
|
||||
tile_h = kartenbild_h_mm / pages_y
|
||||
if tile_w <= 0 or tile_h <= 0:
|
||||
continue
|
||||
|
||||
# Im Blatt-Modus darf die resultierende Atlasseite die
|
||||
# gewählte Zielgröße (inkl. Orientierung) nicht überschreiten.
|
||||
if respect_max_sheet_size and (tile_w > target_w or tile_h > target_h):
|
||||
continue
|
||||
|
||||
tile_aspect = tile_w / tile_h
|
||||
# 0 bei perfekter Übereinstimmung; symmetrisch für >1/<1
|
||||
aspect_error = abs(math.log(tile_aspect / target_aspect))
|
||||
|
||||
# Streifen bestrafen
|
||||
strip_penalty = 0.0
|
||||
if tile_aspect < 0.5:
|
||||
strip_penalty = abs(math.log(tile_aspect / 0.5))
|
||||
elif tile_aspect > 2.0:
|
||||
strip_penalty = abs(math.log(tile_aspect / 2.0))
|
||||
|
||||
page_count = pages_x * pages_y
|
||||
|
||||
# Gewichtung: zuerst Formatnähe, dann Streifenvermeidung,
|
||||
# danach Seitenzahl minimieren.
|
||||
score = (aspect_error * 12.0) + (strip_penalty * 6.0) + (page_count * 0.20)
|
||||
|
||||
if score < best_score:
|
||||
best_score = score
|
||||
best_result = (pages_x, pages_y, tile_w, tile_h)
|
||||
|
||||
if best_result is None:
|
||||
if respect_max_sheet_size:
|
||||
fallback_candidates: list[tuple[int, int, float, float, int]] = []
|
||||
for target_w, target_h in orientation_candidates:
|
||||
if target_w <= 0 or target_h <= 0:
|
||||
continue
|
||||
pages_x = max(1, math.ceil(kartenbild_w_mm / target_w))
|
||||
pages_y = max(1, math.ceil(kartenbild_h_mm / target_h))
|
||||
tile_w = kartenbild_w_mm / pages_x
|
||||
tile_h = kartenbild_h_mm / pages_y
|
||||
fallback_candidates.append((pages_x, pages_y, tile_w, tile_h, pages_x * pages_y))
|
||||
|
||||
if fallback_candidates:
|
||||
fallback_candidates.sort(key=lambda entry: (entry[4], abs(math.log((entry[2] / entry[3]) if entry[3] > 0 else 1.0))))
|
||||
fx, fy, fw, fh, _ = fallback_candidates[0]
|
||||
return fx, fy, fw, fh
|
||||
|
||||
return 1, 1, kartenbild_w_mm, kartenbild_h_mm
|
||||
|
||||
return best_result
|
||||
|
||||
def _create_atlasobjekte_layer(
|
||||
self,
|
||||
layer: Any,
|
||||
extent: Any,
|
||||
pages_x: int,
|
||||
pages_y: int,
|
||||
seite_karte_w: float,
|
||||
seite_karte_h: float,
|
||||
massstab_zahl: float,
|
||||
) -> Any | None:
|
||||
layer_crs = layer.crs() if hasattr(layer, "crs") else None
|
||||
crs_authid = layer_crs.authid() if layer_crs is not None and hasattr(layer_crs, "authid") else "EPSG:25832"
|
||||
atlas_layer = QgsVectorLayer(f"Polygon?crs={crs_authid}", "Atlasobjekte", "memory")
|
||||
if not atlas_layer or not atlas_layer.isValid():
|
||||
return None
|
||||
|
||||
provider = atlas_layer.dataProvider()
|
||||
provider.addAttributes([
|
||||
QgsField("Seitenzahl", QVariant.Int),
|
||||
])
|
||||
atlas_layer.updateFields()
|
||||
|
||||
tile_w_m = seite_karte_w * massstab_zahl / 1000.0
|
||||
tile_h_m = seite_karte_h * massstab_zahl / 1000.0
|
||||
|
||||
x_min = extent.xMinimum()
|
||||
y_min = extent.yMinimum()
|
||||
x_max = extent.xMaximum()
|
||||
y_max = extent.yMaximum()
|
||||
|
||||
seitenzahl = 1
|
||||
features = []
|
||||
for row_idx in range(pages_y):
|
||||
tile_y_max = y_max - row_idx * tile_h_m
|
||||
tile_y_min = tile_y_max - tile_h_m
|
||||
|
||||
for col_idx in range(pages_x):
|
||||
tile_x_min = x_min + col_idx * tile_w_m
|
||||
tile_x_max = tile_x_min + tile_w_m
|
||||
|
||||
tile_geom = QgsGeometry.fromWkt(
|
||||
self._wkt_rect(tile_x_min, tile_y_min, tile_x_max, tile_y_max)
|
||||
)
|
||||
|
||||
feat = QgsFeature(atlas_layer.fields())
|
||||
feat.setGeometry(tile_geom)
|
||||
feat["Seitenzahl"] = seitenzahl
|
||||
features.append(feat)
|
||||
seitenzahl += 1
|
||||
|
||||
if not features:
|
||||
return None
|
||||
|
||||
provider.addFeatures(features)
|
||||
atlas_layer.updateExtents()
|
||||
self._set_topological_editing_enabled()
|
||||
|
||||
verfahrens_db = get_variable("verfahrens_db", scope="project") or ""
|
||||
print(f"[TabBLogic] Atlasobjekte: verfahrens_db='{verfahrens_db}'")
|
||||
if not verfahrens_db:
|
||||
QgsProject.instance().addMapLayer(atlas_layer)
|
||||
self._apply_atlas_style(atlas_layer)
|
||||
print("[TabBLogic] Atlasobjekte temporär ins Projekt geladen")
|
||||
return atlas_layer
|
||||
|
||||
opts = QgsVectorFileWriter.SaveVectorOptions()
|
||||
opts.driverName = "GPKG"
|
||||
opts.fileEncoding = "UTF-8"
|
||||
opts.layerName = "Atlasobjekte"
|
||||
if file_exists(verfahrens_db):
|
||||
opts.actionOnExistingFile = QgsVectorFileWriter.CreateOrOverwriteLayer
|
||||
else:
|
||||
opts.actionOnExistingFile = QgsVectorFileWriter.CreateOrOverwriteFile
|
||||
|
||||
err_result = QgsVectorFileWriter.writeAsVectorFormatV3(
|
||||
atlas_layer,
|
||||
verfahrens_db,
|
||||
QgsProject.instance().transformContext(),
|
||||
opts,
|
||||
)
|
||||
|
||||
# QGIS-Versionen liefern hier entweder nur WriterError
|
||||
# oder ein Tupel (WriterError, msg, newPath, layerName).
|
||||
err_code = err_result[0] if isinstance(err_result, tuple) else err_result
|
||||
if err_code != QgsVectorFileWriter.NoError:
|
||||
print(f"[TabBLogic] Atlasobjekte schreiben fehlgeschlagen: err={err_result}")
|
||||
return None
|
||||
|
||||
for existing in QgsProject.instance().mapLayersByName("Atlasobjekte"):
|
||||
try:
|
||||
QgsProject.instance().removeMapLayer(existing.id())
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
uri = f"{verfahrens_db}|layername=Atlasobjekte"
|
||||
loaded_layer = QgsVectorLayer(uri, "Atlasobjekte", "ogr")
|
||||
if not loaded_layer or not loaded_layer.isValid():
|
||||
print(f"[TabBLogic] Atlasobjekte laden aus GPKG fehlgeschlagen: uri='{uri}'")
|
||||
return None
|
||||
|
||||
QgsProject.instance().addMapLayer(loaded_layer)
|
||||
self._apply_atlas_style(loaded_layer)
|
||||
print("[TabBLogic] Atlasobjekte aus Verfahrens-DB geladen und gestylt")
|
||||
return loaded_layer
|
||||
|
||||
def set_kartenname_for_auswahl(self, auswahl: str) -> None:
|
||||
"""Setzt die Projektvariable ``sn_kartenname`` anhand der Kartennamen-Auswahl."""
|
||||
kartenname = KARTENNAME_BY_AUSWAHL.get(auswahl, "")
|
||||
set_variable(KARTENNAME_VAR, kartenname, scope="project")
|
||||
|
||||
def set_plotmassstab_for_auswahl(self, auswahl: str, aktueller_massstab: float | None = None) -> None:
|
||||
"""Setzt die Projektvariable ``sn_plotmassstab`` anhand der Maßstabsauswahl."""
|
||||
if auswahl == MASSSTAB_WIE_KARTENFENSTER:
|
||||
if aktueller_massstab and aktueller_massstab > 0:
|
||||
set_variable(PLOTMASSSTAB_VAR, str(int(round(aktueller_massstab))), scope="project")
|
||||
else:
|
||||
set_variable(PLOTMASSSTAB_VAR, "", scope="project")
|
||||
return
|
||||
|
||||
value = PLOTMASSSTAB_BY_AUSWAHL.get(auswahl, "")
|
||||
set_variable(PLOTMASSSTAB_VAR, value, scope="project")
|
||||
|
||||
def set_view_for_auswahl(self, auswahl: str) -> None:
|
||||
"""Setzt ``sn_view`` auf ``aktuell`` oder den Namen des gewählten Layerthemas."""
|
||||
if auswahl == THEMA_WIE_KARTENFENSTER:
|
||||
set_variable(VIEW_VAR, "aktuell", scope="project")
|
||||
return
|
||||
|
||||
set_variable(VIEW_VAR, auswahl or "", scope="project")
|
||||
|
||||
def set_zielgroesse_for_auswahl(self, auswahl: str) -> None:
|
||||
"""Setzt ``sn_zielgroesse`` auf den gewählten DIN-Namen."""
|
||||
set_variable(ZIELGROESSE_VAR, auswahl if auswahl in DIN_GROESSEN else DIN_STANDARD, scope="project")
|
||||
|
||||
def set_formfaktor(self, endlosrolle: bool) -> None:
|
||||
"""Setzt ``sn_formfaktor`` auf ``Endlosrolle`` oder ``Blatt``."""
|
||||
set_variable(FORMFAKTOR_VAR, "Endlosrolle" if endlosrolle else "Blatt", scope="project")
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────
|
||||
# Pipeline: Druckvorlage_anlegen
|
||||
# ─────────────────────────────────────────────────────────────────────────
|
||||
|
||||
def druckvorlage_anlegen(
|
||||
self,
|
||||
layer: object,
|
||||
kartenname_auswahl: str,
|
||||
massstab_auswahl: str,
|
||||
zielgroesse: str,
|
||||
formfaktor: bool,
|
||||
) -> dict:
|
||||
"""Pipeline 'Druckvorlage_anlegen'.
|
||||
|
||||
Prüft Parameter, berechnet Plotgröße und stellt bei Bedarf Atlas-Rückfrage.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
layer:
|
||||
Aktuell gewählter Verfahrensgebiet-Layer aus Tab A.
|
||||
|
||||
Returns
|
||||
-------
|
||||
dict
|
||||
``ok`` (bool): Ob die Pipeline erfolgreich durchlaufen werden soll.
|
||||
``switch_to_tab_a`` (bool): Ob Tab A aktiviert werden soll.
|
||||
``atlas_seiten`` (int): Anzahl benötigter Seiten (1 = kein Atlas).
|
||||
"""
|
||||
# ─── 1. Verfahrensgebiet-Layer prüfen ─────────────────────────────
|
||||
lp = Layerpruefer(layer=layer)
|
||||
ergebnis = lp.pruefe()
|
||||
if not ergebnis.ok:
|
||||
self.pruefmanager.zeige_hinweis(
|
||||
"Verfahrensgebiets-Layer angeben",
|
||||
"Verfahrensgebiets-Layer angeben",
|
||||
)
|
||||
return {"ok": False, "switch_to_tab_a": True, "atlas_seiten": 0}
|
||||
|
||||
layer_id = getattr(layer, "id", lambda: "")() or ""
|
||||
set_variable("sn_verfahrensgebietslayer", layer_id, scope="project")
|
||||
|
||||
# ─── 2. Kartenname prüfen ─────────────────────────────────────────
|
||||
if kartenname_auswahl not in (KARTENNAME_38, KARTENNAME_41):
|
||||
self.pruefmanager.zeige_hinweis(
|
||||
"Kartennamen wählen",
|
||||
"Kartennamen wählen",
|
||||
)
|
||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
||||
|
||||
# ─── 3. Maßstab ermitteln ─────────────────────────────────────────
|
||||
if massstab_auswahl == MASSSTAB_WIE_KARTENFENSTER:
|
||||
massstab_str = get_variable(PLOTMASSSTAB_VAR, scope="project") or ""
|
||||
try:
|
||||
massstab_zahl = float(massstab_str)
|
||||
except (ValueError, TypeError):
|
||||
massstab_zahl = 0.0
|
||||
else:
|
||||
massstab_zahl = float(PLOTMASSSTAB_BY_AUSWAHL.get(massstab_auswahl, 0))
|
||||
|
||||
if massstab_zahl <= 0:
|
||||
self.pruefmanager.zeige_hinweis(
|
||||
"Maßstab fehlt",
|
||||
"Kein gültiger Maßstab angegeben.",
|
||||
)
|
||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
||||
|
||||
# ─── 4. Kartenbild berechnen ──────────────────────────────────────
|
||||
# Der Layer wird als metrisch projiziert (Einheit: m) vorausgesetzt,
|
||||
# wie es für deutsche Planungslagen (z.B. EPSG:25832) üblich ist.
|
||||
extent = get_layer_extent(layer)
|
||||
if extent is None:
|
||||
self.pruefmanager.zeige_hinweis(
|
||||
"Fehler",
|
||||
"Layer-Ausdehnung konnte nicht ermittelt werden.",
|
||||
)
|
||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
||||
|
||||
# Naturgröße (m) → Papiergröße (mm): mm = m * 1000 / massstab
|
||||
kartenbild_w = extent.width() * 1000.0 / massstab_zahl
|
||||
kartenbild_h = extent.height() * 1000.0 / massstab_zahl
|
||||
|
||||
# ─── 5. Plotgröße = Kartenbild + Randabstand (x+210 mm, y+20 mm) ──
|
||||
plotgroesse_w = kartenbild_w + 210.0
|
||||
plotgroesse_h = kartenbild_h + 20.0
|
||||
|
||||
# ─── 6. Zielgröße bestimmen ───────────────────────────────────────
|
||||
din_dims = DIN_GROESSEN.get(zielgroesse, DIN_GROESSEN[DIN_STANDARD])
|
||||
if formfaktor: # Endlosrolle: X-Richtung entspricht der Plotgröße
|
||||
ziel_w, ziel_h = plotgroesse_w, float(min(din_dims))
|
||||
else:
|
||||
ziel_w, ziel_h = float(din_dims[0]), float(din_dims[1])
|
||||
|
||||
if ziel_w < DIN_GROESSEN["DIN A4"][0] or ziel_h < DIN_GROESSEN["DIN A4"][1]:
|
||||
self.pruefmanager.zeige_hinweis(
|
||||
"Blattgröße zu klein",
|
||||
"Die Zielgröße darf nicht kleiner als DIN A4 sein.",
|
||||
)
|
||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
||||
|
||||
# ─── 7. Passt auf ein Blatt? -> Layout erzeugen ───────────────────
|
||||
print(f"[TabBLogic] plotgroesse=({plotgroesse_w:.1f}x{plotgroesse_h:.1f}), "
|
||||
f"zielgroesse=({ziel_w:.1f}x{ziel_h:.1f}), passt={plotgroesse_w <= ziel_w and plotgroesse_h <= ziel_h}")
|
||||
if plotgroesse_w > ziel_w or plotgroesse_h > ziel_h:
|
||||
if plotgroesse_w <= ziel_h and plotgroesse_h <= ziel_w:
|
||||
ziel_w, ziel_h = ziel_h, ziel_w
|
||||
|
||||
if plotgroesse_w <= ziel_w and plotgroesse_h <= ziel_h:
|
||||
kartenname = get_variable(KARTENNAME_VAR, scope="project") or KARTENNAME_BY_AUSWAHL.get(
|
||||
kartenname_auswahl, "Vorlage"
|
||||
)
|
||||
thema = get_variable(VIEW_VAR, scope="project") or ""
|
||||
print(f"[TabBLogic] frage_text aufrufen, default='{kartenname}', thema='{thema}'")
|
||||
vorlage_name, bestaetigt = self.pruefmanager.frage_text(
|
||||
"Neue Vorlage anlegen",
|
||||
"Bezeichnung der Vorlage:",
|
||||
default_text=kartenname,
|
||||
)
|
||||
print(f"[TabBLogic] frage_text Ergebnis: name='{vorlage_name}', bestaetigt={bestaetigt}")
|
||||
if not bestaetigt:
|
||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
||||
|
||||
vorlage_name = (vorlage_name or "").strip() or kartenname
|
||||
|
||||
print(f"[TabBLogic] Rufe Layout().create_single_page_layout auf: name='{vorlage_name}', "
|
||||
f"page=({ziel_w}x{ziel_h}), map=({kartenbild_w:.1f}x{kartenbild_h:.1f}), "
|
||||
f"massstab={massstab_zahl}, thema='{thema}'")
|
||||
try:
|
||||
Layout().create_single_page_layout(
|
||||
name=vorlage_name,
|
||||
page_width_mm=ziel_w,
|
||||
page_height_mm=ziel_h,
|
||||
map_width_mm=kartenbild_w,
|
||||
map_height_mm=kartenbild_h,
|
||||
extent=extent,
|
||||
plotmassstab=massstab_zahl,
|
||||
thema=thema,
|
||||
)
|
||||
print("[TabBLogic] create_single_page_layout erfolgreich abgeschlossen")
|
||||
except ValueError as exc:
|
||||
print(f"[TabBLogic] ValueError: {exc}")
|
||||
self.pruefmanager.zeige_hinweis("Vorlage anlegen", str(exc))
|
||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
||||
except Exception as exc:
|
||||
print(f"[TabBLogic] Exception: {exc!r}")
|
||||
self.pruefmanager.zeige_hinweis("Vorlage anlegen", f"Die Vorlage konnte nicht angelegt werden: {exc}")
|
||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
||||
|
||||
return {"ok": True, "switch_to_tab_a": False, "atlas_seiten": 1}
|
||||
|
||||
# ─── 8. Atlas: Anzahl Seiten berechnen ────────────────────────────
|
||||
# Nutzbarer Kartenbereich pro Atlasseite (abzüglich gleichem Randabstand)
|
||||
seite_karte_w = ziel_w - 210.0
|
||||
seite_karte_h = ziel_h - 20.0
|
||||
|
||||
if seite_karte_w <= 0 or seite_karte_h <= 0:
|
||||
self.pruefmanager.zeige_hinweis(
|
||||
"Blattgröße zu klein",
|
||||
"Die gewählte Zielgröße ist kleiner als der Mindest-Randabstand. "
|
||||
"Bitte eine größere Blattgröße wählen.",
|
||||
)
|
||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
||||
|
||||
pages_x = math.ceil(kartenbild_w / seite_karte_w)
|
||||
pages_y = math.ceil(kartenbild_h / seite_karte_h)
|
||||
|
||||
# Für Atlas in beiden Modi (Endlosrolle + Blatt): Seitenraster so wählen,
|
||||
# dass Atlasobjekte näher am Einzelblattformat liegen und keine Streifen entstehen.
|
||||
opt_pages_x, opt_pages_y, opt_tile_w_mm, opt_tile_h_mm = self._find_tile_grid_for_roll_atlas(
|
||||
kartenbild_w_mm=kartenbild_w,
|
||||
kartenbild_h_mm=kartenbild_h,
|
||||
din_dims=din_dims,
|
||||
respect_max_sheet_size=(not formfaktor),
|
||||
)
|
||||
|
||||
# Endlosrolle: Nur die Breite darf wachsen, die Höhe muss innerhalb
|
||||
# der gewählten Zielhöhe bleiben.
|
||||
if formfaktor:
|
||||
max_tile_h_mm = max(1.0, ziel_h - 20.0)
|
||||
if opt_tile_h_mm > max_tile_h_mm:
|
||||
required_pages_y = max(1, math.ceil(kartenbild_h / max_tile_h_mm))
|
||||
opt_pages_y = max(opt_pages_y, required_pages_y)
|
||||
opt_tile_h_mm = kartenbild_h / opt_pages_y
|
||||
|
||||
pages_x = max(1, opt_pages_x)
|
||||
pages_y = max(1, opt_pages_y)
|
||||
seite_karte_w = max(1.0, opt_tile_w_mm)
|
||||
seite_karte_h = max(1.0, opt_tile_h_mm)
|
||||
modus = "Endlosrolle" if formfaktor else "Blatt"
|
||||
print(
|
||||
f"[TabBLogic] {modus} Rasteroptimierung: pages_x={pages_x}, pages_y={pages_y}, "
|
||||
f"tile_mm=({seite_karte_w:.1f}x{seite_karte_h:.1f}), "
|
||||
f"tile_aspect={seite_karte_w / seite_karte_h:.3f}"
|
||||
)
|
||||
if formfaktor:
|
||||
max_tile_h_mm = max(1.0, ziel_h - 20.0)
|
||||
print(
|
||||
f"[TabBLogic] Endlosrolle Höhenlimit: tile_h={seite_karte_h:.1f}mm, "
|
||||
f"max_tile_h={max_tile_h_mm:.1f}mm, within_limit={seite_karte_h <= max_tile_h_mm}"
|
||||
)
|
||||
|
||||
anzahl_seiten = pages_x * pages_y
|
||||
|
||||
ja = self.pruefmanager.frage_ja_nein(
|
||||
"Ausdruck als Atlas anlegen?",
|
||||
f"Für die ausgewählten Parameter sind {anzahl_seiten} Einzelseiten erforderlich.\n"
|
||||
"Ausdruck als Atlas anlegen?",
|
||||
default=True,
|
||||
)
|
||||
print(f"[TabBLogic] Atlas-Rückfrage: ja={ja}, geplante_seiten={anzahl_seiten}")
|
||||
if not ja:
|
||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": anzahl_seiten}
|
||||
|
||||
atlas_layer = self._create_atlasobjekte_layer(
|
||||
layer=layer,
|
||||
extent=extent,
|
||||
pages_x=pages_x,
|
||||
pages_y=pages_y,
|
||||
seite_karte_w=seite_karte_w,
|
||||
seite_karte_h=seite_karte_h,
|
||||
massstab_zahl=massstab_zahl,
|
||||
)
|
||||
if atlas_layer is None:
|
||||
self.pruefmanager.zeige_hinweis(
|
||||
"Atlasobjekte",
|
||||
"Atlasobjekte-Layer konnte nicht erzeugt werden.",
|
||||
)
|
||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
||||
print("[TabBLogic] Atlasobjekte-Layer erfolgreich erzeugt")
|
||||
|
||||
try:
|
||||
anzahl_seiten = int(atlas_layer.featureCount())
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Berechne die Kachelgröße aus den Atlasobjekten.
|
||||
# Für die Layout-Kartengröße muss die größte Atlas-Kachel passen,
|
||||
# sonst werden größere Atlasobjekte abgeschnitten.
|
||||
total_w_m = 0.0
|
||||
total_h_m = 0.0
|
||||
min_w_m = math.inf
|
||||
min_h_m = math.inf
|
||||
max_w_m = 0.0
|
||||
max_h_m = 0.0
|
||||
feature_count = 0
|
||||
get_features = getattr(atlas_layer, "getFeatures", None)
|
||||
if callable(get_features):
|
||||
try:
|
||||
for feat in get_features():
|
||||
geom = feat.geometry() if hasattr(feat, "geometry") else None
|
||||
if geom is None or geom.isEmpty():
|
||||
continue
|
||||
bbox = geom.boundingBox() if hasattr(geom, "boundingBox") else None
|
||||
if bbox is None:
|
||||
continue
|
||||
feat_w_m = float(bbox.width())
|
||||
feat_h_m = float(bbox.height())
|
||||
total_w_m += feat_w_m
|
||||
total_h_m += feat_h_m
|
||||
min_w_m = min(min_w_m, feat_w_m)
|
||||
min_h_m = min(min_h_m, feat_h_m)
|
||||
max_w_m = max(max_w_m, feat_w_m)
|
||||
max_h_m = max(max_h_m, feat_h_m)
|
||||
feature_count += 1
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if feature_count > 0:
|
||||
avg_tile_w_m = total_w_m / feature_count
|
||||
avg_tile_h_m = total_h_m / feature_count
|
||||
if not math.isfinite(min_w_m):
|
||||
min_w_m = avg_tile_w_m
|
||||
if not math.isfinite(min_h_m):
|
||||
min_h_m = avg_tile_h_m
|
||||
target_tile_w_m = max_w_m
|
||||
target_tile_h_m = max_h_m
|
||||
else:
|
||||
avg_tile_w_m = seite_karte_w * massstab_zahl / 1000.0
|
||||
avg_tile_h_m = seite_karte_h * massstab_zahl / 1000.0
|
||||
min_w_m = avg_tile_w_m
|
||||
min_h_m = avg_tile_h_m
|
||||
max_w_m = avg_tile_w_m
|
||||
max_h_m = avg_tile_h_m
|
||||
target_tile_w_m = avg_tile_w_m
|
||||
target_tile_h_m = avg_tile_h_m
|
||||
|
||||
# Konvertiere Kachelgrößen zu mm
|
||||
avg_tile_w_mm = avg_tile_w_m * 1000.0 / massstab_zahl
|
||||
avg_tile_h_mm = avg_tile_h_m * 1000.0 / massstab_zahl
|
||||
min_tile_w_mm = min_w_m * 1000.0 / massstab_zahl
|
||||
min_tile_h_mm = min_h_m * 1000.0 / massstab_zahl
|
||||
max_tile_w_mm = max_w_m * 1000.0 / massstab_zahl
|
||||
max_tile_h_mm = max_h_m * 1000.0 / massstab_zahl
|
||||
target_tile_w_mm = target_tile_w_m * 1000.0 / massstab_zahl
|
||||
target_tile_h_mm = target_tile_h_m * 1000.0 / massstab_zahl
|
||||
|
||||
# Layout-Kartengröße = größte Kachelgröße
|
||||
atlas_map_w = max(1.0, target_tile_w_mm)
|
||||
atlas_map_h = max(1.0, target_tile_h_mm)
|
||||
atlas_page_w = atlas_map_w + 210.0
|
||||
atlas_page_h = atlas_map_h + 20.0
|
||||
|
||||
# Debug: Atlasobjekte Geometrien
|
||||
print(
|
||||
f"[TabBLogic] Atlasobjekte Geometrien (Meter): "
|
||||
f"total_w={total_w_m:.1f}m, total_h={total_h_m:.1f}m, "
|
||||
f"min_w={min_w_m:.1f}m, min_h={min_h_m:.1f}m, "
|
||||
f"avg_w={avg_tile_w_m:.1f}m, avg_h={avg_tile_h_m:.1f}m, "
|
||||
f"max_w={max_w_m:.1f}m, max_h={max_h_m:.1f}m, features={feature_count}"
|
||||
)
|
||||
print(
|
||||
f"[TabBLogic] Atlas layout Größen: "
|
||||
f"page=(x=10, y=10, w={atlas_page_w:.1f}mm, h={atlas_page_h:.1f}mm), "
|
||||
f"map=(x=10, y=10, w={atlas_map_w:.1f}mm, h={atlas_map_h:.1f}mm), "
|
||||
f"kachel_min_mm=({min_tile_w_mm:.1f}x{min_tile_h_mm:.1f}), "
|
||||
f"kachel_avg_mm=({avg_tile_w_mm:.1f}x{avg_tile_h_mm:.1f}), "
|
||||
f"kachel_max_mm=({max_tile_w_mm:.1f}x{max_tile_h_mm:.1f})"
|
||||
)
|
||||
|
||||
kartenname = get_variable(KARTENNAME_VAR, scope="project") or KARTENNAME_BY_AUSWAHL.get(
|
||||
kartenname_auswahl, "Atlas"
|
||||
)
|
||||
thema = get_variable(VIEW_VAR, scope="project") or ""
|
||||
vorlage_name, bestaetigt = self.pruefmanager.frage_text(
|
||||
"Neue Atlasvorlage anlegen",
|
||||
"Bezeichnung der Vorlage:",
|
||||
default_text=f"{kartenname} Atlas",
|
||||
)
|
||||
print(f"[TabBLogic] Atlas frage_text Ergebnis: name='{vorlage_name}', bestaetigt={bestaetigt}")
|
||||
if not bestaetigt:
|
||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": anzahl_seiten}
|
||||
|
||||
vorlage_name = (vorlage_name or "").strip() or f"{kartenname} Atlas"
|
||||
|
||||
try:
|
||||
print(
|
||||
f"[TabBLogic] Rufe create_atlas_layout auf: name='{vorlage_name}', "
|
||||
f"page=({atlas_page_w:.1f}x{atlas_page_h:.1f}), "
|
||||
f"map=({atlas_map_w:.1f}x{atlas_map_h:.1f}), massstab={massstab_zahl}, thema='{thema}'"
|
||||
)
|
||||
Layout().create_atlas_layout(
|
||||
name=vorlage_name,
|
||||
page_width_mm=atlas_page_w,
|
||||
page_height_mm=atlas_page_h,
|
||||
map_width_mm=atlas_map_w,
|
||||
map_height_mm=atlas_map_h,
|
||||
extent=extent,
|
||||
plotmassstab=massstab_zahl,
|
||||
atlas_layer=atlas_layer,
|
||||
thema=thema,
|
||||
)
|
||||
print("[TabBLogic] create_atlas_layout erfolgreich abgeschlossen")
|
||||
except ValueError as exc:
|
||||
self.pruefmanager.zeige_hinweis("Atlasvorlage anlegen", str(exc))
|
||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
||||
except Exception as exc:
|
||||
self.pruefmanager.zeige_hinweis("Atlasvorlage anlegen", f"Die Atlasvorlage konnte nicht angelegt werden: {exc}")
|
||||
return {"ok": False, "switch_to_tab_a": False, "atlas_seiten": 0}
|
||||
|
||||
return {"ok": True, "switch_to_tab_a": False, "atlas_seiten": anzahl_seiten}
|
||||
427
ui/tab_b_ui.py
Normal file
427
ui/tab_b_ui.py
Normal file
@@ -0,0 +1,427 @@
|
||||
"""
|
||||
sn_plan41/ui/tab_b_ui.py – UI für Tab B (Druck)
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Optional
|
||||
|
||||
from sn_basis.functions.qt_wrapper import (
|
||||
QWidget,
|
||||
QVBoxLayout,
|
||||
QLabel,
|
||||
QComboBox,
|
||||
QCheckBox,
|
||||
QHBoxLayout,
|
||||
QPushButton,
|
||||
)
|
||||
from sn_basis.functions.qgiscore_wrapper import QgsProject
|
||||
from sn_basis.functions.qgisui_wrapper import iface
|
||||
from sn_basis.functions.variable_wrapper import get_variable, set_variable
|
||||
|
||||
# Services (werden von DockWidget injiziert)
|
||||
from sn_basis.modules.Pruefmanager import Pruefmanager
|
||||
from sn_basis.modules.DataGrabber import DataGrabber
|
||||
from sn_plan41.ui.tab_b_logic import (
|
||||
TabBLogic,
|
||||
MASSSTAB_WIE_KARTENFENSTER,
|
||||
PLOTMASSSTAB_BY_AUSWAHL,
|
||||
THEMA_WIE_KARTENFENSTER,
|
||||
DIN_GROESSEN,
|
||||
DIN_STANDARD,
|
||||
ZIELGROESSE_VAR,
|
||||
FORMFAKTOR_VAR,
|
||||
)
|
||||
|
||||
|
||||
KARTENNAME_VAR = "tab_b_kartenname"
|
||||
KARTENNAME_PLACEHOLDER = "Kartenname wählen"
|
||||
KARTENNAME_38 = "§38"
|
||||
KARTENNAME_41 = "§41"
|
||||
MASSSTAB_VAR = "tab_b_massstab"
|
||||
THEMA_VAR = "tab_b_thema"
|
||||
ZIELGROESSE_UI_VAR = "tab_b_zielgroesse"
|
||||
FORMFAKTOR_UI_VAR = "tab_b_formfaktor"
|
||||
|
||||
class TabB(QWidget):
|
||||
"""
|
||||
UI-Klasse für Tab B (Druck) des Plan41-Plugins.
|
||||
|
||||
Zuständig für:
|
||||
- Auswahl des Druckthemas
|
||||
- Auswahl der Druckparameter
|
||||
- Start der Vorlagenanlage (Druck über QGIS-Druckfunktion)
|
||||
|
||||
Services (Pruefmanager, DataGrabber) werden zur Laufzeit vom DockWidget injiziert.
|
||||
Alle fachlichen Prüfungen laufen über den zentralen Pruefmanager.
|
||||
"""
|
||||
|
||||
tab_title = "Druck" #: Tab-Titel für BaseDockWidget
|
||||
|
||||
def __init__(self, parent: Optional[QWidget] = None):
|
||||
"""
|
||||
Initialisiert die UI-Struktur.
|
||||
|
||||
Services werden später über :meth:`set_services` injiziert.
|
||||
|
||||
:param parent: Parent-Widget (typischerweise DockWidget)
|
||||
"""
|
||||
super().__init__(parent)
|
||||
|
||||
# Services (werden von DockWidget gesetzt)
|
||||
self.pruefmanager: Optional[Pruefmanager] = None
|
||||
|
||||
self.logic: Optional[TabBLogic] = None
|
||||
self._kartenname_combo: Optional[QComboBox] = None
|
||||
self._massstab_combo: Optional[QComboBox] = None
|
||||
self._thema_combo: Optional[QComboBox] = None
|
||||
self._theme_signal_connected = False
|
||||
self._connected_theme_collection: object = None # Referenz für sauberes Trennen
|
||||
self._zielgroesse_combo: Optional[QComboBox] = None
|
||||
self._endlosrolle_cb: Optional[QCheckBox] = None
|
||||
self._btn_vorlage_erstellen: Optional[QPushButton] = None
|
||||
|
||||
self._build_ui()
|
||||
self._restore_state()
|
||||
self._connect_theme_collection_signals()
|
||||
self._connect_project_signals()
|
||||
|
||||
def set_services(self, pruefmanager: Pruefmanager, data_grabber: DataGrabber) -> None:
|
||||
"""Injiziert Services vom übergeordneten DockWidget."""
|
||||
_ = data_grabber
|
||||
self.pruefmanager = pruefmanager
|
||||
self.logic = TabBLogic(pruefmanager=self.pruefmanager)
|
||||
|
||||
if self._kartenname_combo:
|
||||
self.logic.set_kartenname_for_auswahl(self._kartenname_combo.currentText())
|
||||
if self._massstab_combo:
|
||||
self.logic.set_plotmassstab_for_auswahl(
|
||||
self._massstab_combo.currentText(),
|
||||
self._get_current_canvas_scale(),
|
||||
)
|
||||
if self._thema_combo:
|
||||
self.logic.set_view_for_auswahl(self._thema_combo.currentText())
|
||||
if self._zielgroesse_combo:
|
||||
self.logic.set_zielgroesse_for_auswahl(self._zielgroesse_combo.currentText())
|
||||
if self._endlosrolle_cb:
|
||||
self.logic.set_formfaktor(self._endlosrolle_cb.isChecked())
|
||||
|
||||
def _build_ui(self) -> None:
|
||||
"""Erstellt die reduzierte UI für die Themenauswahl."""
|
||||
main_layout = QVBoxLayout()
|
||||
main_layout.setSpacing(4)
|
||||
main_layout.setContentsMargins(4, 4, 4, 4)
|
||||
|
||||
kartenname_label = QLabel("Kartenname")
|
||||
kartenname_label.setStyleSheet("font-weight: bold; margin-top: 6px;")
|
||||
main_layout.addWidget(kartenname_label)
|
||||
|
||||
self._kartenname_combo = QComboBox(self)
|
||||
self._kartenname_combo.addItem(KARTENNAME_PLACEHOLDER)
|
||||
self._kartenname_combo.addItem(KARTENNAME_38)
|
||||
self._kartenname_combo.addItem(KARTENNAME_41)
|
||||
self._kartenname_combo.currentTextChanged.connect(self._on_kartenname_changed)
|
||||
main_layout.addWidget(self._kartenname_combo)
|
||||
|
||||
massstab_label = QLabel("Maßstab")
|
||||
massstab_label.setStyleSheet("font-weight: bold; margin-top: 6px;")
|
||||
main_layout.addWidget(massstab_label)
|
||||
|
||||
self._massstab_combo = QComboBox(self)
|
||||
self._massstab_combo.addItem(MASSSTAB_WIE_KARTENFENSTER)
|
||||
self._massstab_combo.addItems(list(PLOTMASSSTAB_BY_AUSWAHL.keys()))
|
||||
self._massstab_combo.currentTextChanged.connect(self._on_massstab_changed)
|
||||
main_layout.addWidget(self._massstab_combo)
|
||||
|
||||
thema_label = QLabel("Thema")
|
||||
thema_label.setStyleSheet("font-weight: bold; margin-top: 6px;")
|
||||
main_layout.addWidget(thema_label)
|
||||
|
||||
self._thema_combo = QComboBox(self)
|
||||
self._thema_combo.addItem(THEMA_WIE_KARTENFENSTER)
|
||||
self._thema_combo.addItems(self._get_gespeicherte_themen())
|
||||
self._thema_combo.currentTextChanged.connect(self._on_thema_changed)
|
||||
main_layout.addWidget(self._thema_combo)
|
||||
|
||||
zielgroesse_label = QLabel("max. Blattgröße")
|
||||
zielgroesse_label.setStyleSheet("font-weight: bold; margin-top: 6px;")
|
||||
main_layout.addWidget(zielgroesse_label)
|
||||
|
||||
zielgroesse_row = QHBoxLayout()
|
||||
zielgroesse_row.setSpacing(6)
|
||||
self._zielgroesse_combo = QComboBox(self)
|
||||
self._zielgroesse_combo.addItems(list(DIN_GROESSEN.keys()))
|
||||
self._zielgroesse_combo.setCurrentText(DIN_STANDARD)
|
||||
self._zielgroesse_combo.currentTextChanged.connect(self._on_zielgroesse_changed)
|
||||
zielgroesse_row.addWidget(self._zielgroesse_combo)
|
||||
self._endlosrolle_cb = QCheckBox("Endlosrolle", self)
|
||||
self._endlosrolle_cb.setChecked(False)
|
||||
self._endlosrolle_cb.stateChanged.connect(self._on_formfaktor_changed)
|
||||
zielgroesse_row.addWidget(self._endlosrolle_cb)
|
||||
main_layout.addLayout(zielgroesse_row)
|
||||
|
||||
self._btn_vorlage_erstellen = QPushButton("Vorlage erstellen", self)
|
||||
self._btn_vorlage_erstellen.clicked.connect(self._on_vorlage_erstellen)
|
||||
main_layout.addWidget(self._btn_vorlage_erstellen)
|
||||
|
||||
main_layout.addStretch(1)
|
||||
self.setLayout(main_layout)
|
||||
|
||||
def _restore_state(self) -> None:
|
||||
"""Stellt die gespeicherten Combobox-Zustände wieder her."""
|
||||
if not self._kartenname_combo or not self._massstab_combo or not self._thema_combo:
|
||||
return
|
||||
if not self._zielgroesse_combo or not self._endlosrolle_cb:
|
||||
return
|
||||
|
||||
saved_kartenname = get_variable(KARTENNAME_VAR, scope="project")
|
||||
if saved_kartenname in (KARTENNAME_38, KARTENNAME_41):
|
||||
self._kartenname_combo.setCurrentText(saved_kartenname)
|
||||
else:
|
||||
self._kartenname_combo.setCurrentText(KARTENNAME_PLACEHOLDER)
|
||||
|
||||
saved_massstab = get_variable(MASSSTAB_VAR, scope="project")
|
||||
valid_massstaebe = [MASSSTAB_WIE_KARTENFENSTER, *PLOTMASSSTAB_BY_AUSWAHL.keys()]
|
||||
if saved_massstab in valid_massstaebe:
|
||||
self._massstab_combo.setCurrentText(saved_massstab)
|
||||
else:
|
||||
self._massstab_combo.setCurrentText(MASSSTAB_WIE_KARTENFENSTER)
|
||||
|
||||
aktuelle_themen = [THEMA_WIE_KARTENFENSTER, *self._get_gespeicherte_themen()]
|
||||
self._thema_combo.clear()
|
||||
self._thema_combo.addItems(aktuelle_themen)
|
||||
|
||||
saved_thema = get_variable(THEMA_VAR, scope="project")
|
||||
if saved_thema in aktuelle_themen:
|
||||
self._thema_combo.setCurrentText(saved_thema)
|
||||
else:
|
||||
self._thema_combo.setCurrentText(THEMA_WIE_KARTENFENSTER)
|
||||
|
||||
saved_zielgroesse = get_variable(ZIELGROESSE_UI_VAR, scope="project")
|
||||
if saved_zielgroesse in DIN_GROESSEN:
|
||||
self._zielgroesse_combo.setCurrentText(saved_zielgroesse)
|
||||
else:
|
||||
self._zielgroesse_combo.setCurrentText(DIN_STANDARD)
|
||||
|
||||
saved_formfaktor = get_variable(FORMFAKTOR_UI_VAR, scope="project")
|
||||
self._endlosrolle_cb.setChecked(saved_formfaktor == "Endlosrolle")
|
||||
|
||||
def _on_kartenname_changed(self, value: str) -> None:
|
||||
"""Persistiert die Kartennamen-Auswahl und setzt ``sn_kartenname``."""
|
||||
if value in (KARTENNAME_38, KARTENNAME_41):
|
||||
set_variable(KARTENNAME_VAR, value, scope="project")
|
||||
else:
|
||||
set_variable(KARTENNAME_VAR, "", scope="project")
|
||||
|
||||
if self.logic:
|
||||
self.logic.set_kartenname_for_auswahl(value)
|
||||
|
||||
def _on_massstab_changed(self, value: str) -> None:
|
||||
"""Persistiert Maßstabsauswahl und setzt ``sn_plotmassstab``."""
|
||||
set_variable(MASSSTAB_VAR, value, scope="project")
|
||||
|
||||
if self.logic:
|
||||
self.logic.set_plotmassstab_for_auswahl(value, self._get_current_canvas_scale())
|
||||
|
||||
def _on_thema_changed(self, value: str) -> None:
|
||||
"""Persistiert die Thema-Auswahl und setzt ``sn_view``."""
|
||||
set_variable(THEMA_VAR, value, scope="project")
|
||||
if self.logic:
|
||||
self.logic.set_view_for_auswahl(value)
|
||||
|
||||
def _on_zielgroesse_changed(self, value: str) -> None:
|
||||
"""Persistiert Blattgröße und setzt ``sn_zielgroesse``."""
|
||||
set_variable(ZIELGROESSE_UI_VAR, value, scope="project")
|
||||
if self.logic:
|
||||
self.logic.set_zielgroesse_for_auswahl(value)
|
||||
|
||||
def _on_formfaktor_changed(self, state: int) -> None:
|
||||
"""Persistiert Endlosrolle-Zustand und setzt ``sn_formfaktor``."""
|
||||
checked = bool(state)
|
||||
set_variable(FORMFAKTOR_UI_VAR, "Endlosrolle" if checked else "Blatt", scope="project")
|
||||
if self.logic:
|
||||
self.logic.set_formfaktor(checked)
|
||||
|
||||
def _on_vorlage_erstellen(self) -> None:
|
||||
"""Startet die Pipeline Druckvorlage_anlegen."""
|
||||
print("[TabB] _on_vorlage_erstellen aufgerufen")
|
||||
if not self.logic or not self.pruefmanager:
|
||||
print(f"[TabB] Abbruch: logic={self.logic}, pruefmanager={self.pruefmanager}")
|
||||
return
|
||||
|
||||
# Layer direkt aus Tab A lesen (unabhängig von Projektvariable)
|
||||
layer = None
|
||||
tab_a = self._get_tab_a_widget()
|
||||
print(f"[TabB] tab_a Widget: {tab_a!r}")
|
||||
if tab_a is not None:
|
||||
layer_combo = getattr(tab_a, "layer_combo", None)
|
||||
print(f"[TabB] layer_combo: {layer_combo!r}")
|
||||
if layer_combo is not None:
|
||||
layer = layer_combo.currentLayer()
|
||||
print(f"[TabB] layer: {layer!r} (Name: {getattr(layer, 'name', lambda: '–')()})")
|
||||
|
||||
print(f"[TabB] Rufe druckvorlage_anlegen auf mit layer={layer!r}, "
|
||||
f"kartenname={self._kartenname_combo.currentText() if self._kartenname_combo else '?'}, "
|
||||
f"massstab={self._massstab_combo.currentText() if self._massstab_combo else '?'}, "
|
||||
f"zielgroesse={self._zielgroesse_combo.currentText() if self._zielgroesse_combo else '?'}, "
|
||||
f"formfaktor={self._endlosrolle_cb.isChecked() if self._endlosrolle_cb else '?'}")
|
||||
|
||||
result = self.logic.druckvorlage_anlegen(
|
||||
layer=layer,
|
||||
kartenname_auswahl=self._kartenname_combo.currentText() if self._kartenname_combo else "",
|
||||
massstab_auswahl=self._massstab_combo.currentText() if self._massstab_combo else "",
|
||||
zielgroesse=self._zielgroesse_combo.currentText() if self._zielgroesse_combo else DIN_STANDARD,
|
||||
formfaktor=self._endlosrolle_cb.isChecked() if self._endlosrolle_cb else False,
|
||||
)
|
||||
|
||||
print(f"[TabB] druckvorlage_anlegen Ergebnis: {result}")
|
||||
if result.get("switch_to_tab_a"):
|
||||
self._aktiviere_tab_a()
|
||||
|
||||
def _get_tab_widget(self):
|
||||
"""Findet das übergeordnete QTabWidget anhand des ``tabBar``-Attributs."""
|
||||
try:
|
||||
widget = self.parent()
|
||||
while widget is not None:
|
||||
if hasattr(widget, "tabBar") and hasattr(widget, "setCurrentIndex"):
|
||||
return widget
|
||||
parent_fn = getattr(widget, "parent", None)
|
||||
widget = parent_fn() if callable(parent_fn) else None
|
||||
except Exception:
|
||||
pass
|
||||
return None
|
||||
|
||||
def _get_tab_a_widget(self):
|
||||
"""Gibt die Tab-A-Widget-Instanz zurück (Index 0 im übergeordneten QTabWidget)."""
|
||||
tab_widget = self._get_tab_widget()
|
||||
if tab_widget is None:
|
||||
return None
|
||||
try:
|
||||
return tab_widget.widget(0)
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
def _aktiviere_tab_a(self) -> None:
|
||||
"""Wechselt den aktiven Reiter auf Tab A im übergeordneten QTabWidget."""
|
||||
tab_widget = self._get_tab_widget()
|
||||
if tab_widget is not None:
|
||||
try:
|
||||
tab_widget.setCurrentIndex(0)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
def _connect_project_signals(self) -> None:
|
||||
"""Verbindet QgsProject-Signale für Projektwechsel/-neuladen."""
|
||||
project = QgsProject.instance()
|
||||
for signal_name in ("readProject", "newProjectCreated", "cleared"):
|
||||
signal = getattr(project, signal_name, None)
|
||||
if signal is None:
|
||||
continue
|
||||
try:
|
||||
signal.connect(self._on_project_changed)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
def _on_project_changed(self, *args) -> None:
|
||||
"""Reagiert auf Projektwechsel: Signale neu binden, Combobox und State auffrischen."""
|
||||
_ = args
|
||||
# Alte Theme-Collection-Signals zuerst trennen
|
||||
self._disconnect_theme_collection_signals()
|
||||
# Neu verbinden für das jetzt geladene Projekt
|
||||
self._theme_signal_connected = False
|
||||
self._connect_theme_collection_signals()
|
||||
# Ansicht-Liste + gespeicherten State wiederherstellen
|
||||
self._restore_state()
|
||||
|
||||
def _disconnect_theme_collection_signals(self) -> None:
|
||||
"""Trennt Signale der alten Theme-Collection sauber."""
|
||||
collection = self._connected_theme_collection
|
||||
if collection is None:
|
||||
return
|
||||
for signal_name in ("mapThemesChanged", "changed", "themeChanged"):
|
||||
signal = getattr(collection, signal_name, None)
|
||||
if signal is None:
|
||||
continue
|
||||
try:
|
||||
signal.disconnect(self._refresh_thema_combo_live)
|
||||
except Exception:
|
||||
pass
|
||||
self._connected_theme_collection = None
|
||||
|
||||
def _connect_theme_collection_signals(self) -> None:
|
||||
"""Verbindet Signale der Theme-Collection für Live-Aktualisierung der Themenliste."""
|
||||
if self._theme_signal_connected:
|
||||
return
|
||||
|
||||
try:
|
||||
theme_collection = QgsProject.instance().mapThemeCollection()
|
||||
except Exception:
|
||||
return
|
||||
|
||||
if theme_collection is None:
|
||||
return
|
||||
|
||||
connected_any = False
|
||||
for signal_name in ("mapThemesChanged", "changed", "themeChanged"):
|
||||
signal = getattr(theme_collection, signal_name, None)
|
||||
if signal is None:
|
||||
continue
|
||||
try:
|
||||
signal.connect(self._refresh_thema_combo_live)
|
||||
connected_any = True
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if connected_any:
|
||||
self._connected_theme_collection = theme_collection
|
||||
self._theme_signal_connected = connected_any
|
||||
|
||||
def _refresh_thema_combo_live(self, *args) -> None:
|
||||
"""Aktualisiert die Thema-Combobox bei Änderungen gespeicherter Layerthemen."""
|
||||
_ = args
|
||||
if not self._thema_combo:
|
||||
return
|
||||
|
||||
vorherige_auswahl = self._thema_combo.currentText() or THEMA_WIE_KARTENFENSTER
|
||||
eintraege = [THEMA_WIE_KARTENFENSTER, *self._get_gespeicherte_themen()]
|
||||
|
||||
self._thema_combo.blockSignals(True)
|
||||
self._thema_combo.clear()
|
||||
self._thema_combo.addItems(eintraege)
|
||||
|
||||
if vorherige_auswahl in eintraege:
|
||||
self._thema_combo.setCurrentText(vorherige_auswahl)
|
||||
else:
|
||||
self._thema_combo.setCurrentText(THEMA_WIE_KARTENFENSTER)
|
||||
self._thema_combo.blockSignals(False)
|
||||
|
||||
self._on_thema_changed(self._thema_combo.currentText())
|
||||
|
||||
def _get_gespeicherte_themen(self) -> list[str]:
|
||||
"""Liefert die Namen der im Projekt gespeicherten Layerthemen (QgsMapThemeCollection)."""
|
||||
try:
|
||||
theme_collection = QgsProject.instance().mapThemeCollection()
|
||||
if theme_collection is None:
|
||||
return []
|
||||
themes = theme_collection.mapThemes()
|
||||
except Exception:
|
||||
return []
|
||||
|
||||
namen: list[str] = []
|
||||
for theme_name in themes:
|
||||
name = str(theme_name or "").strip()
|
||||
if name and name not in namen:
|
||||
namen.append(name)
|
||||
|
||||
return namen
|
||||
|
||||
def _get_current_canvas_scale(self) -> float | None:
|
||||
"""Liest den aktuellen Maßstab aus der Kartensicht."""
|
||||
try:
|
||||
canvas = iface.mapCanvas()
|
||||
if canvas is None:
|
||||
return None
|
||||
scale = canvas.scale()
|
||||
return float(scale) if scale else None
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
from qgis.PyQt.QtWidgets import QWidget, QVBoxLayout, QLabel, QLineEdit
|
||||
|
||||
class TabA(QWidget):
|
||||
tab_title = "Tab A"
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
layout = QVBoxLayout()
|
||||
layout.addWidget(QLabel("Plugin2 – Tab A"))
|
||||
layout.addWidget(QLineEdit("Feld A1"))
|
||||
layout.addWidget(QLineEdit("Feld A2"))
|
||||
self.setLayout(layout)
|
||||
Reference in New Issue
Block a user