Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
164 changes: 164 additions & 0 deletions .claude/commands/write-tests.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
---
description: Use this skill when the user asks to write, create, or add tests for a module, function, or class in data_wizard - for example "schreib Tests für processor", "write tests for detect_hu_function_field", "add test coverage for X", "fehlende Tests ergänzen". Invoke automatically whenever a testing task is identified for this QGIS plugin project.
---

# /write-tests — Write Tests for a data_wizard Module

Write pytest tests for the module: **$ARGUMENTS**

Follow these steps in order. Do not skip any step.

---

## Step 1 — Read the target module

Search for `$ARGUMENTS` in these locations (in order):
- `$ARGUMENTS.py` (root level - `processor.py`, `data_wizard.py`, `data_wizard_dialog.py`)
- `scripts/$ARGUMENTS.py`

Read the file completely. Identify:
- All public functions/classes and their parameters and types
- Return values and their types
- Error conditions and how they are handled (which exceptions, with what message)
- Any calls to `processing.run()` — these determine the tier (see Step 3)
- Any `log`/`feedback` and `task` (cancellation) parameters — every
processor.py function that has these needs at least one test for the
cancel-mid-run path and the log-callback-invoked path

## Step 2 — Check for existing tests

Search `test/` for an existing test file for `$ARGUMENTS`:
- `test/test_$ARGUMENTS.py` (snake_case variant)
- Any file matching `test_*$ARGUMENTS*`

If a test file **exists**: extend it, do not replace it. Match its existing
class/fixture structure.
If no test file exists: create `test/test_<snake_case_name>.py`.

## Step 3 — Consult project rules (mandatory)

Read **all** of these files before writing any code:

1. `docs/test-strategy.md` — tier definitions, coverage targets, module mapping, gap backlog (authoritative source)
2. `ai/core/testing-rules.md` — tactical rules: geometry checks, QGIS NULL handling, test structure
3. `ai/core/qgis-api-rules.md` — QGIS API compatibility rules, Processing initialization
4. `ai/core/constraints.md` — language and naming rules

Also read:
- `test/utilities.py` — QGIS app initialisation + Processing.initialize()
- `test/conftest.py` — sys.path setup (no fixtures, no QGIS imports)
- `test/layer_factories.py` — shared layer/geometry factory helpers

## Step 4 — Write the test file

### Tier decision

```
Does the function under test call processing.run()?
├── No → @pytest.mark.unit
└── Yes → @pytest.mark.integration (requires Docker / local QGIS with Processing.initialize())

Is this a boundary or degenerate input?
└── Yes → additionally add @pytest.mark.edge_case
```

### Required structure

```python
import pytest
from qgis.core import (
QgsVectorLayer, QgsFeature, QgsField, QgsGeometry,
QgsCoordinateReferenceSystem, QgsPointXY, QgsWkbTypes, NULL,
)
from qgis.PyQt.QtCore import QVariant

from .utilities import get_qgis_app

QGIS_APP, _CANVAS, _IFACE, _PARENT = get_qgis_app()

from .layer_factories import (
make_polygon_layer, make_line_layer, make_point_layer,
make_square_geom, add_feature_to_layer,
write_layer_as_shp, write_layer_as_gpkg,
)

from data_wizard.<module_name> import <function_or_class>


class Test<Subject>:
"""Tests for <module_name>.<function_or_class>."""

@pytest.mark.unit
def test_normal_case(self):
"""<Imperative description of what this test verifies.>"""
...
```

`QgsField(name, type, len=...)` — always pass `type` as `QVariant.String` (or
the correct `QVariant` constant) explicitly, and `len` as a **keyword**
argument. `QgsField(name, 10)` silently creates a field with an invalid type
enum, which OGR then drops on write — a common, hard-to-spot mistake.

### Required geometry assertions (mandatory after every geometry-returning operation)

```python
assert result_layer is not None
for feat in result_layer.getFeatures():
geom = feat.geometry()
assert not geom.isNull(), "Geometry must not be null"
assert not geom.isEmpty(), "Geometry must not be empty"
assert geom.isGeosValid(), "Geometry must be GEOS-valid"
```

### QGIS NULL vs. Python None

When testing attribute values that may be unset, remember `NULL` (imported
from `qgis.core`) is the correct sentinel to compare against — `value is None`
never matches a QGIS `NULL` attribute. See `ai/core/testing-rules.md`.

### Mandatory test cases (minimum, per function)

1. **Normal case** — valid input; check return value, feature count, geometry validity
2. **At least one error path** — invalid input that should raise a specific,
documented exception (`FileNotFoundError`/`ValueError`/`IOError`) — assert
the exception type and, where the message is meaningful, match on it
3. At least one **domain-specific edge case** (`@pytest.mark.edge_case`) — see
the catalog in `docs/test-strategy.md` → Test Taxonomy → Edge case
4. If the function takes `task=None` — a cancel-mid-run test
(`task.isCanceled()` becomes `True` after the first check)

### If a test reveals a bug in the production code

Do not write the test to assert the buggy behavior. Write it to assert the
*intended* behavior, mark it `@pytest.mark.xfail(reason="...", strict=True)`
explaining the bug, and add it to `docs/test-strategy.md` → Gap Analysis. See
`ai/core/testing-rules.md` → "Known Bugs Found by Tests".

### Docstring rule (mandatory)

Every test method must have a one-line docstring in the imperative mood:

```python
def test_writes_valid_hu_gpkg(self):
"""Writes HU.gpkg with valid MultiPolygon geometries and preserved fields."""
```

## Step 5 — Run the tests

```bash
python-qgis.bat -m pytest test/test_<module_name>.py -v --tb=short # Windows
pytest test/test_<module_name>.py -v --tb=short # QGIS env already active
```

Fix failures before proceeding — do not report a test file as done with
failing tests, and do not weaken an assertion just to make it pass without
understanding why it failed first (see "If a test reveals a bug" above).

## Step 6 — Output

Report:
1. Path of the created/modified test file
2. List of test methods written and what each covers
3. Which tier markers were applied and why
4. Any assumptions made about expected behavior
5. Any bugs found and marked `xfail`, with a pointer to the Gap Analysis entry
15 changes: 15 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# .coveragerc
[run]
source =
data_wizard
scripts
omit =
*/test/*
*/tests/*
*/__pycache__/*
*/build/*
*/dist/*
*/venv/*
*/.venv/*
*/resources.py
*/ui_*.py
19 changes: 13 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,24 @@ jobs:
echo "ERROR: coverage.xml not found after test run"
exit 1
fi
# Fix absolute container paths → relative repo paths for Codecov
# Fix absolute container paths → relative repo paths
sed -i 's|/plugins/data_wizard/||g' coverage.xml
echo "coverage.xml found and paths fixed"
head -5 coverage.xml

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
# No Codecov project exists for this repository (see
# docs/test-strategy.md → Justified Exclusions and
# docs/contributing.md → Coverage Reporting). Coverage is produced
# locally and in the container but not uploaded to an external
# service — the report is kept as a downloadable CI artifact instead.
- name: Upload coverage report as CI artifact
uses: actions/upload-artifact@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage.xml
fail_ci_if_error: true
name: coverage-report
path: |
coverage.xml
htmlcov/
retention-days: 30

- name: Fail job if tests failed
if: steps.run_tests.outcome == 'failure'
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ test/logs/
test/*.gpkg
.pytest_cache/
.coverage
coverage.xml
htmlcov/

# === QGIS Plugin generierte Dateien ===
Expand Down
19 changes: 17 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,16 @@ WORKDIR /plugins/data_wizard
# 7. Test-spezifische Python-Abhängigkeiten installieren
RUN if [ -f requirements-test.txt ]; then pip3 install --break-system-packages -r requirements-test.txt; fi

# 7b. Übersetzungen kompilieren (i18n/*.ts -> *.qm) als Fallback für Aufrufe
# ohne Volume-Mount (z.B. "docker run -it ... /bin/bash"). Wirkungslos
# für den eigentlichen Testlauf in ci.yml: dessen
# "-v $(pwd):/plugins/data_wizard" überschreibt den kompletten
# /plugins/data_wizard-Baum aus dem Image mit dem (ungebauten) Host-
# Checkout, bevor CMD läuft - deshalb kompiliert CMD unten zusätzlich
# und maßgeblich bei jedem Containerstart neu. lrelease kommt mit
# qttools5-dev-tools, das im Basis-Image bereits installiert ist.
RUN for ts in i18n/*.ts; do lrelease "$ts"; done

# 8. QGIS Processing Provider explizit initialisieren
RUN python3 -c "\
import sys; \
Expand All @@ -51,5 +61,10 @@ Processing.initialize(); \
print('Processing erfolgreich initialisiert'); \
app.exitQgis()"

# 9. Finale Test-Ausführung
CMD ["python3", "-m", "pytest", "test/", "-v", "--tb=short", "--cov", "--cov-report=xml", "--cov-report=html"]
# 9. Finale Test-Ausführung. Übersetzungen werden hier (erneut) kompiliert,
# weil ci.yml den Container mit "-v $(pwd):/plugins/data_wizard" startet -
# das ersetzt den kompletten Verzeichnisinhalt aus dem Image durch den
# Host-Checkout (der .qm bewusst nicht enthält, siehe .gitignore) BEVOR
# dieser CMD läuft. Ohne diesen Schritt hier würde test_translations.py
# trotz Schritt 7b im Build immer fehlschlagen.
CMD ["sh", "-c", "for ts in i18n/*.ts; do lrelease \"$ts\"; done && python3 -m pytest test/ -v --tb=short --cov --cov-report=xml --cov-report=html"]
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,10 @@
#Add iso code for any locales you want to support here (space separated)
# default is no locales
# LOCALES = af
LOCALES =
# NOTE: scripts/compile-strings.sh and update-strings.sh build the path as
# i18n/$(LOCALE).ts, so this must be the .ts file's basename, not just the
# ISO code (the plugin's translator loads i18n/Data_Wizard_<locale>.qm).
LOCALES = Data_Wizard_de

# If locales are enabled, set the name of the lrelease binary on your system. If
# you have trouble compiling the translations, you may have to specify the full path to
Expand Down
1 change: 1 addition & 0 deletions Testdaten/ALKIS Gebäude/GebauedeBauwerk.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ALKIS Gebäude/GebauedeBauwerk.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ALKIS Gebäude/GebauedeBauwerk.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ALKIS Gebäude/GebauedeBauwerk.shp
Binary file not shown.
Binary file added Testdaten/ALKIS Gebäude/GebauedeBauwerk.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/geb01_f.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/geb01_f.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/geb01_f.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/geb01_f.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/geb01_f.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/geb01_l.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/geb01_l.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/geb01_l.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/geb01_l.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/geb01_l.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/geb02_p.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/geb02_p.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/geb02_p.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/geb02_p.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/geb02_p.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/geb03_f.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/geb03_f.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/geb03_f.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/geb03_f.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/geb03_f.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/gew01_f.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/gew01_f.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/gew01_f.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/gew01_f.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/gew01_f.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/gew01_l.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/gew01_l.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/gew01_l.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/gew01_l.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/gew01_l.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/gew02_p.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/gew02_p.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/gew02_p.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/gew02_p.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/gew02_p.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/gew03_l.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/gew03_l.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/gew03_l.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/gew03_l.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/gew03_l.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/hdu01_b.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/hdu01_b.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/hdu01_b.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/hdu01_b.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/hdu01_b.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/rel01_l.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/rel01_l.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/rel01_l.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/rel01_l.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/rel01_l.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/sie01_f.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/sie01_f.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/sie01_f.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/sie01_f.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/sie01_f.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/sie02_f.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/sie02_f.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/sie02_f.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/sie02_f.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/sie02_f.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/sie03_f.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/sie03_f.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/sie03_f.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/sie03_f.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/sie03_f.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/sie03_l.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/sie03_l.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/sie03_l.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/sie03_l.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/sie03_l.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/sie03_p.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/sie03_p.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/sie03_p.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/sie03_p.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/sie03_p.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/veg01_f.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/veg01_f.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/veg01_f.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/veg01_f.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/veg01_f.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/veg02_f.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/veg02_f.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/veg02_f.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/veg02_f.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/veg02_f.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/veg03_f.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/veg03_f.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/veg03_f.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/veg03_f.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/veg03_f.shx
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/veg04_f.cpg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UTF-8
Binary file added Testdaten/ATKIS Basis DLM dataset/veg04_f.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions Testdaten/ATKIS Basis DLM dataset/veg04_f.prj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PROJCS["ETRS_1989_UTM_Zone_33N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Binary file added Testdaten/ATKIS Basis DLM dataset/veg04_f.shp
Binary file not shown.
Binary file added Testdaten/ATKIS Basis DLM dataset/veg04_f.shx
Binary file not shown.
Loading
Loading