---
title: Übung Koordinatenbezugssysteme in QGIS
description: Übung zum Umgang mit KBS in QGIS
date: 18.11.2021
author: Kai-Christian Bruhn
affiliation: Hochschule Mainz
contact: kai-christian.bruhn@hs-mainz.de
license: cc by 4.0
tags: GIS, QGIS, Spatial Humanities, Übung, Koordinatenbezugssysteme, Digital Humanities
---
Übung Koordinatenbezugssysteme in QGIS
===
In der Übung werden zwei Szenarien anhand unterschiedlicher Beispiel-Daten durchgespielt:
1. Die Definition einer Projektion für ein weiträumige Kartierung. Die Beispieldaten kommen aus dem Bomber's Baedeker-Projekt
2. In kleinräumigerem Massstab wird ein lokales KBS für 2D-Messungen (Tachymeter) auf ein übergeordnetes UTM-System bezogen
## Spezifische Projektion für Kartierungen mit dem Projection Wizard
* Spezifische Kartenausschnitte
* Nicht für die Koordinatentransformation sondern für die kartographische Aufbereitung
* flächentreu (equal area)
* winkeltreu (conformal)
* längentreu (equidistant)
### WKT aus Projection Wizard exportieren
Anwendung starten
https://projectionwizard.org/
Einstellungen anpassen:
Oben rechts neben dem Kartenausschnitt *customize* wählen:

Einstellungen vornehmen (Beispiel Europa):

und gewünschten Ausschnitt (blauer Rahmen) mit den Eckpunkten in der Karte festlegen:

Oben links ***Distortion Property*** auswählen. Unter der Karte werden die Details genannt:

Am Beispiel Equal-area das Vorgehen für den Export, um die Projektion in QGIS zu übernehmen:
**Equal-area**

Mit der linken Maustaste auf den Link **WKT** klicken. Es öffnet sich ein Fenster mit der Definition, die in die Zwischenablage kopiert werden kann:

In einem Texteditor kann der Name der Projektion in der ersten Zeile angepasst werden:
```
PROJCS["Kartierung Bomber's Baedeker",
GEOGCS["GCS_ETRS_1989",
DATUM["D_ETRS_1989",
SPHEROID["GRS_1980",6378137.0,298.257222101]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],
PROJECTION["Albers"],
PARAMETER["False_Easting",0.0],
PARAMETER["False_Northing",0.0],
PARAMETER["Central_Meridian",15],
PARAMETER["Standard_Parallel_1",48.2800109],
PARAMETER["Standard_Parallel_2",53.9592905],
PARAMETER["Latitude_Of_Origin",51.1196507],
UNIT["Meter",1.0]]
```
QGIS starten. Über *Menü - Einstellungen - Benutzerprojektionen* den Dialog aufrufen:

Ist es das erste Benutzerkoordinatensystem (BKS), einfach im unteren Bereich des Dialogs den Namen und die WKT-Definition eintragen:

Anmerkung: Sind schon BKS' definiert, muss zunächst mit einem Klick auf das Plus-Symbol oben rechts ein neuer Eintrag erzeugt werden.
Das so erzeugte BKS kann in QGIS für die Darstellung im map-canvas ausgewählt werden:
*Menü - Projekt - Eigenschaften*
In der Leiste links im Dialog *KBS* auswählen. Unter "Vordefinierte Koordinatensysteme" ist eine Liste. Ganz unten finden Sie die Benutzerdefinierten Koordinatensysteme. Wählen Sie deben erstellte KBS aus und übernehmen Sie die Einstellungen mit ok.

Flächentreue Kartierung der Orte aus Bomber's Baedecker mit OSM-Daten im Hintergrund:

© OpenStreetMap contributors
### Vergleich der Projektionen
Ein Vergleich zu dem Kartenausschnitt in WGS84-Koordinaten lässt die Unterschiede unmittelbar evident werden:


© OpenStreetMap contributors
Mit dem Projection wizard können für den gleichen Karten-Ausschnitt über die Auswahl oben links auch winkel- und längentreue Projektionen erzeugt werden:
**Conformal**

```
PROJCS["ProjWiz_Custom_Lambert_Conformal_Conic",
GEOGCS["GCS_ETRS_1989",
DATUM["D_ETRS_1989",
SPHEROID["GRS_1980",6378137.0,298.257222101]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],
PROJECTION["Lambert_Conformal_Conic"],
PARAMETER["False_Easting",0.0],
PARAMETER["False_Northing",0.0],
PARAMETER["Central_Meridian",15],
PARAMETER["Standard_Parallel_1",48.2800109],
PARAMETER["Standard_Parallel_2",53.9592905],
PARAMETER["Latitude_Of_Origin",51.1196507],
UNIT["Meter",1.0]]
```
Winkeltreue Projektion:

© OpenStreetMap contributors
**Equidistant**

```
PROJCS["ProjWiz_Custom_Equidistant_Conic",
GEOGCS["GCS_ETRS_1989",
DATUM["D_ETRS_1989",
SPHEROID["GRS_1980",6378137.0,298.257222101]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],
PROJECTION["Equidistant_Conic"],
PARAMETER["False_Easting",0.0],
PARAMETER["False_Northing",0.0],
PARAMETER["Central_Meridian",15],
PARAMETER["Standard_Parallel_1",48.2800109],
PARAMETER["Standard_Parallel_2",53.9592905],
PARAMETER["Latitude_Of_Origin",51.1196507],
UNIT["Meter",1.0]]
```
Längentreue Projektion

© OpenStreetMap contributors
### Vergleich der Projektionen zu UTM
Bomber's Baedeker Orte in Projektion WGS 84 / UTM zone 33N (epsg:32633)

© OpenStreetMap contributors
**Anmerkung**:
Selbstverständlich könnten anhand der WKT-Definition auch die Werte der Koordinaten transformiert werden. Das ist aber in diesem Fall nicht notwendig, da die Projektion ausschließlich für die Darstellung auf der Kartierung genutzt wird.
## Lokales Koordinatenbezugssystem
Eine andere Herausforderung stellt die Transformation von Koordinaten einem lokalen Bezugssystem in ein übergeordnetes System dar.
Bei regional oder lokal angelegten Geländearbeiten etwa in der Geologie oder Archäologie, werden in einem lokalen, kartesischen Koordinatensystem Punktkoordinaten gemessen und gespeichert.
Sollen diese in einem GIS zusammen mit Geodatensätzen ausgewertet werden, die in einem bekannten, nationalen oder internationalen Koordinatenbezugssystem vorliegen, muss die WKT-Definition die Parameter zur Transformation (Umrechnung) der Koordinaten zwischen diesen Systemen enthalten.
Die Beispieldaten stammen von der türkischen Westküste im Gebiet des antiken Milet (UTM 35 N, epsg: 32635).
| id_lokal | x_lokal | y_lokal |x_UTM35 | y_UTM35 |
| -------- | ------- | ------- | ------ | ------- |
| 2 | 2000000 | 2000000 | 524416892 | 4153799146 |
| 114 | 1988868 | 1935433 | 524404304 | 4153734874 |
| 3009 | 2349195 | 1720620 | 524759528 | 4153512033 |
| 3018 | 2142379 | 1970167 | 524558502 | 4153766106 |
| 117 | 2024165 | 1770388 | 524435837 | 4153569136 |
| 5004 | 2645436 | 2565553 | 525074728 | 4154349702 |
| 5009 | 1946620 | 1368196 | 524349224 | 4153168963 |
| 6005 | 395553 | 995801 | 522790722 | 4152832018 |
| 2503 | 1982335 | 2113007 | 524401800 | 4153912481 |
| 3010 | 2393722 | 1728247 | 524804198 | 4153518646 |
| 5001 | 2569692 | 2084125 | 524988120 | 4153870304 |
| 5002 | 2466978 | 2241344 | 524889037 | 4154029749 |
``` csv
id_lokal,x_lokal,y_lokal,x_UTM35,y_UTM35
2,2000000,2000000,524416892,4153799146
114,1988868,1935433,524404304,4153734874
3009,2349195,1720620,524759528,4153512033
3018,2142379,1970167,524558502,4153766106
117,2024165,1770388,524435837,4153569136
5004,2645436,2565553,525074728,4154349702
5009,1946620,1368196,524349224,4153168963
6005,395553,995801,522790722,4152832018
2503,1982335,2113007,524401800,4153912481
3010,2393722,1728247,524804198,4153518646
5001,2569692,2084125,524988120,4153870304
5002,2466978,2241344,524889037,4154029749
```
Kartierung Punkte lokal:

Kartierung Punkte UTM 35N:

### Lösungsansätze
Für QGIS stehen zwei plugins zur Verfügung, die die Umrechnung von lokalen auf UTM-Koordinaten unterstützen:
**LF Tools**
https://github.com/LEOXINGU/lftools/
Zu dem hier behandelten Problem gibt es auch ein [issue](https://github.com/LEOXINGU/lftools/issues/2) und einen thread auf [stackexchange](https://gis.stackexchange.com/questions/366578/custom-crs-for-historic-site-grid/366641#366641).
Das in den Antworten dort auch angeführte python-Modul `simil` ist im Geoscience plugin implementiert (s.u.)
**Geoscience plugin**
https://www.spatialintegration.com/2020/07/07/local-grids-in-qgis/
https://www.spatialintegration.com/geoscience-plugin-for-qgis/
### LF Tools
Vorgehen:
1. Import der Punkte in lokalen und UTM-Koordinaten
2. Ableitung eines Polygons mit der konvexen Hülle
4. Verbinden der Punkte mit Linien
5. Transformation mit dem LF Tools plugin
#### 1. Import der Punkte in lokalen Koordinaten
Die csv-Dateien mit den lokalen und den UTM-Koordinaten als einzelne layer jeweils über *Getrennte Textdatei als Layer hinzufügen...* in ein neues Projekt importieren. Als KBS für das Projekt und den Map-Canvas kann WGS84/UTM35N epsg:32635 gewählt werden.
Nach dem Import die Layer in ein Geopackage überführen.
#### 2. Ableitung eines Polygons mit der konvexen Hülle
Um das Ergebnis visuell als Flächengeometrie evaluieren zu können, erzeugen wir eine konvexe Hülle um die Punkte aus dem lokalen Koordinatensystem:
*Verarbeitugnswerzeuge - Minimal begrenzende Geometrie*
Im Dialog die Geometrie direkt in einen neuen Layer `milet_lokal_flaeche` im Geopackage ablegen:

Ergebnis:

#### 3. Verbinden der Punkte mit Linien
Wie Punkt mit gleichen Attributwerten mit Linien verbunden werden, ist in einer anderen Übung [ausführlich erläutert](https://hackmd.io/GrYOsQIMSj2ZsApJxzPx8A?view#5-Zusammenf%C3%BChren-der-bereinigten-Daten).
Zu beachten ist, dass nach dem Zusammenführen der beiden Punktlayer `milet_lokal` und `milet_utm35N` zu einem neuen layer `milet_alle_punkte` die Punktnummer der UTM-Koordinaten angepasst werden muss (sie hat zwei Nullziffern am Ende, die gestrichen werden müssen, damit die Nummern der Punktpaare identisch sind).

Korrigierte Punknummern:

Gleiche Punkte aus den zwei Koordinatensystemen mit Linien in einem neuen Layer `milet_punkte_linien` verbinden (*Werkzeugkiste - Punkte zu Weg/Points to path:

Ergebnis:

#### 4. Transformation mit dem LF Tools plugin
Nach der Installation sind die LF Tools in der Liste der Verarbeitungswerkzeuge aufgeführt:

Im Dialog kann die zu transformierende Geometrie ausgesucht werden. Die Transformationsparamter werden über die Linien ausgedrückt. Im Ergebnis wird die transformierte Geometrie als neuer Layer gespeichert:
**Wichtig**:
Das Plugin erzeugt auch einen *Adjustment Report* in der Ergebnisanzeige mit einem Link zu einem lokalen HTML-Dokument mit den ermittelten Transformationswerten.

Report:

Plain Text:
```
CONFORMAL TRANSFORMATION(HELMERT 2D)
Mathematical Formulation
ax - by + Tx = X + Vx
bx + ay + Ty = Y + Vy
Residual Errors of Control Points
Punkt,Vx,Vy
1,-0.0027,0.0046
2,-0.0001,0.0052
3,-0.0020,-0.0052
4,0.0045,0.0000
5,0.0053,-0.0010
6,-0.0064,0.0093
7,-0.0007,0.0135
8,-0.0008,-0.0050
9,0.0058,-0.0098
10,-0.0039,-0.0036
11,-0.0009,-0.0022
12,0.0020,-0.0058
Transformation Parameters:
a = 0.9993433907497575
b = -0.022682545833639267
Tx = 522372.84216763766
Ty = 4151845.8294620616
Rotation = 358°41'59.12"
Maßstab = 0.9996007755702863
Adjustment’s Reference Variance = 0.02962389940671276
```
Aus diesen Werten ließe sich auch eine WKT-Definition mit Transformationsparamtern für das lokale KBS ableiten. Deutlich einfacher geht das allerdings mit dem Geoscience Plugin.
### Geoscience Plugin
Nach der Installation sind die Werkzeuge des Geoscience Plugin im Menü eingetragen:

Der Dialog erlaubt das Eintragen der UTM- und lokalen Koordinaten. Mit *Calculate* wird der WKT-String erzeugt, der in QGIS als BKS genutzt werden kann.
Probieren wir ein wenig aus. Zunächst werden nur 5 Punkte für die Berechnung der Transformationsparameter genutzt:
**Option 1 mit 5 Parametern**

**WKT-Definition des KBS mit Transformationsparametern**
```WKT
DERIVEDPROJCRS["Milet 5 param",BASEPROJCRS
["WGS 84 / UTM zone 35N",BASEGEOGCRS
["WGS 84",
ENSEMBLE["World Geodetic System 1984 ensemble",
MEMBER["World Geodetic System 1984 (Transit)"],
MEMBER["World Geodetic System 1984 (G730)"],
MEMBER["World Geodetic System 1984 (G873)"],
MEMBER["World Geodetic System 1984 (G1150)"],
MEMBER["World Geodetic System 1984 (G1674)"],
MEMBER["World Geodetic System 1984 (G1762)"],
MEMBER["World Geodetic System 1984 (G2139)"],
ELLIPSOID["WGS 84",6378137,298.257223563,
LENGTHUNIT["metre",1]],
ENSEMBLEACCURACY[2.0]],
PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],
ID["EPSG",4326]],
CONVERSION["UTM zone 35N",
METHOD["Transverse Mercator",ID["EPSG",9807]],
PARAMETER["Latitude of natural origin",0,
ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],
PARAMETER["Longitude of natural origin",27,
ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],
PARAMETER["Scale factor at natural origin",0.9996,
SCALEUNIT["unity",1],ID["EPSG",8805]],
PARAMETER["False easting",500000,
LENGTHUNIT["metre",1],ID["EPSG",8806]],
PARAMETER["False northing",0,
LENGTHUNIT["metre",1],ID["EPSG",8807]]
]
],
DERIVINGCONVERSION["Affine",
METHOD["Affine parametric transformation",ID["EPSG",9624]],
PARAMETER["A0",-428265575.5722067,
LENGTHUNIT["metre",1],ID["EPSG",8623]],
PARAMETER["A1",1.0001352623348605,
SCALEUNIT["coefficient",1],ID["EPSG",8624]],
PARAMETER["A2",-0.022683391019922776,
SCALEUNIT["coefficient",1],ID["EPSG",8625]],
PARAMETER["B0",-4164256552.475672,
LENGTHUNIT["metre",1],ID["EPSG",8639]],
PARAMETER["B1",0.022683391019922776,
SCALEUNIT["coefficient",1],ID["EPSG",8640]],
PARAMETER["B2",1.0001352623348605,
SCALEUNIT["coefficient",1],ID["EPSG",8641]]
],
CS[Cartesian,2],
AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1]],
AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1]]]
```
**Option 2 mit allen bekannten Paramtern**

```WKT
DERIVEDPROJCRS["Milet 12 param",BASEPROJCRS
["WGS 84 / UTM zone 35N",BASEGEOGCRS
["WGS 84",
ENSEMBLE["World Geodetic System 1984 ensemble",
MEMBER["World Geodetic System 1984 (Transit)"],
MEMBER["World Geodetic System 1984 (G730)"],
MEMBER["World Geodetic System 1984 (G873)"],
MEMBER["World Geodetic System 1984 (G1150)"],
MEMBER["World Geodetic System 1984 (G1674)"],
MEMBER["World Geodetic System 1984 (G1762)"],
MEMBER["World Geodetic System 1984 (G2139)"],
ELLIPSOID["WGS 84",6378137,298.257223563,
LENGTHUNIT["metre",1]],
ENSEMBLEACCURACY[2.0]],
PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],
ID["EPSG",4326]],
CONVERSION["UTM zone 35N",
METHOD["Transverse Mercator",ID["EPSG",9807]],
PARAMETER["Latitude of natural origin",0,
ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],
PARAMETER["Longitude of natural origin",27,
ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],
PARAMETER["Scale factor at natural origin",0.9996,
SCALEUNIT["unity",1],ID["EPSG",8805]],
PARAMETER["False easting",500000,
LENGTHUNIT["metre",1],ID["EPSG",8806]],
PARAMETER["False northing",0,
LENGTHUNIT["metre",1],ID["EPSG",8807]]
]
],
DERIVINGCONVERSION["Affine",
METHOD["Affine parametric transformation",ID["EPSG",9624]],
PARAMETER["A0",-428197241.90141606,
LENGTHUNIT["metre",1],ID["EPSG",8623]],
PARAMETER["A1",1.0001417995961237,
SCALEUNIT["coefficient",1],ID["EPSG",8624]],
PARAMETER["A2",-0.022700667705007144,
SCALEUNIT["coefficient",1],ID["EPSG",8625]],
PARAMETER["B0",-4164292771.8436503,
LENGTHUNIT["metre",1],ID["EPSG",8639]],
PARAMETER["B1",0.022700667705007144,
SCALEUNIT["coefficient",1],ID["EPSG",8640]],
PARAMETER["B2",1.0001417995961237,
SCALEUNIT["coefficient",1],ID["EPSG",8641]]],
CS[Cartesian,2],
AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1]],
AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1]]]
```
#### Übernahme in QGIS
Die vom Geoscience Plugin WKT-Definition kann genauso wie oben die Kartenprojektion aus dem Wizard als *Benutzerprojektion* in QGIS übernommen werden.
Für die Umrechnung von Koordinaten müssen in den Projekteigenschaften in QGIS die Transformationeinstellungen vorgenommen werden:

Registerkarte *Transformationen*

Über das grüne :heavy_plus_sign:-Zeichen eine neue Transformation für das Projekt festlegen:

Weiterführende Hinweise finden Sie in der QGIS-Dokumentation:
* https://docs.qgis.org/3.22/en/docs/user_manual/working_with_projections/working_with_projections.html#datum-transformation
* https://docs.qgis.org/3.22/en/docs/training_manual/vector_analysis/reproject_transform.html?highlight=transformations#hard-fa-creating-your-own-projection