Arbeiten mit georeferenzierten historischen Karten

30 Dez

Version 1.0


Georeferenzierte historische Karten im Rasterformat

Mittlerweile liegen eine ganze Reihe von historischen Karten hochaufgelöst digitalisiert vor, die georeferenziert sind und auch für eine Historische Statistik Verwendung finden können.1 Die Verwendungsmöglichkeiten demonstrieren wir hier mit einer Karte der Harvard Geospatial Library, die für den Bildungs- bzw. nicht-kommerziellen Gebrauch freigegeben ist.

Karte aus der Harvard Geospatial Library

Sie trägt den umständlichen Titel:

„Deutschland und der gröste Theil der umliegenden Staaten : oder Mittel-Europa in 35 Blättern : nach astronomischen Ortsbestimmungen und den besten Special-Karten, mit Rücksicht auf die neuesten Grenz-Bestimmungen entworfen, zufolge der Wiener Congress-Akte, des Pariser Friedens vom 21ten Nov. 1815, und der neuesten Austauschungen 1816 von H.H. Gotthold ; geschrieben und gestochen von H. Kliewer ; sämtliche Gebürge im Atlas sind gezeichnet und gestochen von Paulus Schmidt, so wie auch die Sectionen 3,11,16,18,19,21,25,26,31 von demselben gestochen worden.“

Die Karte wurde 1816 von Simon Schropp & Co. im Maßstab ca. 1:1,100,000 veröffentlicht. Sie kann ohne Anmeldung heruntergeladen werden. Insgesamt werden drei Dateien heruntergeladen: eine Datei mit Endung jp2, die die eigentliche Karte als Bild im JPG 2000-Format enthält, ein sog. Worldfile mit Endung jp2, der aus sechs Textzeilen mit jeweils einer Zahl besteht und die Geo-Einordnung der Karte ermöglicht, schließlich eine Datei mit Erläuterungen zur Karte (Herkunft, Erstellungsmethode usw.) im XML-Format. Die Karte ist 519,3 MB groß, mit einer Breite und Höhe von 18.941 Pixel mal 15.702 Pixel, hat also eine Auflösung von 297 Megapixel. Wie man dem Bild entnehmen kann, war sie vor der Digitalisierung stark gefaltet.

Raster Overlay mit QGIS

Zuerst laden wir die Karte in QGIS. Dort werden auch die Informationen des World-Files berücksichtigt. Als erstes definieren wir ein neues Projekt (Projekt->Neu). In dem neuen Projekt wird dann als erstes einen Rasterlayer (Layer->Layer hinzufügen->Rasterlayer hinzufügen…). Dabei muss zunächst das Koordinatenbezugssystem ausgewählt werden. Hier wählen wir, wie in der Beschreibung zu der Karte (online sowie in de XML-Datei) angegeben, „Europe_Lambert_Conformal_Conic (EPSG: 102014)“ aus.

Koordinatenbezugssystem-Auswahl

Den unten angegebenen KBS-String

+proj=lcc +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs

verwenden wir später in R, um dort die Karte einzulesen.

Im zweiten Schritt fügen wir eine aktuelle Karte von Deutschland als Vektorlayer hinzu (Layer->Layer hinzufügen->Vektorlayer hinzufügen…). Dazu wählen wir „DEU_adm1.shp“, die wir zuvor von der Global Administrative Areas Webseite (game.org) heruntergeladen haben. Der Shapefile enthält in der Datei „DEU_adm1.prj“ Informationen zum Koordinatenbezugssystem, so dass die Karte automatisch richtig auf der historischen Karte positioniert wird. Anschließend öffnen wir das Layer-Fenster (Ansicht->Bedienfelder->Layerfenster) und wählen mit der rechten Maustaste auf dem Eintrag „DEU_adm1“ den Menüpunkt „Eigenschaften“. Hier können wir die Farbe und Transparenz der aktuellen Karte anpassen. Das Ergebnis sieht so aus:

Overlay Raster und Shapefile in QGIS

Aufgrund der Berücksichtigung der Georeferenzierungs-Information ist die Karte gegenüber der Originaldatei nun leicht „gedreht“ (zu sehen am schwarzen Rand links).

Raster Overlay mit R

Auch mit R ist es möglich, die Raster-Karte mit anderen geoereferenzierten Daten, z.B. Vektorkarten, zu überlagern. Hierfür muss jedoch zunächst die in QGIS eingelesene JPG 2000 Datei im GTiff-Format abgespeichert werden. Dazu wählen wir im Layerfenster mit der rechten Maustaste auf dem Eintrag „G6030_1816_G6“ den Menüpunkt „Speichern als…“. Hier sind bereits alle Angaben korrekt voreingestellt, wir müssen nur noch einen Dateinamen angeben. Wir geben hier „G6030_1816_G6_Export_QGIS.tif“ an. Als Ergebnis erhalten wir eine 927,9 MB große TIFF-Datei, die wir im nächsten Schritt problemlos in R einlesen können.

library(maptools)
library(raster)
library(Cairo)
png_datei<-"raster_overlay.png"
CairoPNG(png_datei,width=7000,height=6000)
 
x <- brick('G6030_1816_G6_Export_QGIS.tif')
projektion.raster<-"+proj=lcc +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs"
projection(x)<-projektion.raster
plotRGB(x, maxpixels=42000000)
 
y<-readShapeSpatial("DEU_adm_shp/DEU_adm1.shp",proj4string=CRS("+proj=longlat +datum=WGS84 +no_defs"))
y=spTransform(y,CRS=CRS(projektion.raster))
plot(y, add=T, border=rgb(228,217,202,130,maxColorValue=255), col=rgb(255,0,0,30,maxColorValue=255))
dev.off()

In R laden wir die Bibliotheken maptools (für das Einlesen und die Transformation des Shapefiles), raster (für den Import und die Anzeige der TIFF-Datei) und Cairo (für das Speichern des Ergebnisses als PNG-Datei). Mit der Funktion brick() wird die TIFF-Datei eingelesen, anschließend wird ihr die aus QGIS ausgelesene Projektion zugeordnet. Das „Raster“ wird mit plotRGB() angezeigt. Im zweiten Schritt wird der Shapefile eingelesen2 und so transformiert, dass die Projektion mit derjenigen des Rasters übereinstimmt. Schließlich wird der transformierte Shapefile über die vorhandene Rasterabbildung gezeichnet. Das Ergebnis ist eine hochaufgelöste Karte (7000 mal 6000 Pixel, 91,7 MB, hier nur als Screenshot wiedergegeben).

Raster Overlay mit R

Kartenausschnitte

Das Übereinanderlegen von historischen Rasterkarten und Vektordaten funktioniert nicht nur für ganze Dateien, sondern auch für Ausschnitte. Hierfür stellt das Paket raster die Funktion crop() bereit. Zur Illustration verwenden wir eine Karte von eurostat, die für Deutschland die sog. NUTS-Ebenen 1 und 2 bereitstellt. Die 2. Ebene bilden in Deutschland 38 Regionen (v.a. Regierungsbezirke).

Wir wählen hier den Regierungsbezirk Arnsberg aus:

library(gdata)    # für XLSX-Import
nuts2013<-readShapeSpatial("NUTS_2013_03M_SH/data/NUTS_RG_03M_2013.shp", proj4string=CRS("+proj=longlat"))
m=spTransform(nuts2013,CRS=CRS("+proj=merc"))
DEU<-m[substr(m$NUTS_ID, 1, 3)=="DE",]
DEA5<-m[m$NUTS_ID=="DEA5",]
plot(DEU)
plot(DEA5, add=T)

Die einzelnen Schritte entsprechen im Wesentlichen dem vorherigen Beispiel. Im Unterschied dazu wird hier der Shapefile gefiltert und mit den Außengrenzen dieses Regierungsbezirks ein Rechteck definiert, das dann aus der Rasterkarte „ausgeschnitten“ wird. Zuletzt werden, wie im vorigen Beispiel, beide Ebenen übereinandergelegt.

library(maptools)
library(raster)
library(Cairo)
library(gdata)  
png_datei<-"DEA5_crop_raster_overlay.png"
CairoPNG(png_datei,width=1000,height=1000)
 
x <- brick('G6030_1816_G6_Export_QGIS.tif')
projektion.raster<-"+proj=lcc +lat_1=43 +lat_2=62 +lat_0=30 +lon_0=10 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs"
projection(x)<-projektion.raster
 
nuts2013<-readShapeSpatial("NUTS_2013_03M_SH/data/NUTS_RG_03M_2013.shp", proj4string=CRS("+proj=longlat"))
m=spTransform(nuts2013,CRS=CRS("+proj=merc"))
DEU<-m[substr(m$NUTS_ID, 1, 3)=="DE",]
DEA5<-m[m$NUTS_ID=="DEA5",]
DEA5p=spTransform(DEA5,CRS=CRS(projektion.raster))
ausschnitt<-crop(x, DEA5p)
plotRGB(ausschnitt, maxpixels=1000000)
plot(DEA5p, add=T, border=rgb(228,217,202,130,maxColorValue=255), col=rgb(255,0,0,30,maxColorValue=255))
dev.off()

Das Ergebnis ist der Ausschnitt der historischen Karte, der das Gebiet des heutigen Regierungsbezirkes Arnsberg umfasst.3

Ausschnitt von NUTS-Region DEA5 (Regierungsbezirk Arnsberg) von 2006 auf historischer Karte von 1816

Anmerkungen:

  1. Wolfgang Crom / Markus Heinz, Karten, Kartographiegeschichte, Geschichtskarten, in: Clio Guide – Ein Handbuch zu digitalen Ressourcen für die Geschichtswissenschaften, Hrsg. von Laura Busse, Wilfried Enderle, Rüdiger Hohls, Gregor Horstkemper, Thomas Meyer, Jens Prellwitz, Annette Schuhmann, Berlin 2016 (=Historisches Forum, Bd. 19), http://www.clio-online.de/guides/sammlungen/karten-kartographiegeschichte-geschichtskarten/2016.
  2. Zu den Einzelheiten siehe Rahlf T. (2018) Karten. In: Datenvisualisierung mit R. Springer Spektrum, Berlin, Heidelberg, doi.org/10.1007/978-3-662-54820-2_10.
  3. In der Mitte der Vergrößerung sieht man deutlich eine Faltkante der Karte.