Geoprocesing and reference and coordinate systems
Dieses Tutorial zeigt Schritt für Schritt, wie man bestimmte Aufgaben wie das Lesen von Shapefiles, das Erstellen von Puffern, das Zusammenführen von geometrischen Objekten, das Schneiden von Objekten, das reprojizieren von Objekten und das Exportieren von Ergebnissen durchführt.
Die benötigten R-Pakete sind:
sfterradplyr
Die benötigten Shapefiles sind:
- bezirke_ortsteile.shp
- protected_areas_Berlin.shp
- strassen_berlin_haupt_utm.shp
- Wasserschutzgebiete_Berlin.shp
- Zufallspunkte_Berlin_1.shp
- Zufallspunkte_Berlin_2.shp
Die benötigten Raster sind:
- temperatur.tif
Vorbereitung¶
Im ersten Teil des Tutorials wird gezeigt, wie man die benötigten R-Pakete installiert und lädt. Es wird auch gezeigt, wie man das Arbeitsverzeichnis einstellt und Shapefiles und ein Raster in R einliest.
Installieren der benötigten Pakete¶
Falls die R-Pakete sf, terra und dplyr noch nicht installiert sind, werden diese hier installiert und bestehende Pakete auf den neuesten Stand gebracht. Bitte beachten Sie, dass dieser Vorgang etwas Zeit in Anspruch nehmen kann.
update.packages(ask = FALSE)
pkgs <- c("sf", "dplyr", "terra")
install.packages(pkgs[!pkgs %in% installed.packages()])
Die Warnung kann ignoriert werden.
Laden der benötigten Pakete¶
Nachdem die Pakete installiert wurden, müssen sie noch geladen werden.
library(sf)
library(terra)
library(dplyr)
Das Arbeitsverzeichnis setzen¶
Das Arbeitsverzeichnis wird auf den Pfad der Daten gesetzt. PFAD-ZU-DATEN muss angepasst werden.
setwd("PFAD-ZU-DATEN")
Einlesen der Shapefiles¶
Hier werden mehrere Shapefiles im Arbeitsverzeichnis eingelesen und als R-Objekte gespeichert.
bezirke_ortsteile <- st_read("bezirke_ortsteile.shp")
protected_areas_berlin <- st_read("protected_areas_Berlin.shp")
strassen_berlin_haupt_utm <- st_read("strassen_berlin_haupt_utm.shp")
wasserschutzgebiete_berlin <- st_read("Wasserschutzgebiete_Berlin.shp")
zufallspunkte_berlin_1 <- st_read("Zufallspunkte_Berlin_1.shp")
zufallspunkte_berlin_2 <- st_read("Zufallspunkte_Berlin_2.shp")
Einlesen des Rasters¶
Ein Raster im Arbeitsverzeichnis wird eingelesen und als R-Objekt gespeichert.
temperatur <- rast("temperatur.tif")
Verarbeitung¶
Im zweiten Teil des Tutorials werden verschiedene Verarbeitungsschritte durchgeführt. Es werden beispielsweise Puffer erstellt, geometrische Objekte zusammengeführt, Objekte geschnitten und ein Raster maskiert.
Buffer¶
Hier wird ein Buffer von der strassen_berlin_haupt_utm erstellt und als neues R-Objekt buffer gespeichert. Die Bufferbreite beträgt 100 Meter und wird in dist angegeben.
buffer <- st_buffer(strassen_berlin_haupt_utm, dist = 100)
Merge¶
Die beiden Objekte zufallspunkte_berlin_1 und zufallspunkte_berlin_2 werden zu einem Objekt zusammengeführt und als neues R-Objekt merge gespeichert.
merge <- st_union(zufallspunkte_berlin_1, zufallspunkte_berlin_2)
Die Warnung kann ignoriert werden.
Dissolve¶
Die Polygone im Shapefile bezirke_ortsteile werden nach BEZNAME gruppiert, dann zu einem Polygon vereinigt, als neues R-Objekt dissolve gespeichert und in das Polygonformat konvertiert.
grouped_bezirke <- group_by(bezirke_ortsteile, BEZNAME)
unionized_bezirke <- summarize(grouped_bezirke, geometry = st_union(geometry))
dissolve <- st_cast(unionized_bezirke, "POLYGON")
Die Warnung kann ignoriert werden.
Union¶
Die beiden Shapefiles wasserschutzgebiete_berlin und protected_areas_berlin werden zu einem Objekt zusammengeführt und als neues R-Objekt gespeichert.
union <- st_union(wasserschutzgebiete_berlin, protected_areas_berlin)
Die Warnung kann ignoriert werden.
Clip eines Shapefiles¶
Das Polygonobjekt dissolve wird nach dem Bezirk Steglitz-Zehlendorf gefiltert, und das Shapefile protected_areas_berlin wird dann auf das Polygonobjekt zugeschnitten und als neues R-Objekt clip gespeichert.
clip <- st_intersection(protected_areas_berlin, dissolve[dissolve$BEZNAME == "Steglitz-Zehlendorf", ])
Die Warnung kann ignoriert werden.
Clip eines Rasters¶
Das Raster temperatur wird auf das Polygonobjekt dissolve zugeschnitten und als neues R-Objekt clip_raster gespeichert.
clip_raster <- mask(temperatur, dissolve)
Reprojection¶
Gibt die ursprüngliche Projektion (Koordinatenreferenzsystem) aus. In der 5. Zeile finden Sie die aktuelle Projektion.
bezirke_ortsteile
Reprojiziert bezirke_ortsteile. Ersetzen Sie 4326 durch den gewünschten EPSG-Code
reproj <- st_transform(bezirke_ortsteile, 4326)
In der 5. Zeile finden Sie die neue Projektion, sie ist jetzt WGS 84, was dem Code 4326 entspricht.
reproj
Export¶
Im letzten Teil des Tutorials wird gezeigt, wie man die Ergebnisse in verschiedenen Formaten, wie Shapefiles oder Raster, exportieren kann.
Export der Shapefiles¶
Die erstellten Shapefiles werden im Arbeitsverzeichnis als neue Dateien gespeichert.
st_write(buffer, "buffer.shp", overwrite = TRUE, append = TRUE)
st_write(merge, "merge.shp", overwrite = TRUE, append = TRUE)
st_write(dissolve, "dissolve.shp", overwrite = TRUE, append = TRUE)
st_write(union, "union.shp", overwrite = TRUE, append = TRUE)
st_write(clip, "clip.shp", overwrite = TRUE, append = TRUE)
st_write(reproj, "reproj.shp", overwrite = TRUE, append = TRUE)
Export des Rasters¶
Das erstellte Raster clip_raster wird im Arbeitsverzeichnis als neue Datei gespeichert.
writeRaster(clip_raster, "clip_raster.tif", overwrite = TRUE)
Die Resultate der Verarbeitungsschritte werden als Shapefiles und Raster exportiert, welche anschließend in anderen Anwendungen, wie beispielsweise ArcGIS Pro, weiterverwendet werden können. Beim Raster kann es vorkommen, dass eine Zentrierung auf den Layer notwendig ist, da dieser möglicherweise keine Projektion aufweist. Eine Zentrierung auf den Layer kann durch einen Rechtsklick auf den Layer und die Auswahl der Option "Zoom to Layer" erreicht werden.