www.blafusel.de

  Home  |   Privat  |   Impressum  |   Bücher  |   Computer  |   Misc  |   OBD  |   Forum
Email Alarm
Phishing E-Mail
Histo-Map

Historische Karten georeferenzieren und verarbeiten

Inhalt

Rechtliche Aspekte
Landkarten im Web
QGIS
Tileset erzeugen
Karten selber scannen
Georeferenzierung und Begradigung von Karten
GDAL-Georeferenzierung
Tilesets downloaden

zonak: Berlin historische Karten zur Krimireihe „Kriminalkommissar Gereon Rath“ Während meiner Arbeit am Projekt Historische Karten (von Berlin) zur Krimireihe „Kriminalkommissar Gereon Rath“ kam der Wunsch auf, selber historische Karten einzuscannen und für die Webseite zu nutzen, um nicht nur auf externe Datenquellen angewiesen zu sein, die teilweise etwas langsam sind oder mit größeren Abfragen nicht zurecht kommen. Ich möchte die Karten in einer Webseite integrieren und es dem Besucher ermöglichen, sich ähnlich wie bei Google Maps darin sich zu bewegen und zu zoomen. Gesetzte Marker sollen wichtige Punkte markieren, zu denen sich beim Anklicken ein Infofenster öffnet. Außerdem gibt es einige Kartenprojekte, die zwar einen riesigen oder hochwertigen Fundus bieten, diese aber nicht frei verfügbar anbieten oder in einem nicht für mein Projekt nutzbaren Format vorliegen. Einige Quellen sind beispielsweise: Histomap Berlin, Landkartenarchiv und FIS-Broker, Map Warper und der ähnliche Wikimaps Warper.

Kartenwerke zu verarbeiten ist eigentlich gar nicht sonderlich kompliziert, denn es gibt hilfreiche Programme. Allerdings ist die Dokumentation oft wenig hilfreich und schwer zu finden. Zudem gibt es viele Wege, die zum Ergebnis führen und man muß erst einmal den passenden finden. Anschließend kann es allerdings in eine enorme Fleißarbeit ausarten, wenn man selber Kartenwerke einscannen und aufbereiten will. Das wird auch ein Grund sein, warum die o. g. Anbieter sich zurückhalten mit der Freigabe ihrer Arbeit.

Rechtliche Aspekte

Natürlich darf man nicht einfach jede beliebige Landkarte oder Stadplan im Internet veröffentlichen, denn es gilt das Urheberrecht. Für private Projekte, die nicht öffentlich einsehbar sind, müssen Sie sich keine Gedanken machen, da ist alles erlaubt. Für schulische Zwecke sieht es schon etwas komplizierter aus, denn es gelten privilegierende Regelungen, die aber auch nicht alles erlauben. Für die Veröffentlichung im Internet oder anderen Medien gibt es viele Regeln zu beachten. Die Wikipedia und deren Portal für freie Medieninhalte Wikimedia Commons bieten hierzu Infos, die allerdings etwas verklausuliert sind.

Für Deutschland gilt vereinfacht folgendes (mehr: Rechte an Geoinformationen): Das Urheberrecht endet 70 Jahre nach dem Tod des Urhebers. Danach ist eine Verwendung in jeder Form möglich. Zu beachten ist, daß der Tod und nicht das Erscheinungsjahr maßgeblich ist. Bei Kartenwerken gelten die Kartografen als Urheber. Wenn man den Tod des Urhebers nicht ermitteln kann, sollte man wenigstens davon ausgehen, daß der Urheber 30 Jahre lang nach der Schaffung noch lebte, also müssen 100 Jahre nach der Veröffentlichung vergangen sein (nicht rechtsverbindlich). Bei alten Karten hat man aber oft Glück: Bei anonymen und pseudonymen Werken erlischt das Urheberrecht siebzig Jahre nach der Veröffentlichung (UrhG  §66). Oft fehlt bei historischen Karten eine Angabe zum Kartografen (oft genug fehlt sogar aus irgendeinem mir schleierhaften Grund ein Datum). Karten vor 1948 (Stand: 2019) sind dann problemlos veröffentlichbar. Es gibt noch weitere Schutzklauseln für Kartenwerke - so zum Beispiel als Sonderform von Datenbanken, die Gestaltung und auch militärische Aspekte. Topografische Karten oder amtlich veröffentlichte Werke unterliegen keinem Urheberrecht.

Landkarten im Web

Google Maps löste eine kleine Revolution aus, als der Kartendienst an den Start ging. Plötzlich konnte man die ganze Welt (mehr oder weniger vollständig) im Webbrowser betrachten. Faszinierend war auch, wie schnell man sich in der Karte bewegen konnte: verschieben und zoomen der Karte ging fast in Echtzeit. Das lag nicht nur an den schnellen Servern, sondern vor allem an der ausgeklügelten Technik dahinter: Die Weltkarte wird in allen 19 Zoomstufen vorab gerendert und in Form kleiner Bildkacheln (256 × 256 Pixel) abgespeichert (je Zoomlevel ein Ordner). Für den Zoomlevel 1 gibt lediglich 4 solcher Kacheln. Je weiter man in die Karte hineinzoomt, desto mehr Kacheln gibt es. Die Software liefert dann die Kacheln aus, die für den aktuellen Ausschnitt und den gewählten Maßstab benötigt werden (online können Sie sich die Aufteilung anschauen). Bei einer Bildschirmauflösung von exemplarisch 1680 × 1050 Pixeln werden nur 7 × 5 (ganzzahlig aufgerundet), also 35 Kacheln benötigt, die sich eventuell sogar schon im Cache des Browsers befinden, wenn der Anwender sich in einem begrenzten Gebiet bewegt. So sind nur relativ wenig Daten zu übertragen, was entsprechend schnell und meistens fast nicht wahrnembar abläuft. Beim Verschieben der Karte müssen nur die Segmente nachgeladen werden, die neu in den Ausschnitt gelangen.

Zoom-Level 1 besteht aus 41 = 4 Bildern (Map Tiles: OpenStreetMap):

Zoomlevel 1 (z) Ordner "0" (x) Ordner "1" (x)
Datei "0.png" (y) 1/0/0.png 1/1/0.png
Datei "1.png" (y) 1/0/1.png 1/1/1.png

In der nächsten Zoom-Stufe gibt es bereits doppelt so viele Kacheln. Jede Kachel aus der vorherigen Stufe wird durch vier neue Kacheln ersetzt (42 = 16):

Zoomlevel 2 (z) Ordner "0" Ordner "1" Ordner "2" Ordner "3"
Datei "0.png"
Datei "1.png"
Datei "2.png"
Datei "3.png"

In der detailliertesten Zomm-Stufe von 19 werden 419 = 274.877.906.944 Bilder benötigt, die aber nur auf dem Server vorliegen müssen, denn der Betrachter bekommt nur die wenigen Bilder ausgeliefert, die gerade in seinen Bildausschnitt im Browser passen (zuzüglich meistens ein paar mehr als Rand-Reserve). Da ja auch die Bilder für die anderen Maßstäbe vorhanden sein müssen, werden 366.503.875.924 Bilder benötigt. Im Schnitt benötigt ein Bild - im Fachjargon werden Sie als "tiles" bezeichnet - 633 Bytes, was einen Gesamtspeicherbedarf von 231 Terabytes bedeutet. Das ist so viel Speicher, daß dann doch nicht alle Tiles vorab gerendert werden. Vor allem bei den hohen Zoomstufen ab Level 13 beinhalten die allermeisten Bilder nichts von Interesse (Wasser, leeres Land) und es werden sowieso nur 1,79% der Erdoberfläche von den Anwendern betrachtet. Aus diesem Grund ist nur ein Bruchteil gespeichert und der Rest wird On-the-fly berechnet, wird er dann doch einmal benötigt.

Ein Problem bei Google war und ist, daß die Daten nicht frei verfügbar sind und die Daten in für Google weniger wichtigen Regionen auch sehr lückenhaft vorliegen. Aus solchen Überlegungen heraus entstand OpenStreetMap. An diesem Projekt kann jeder mitarbeiten und so zur Verbesserung der Daten beitragen und sogar bei Krisen helfen. Zudem sind die Daten Open Source, so daß beliebige Karten damit erstellt werden können. Dazu werden die Daten aus der Datenbank ausgelesen und in einer Rendering-Engine zu einer grafischen Karte aufbereitet. Je nach Konfiguration entstehen so unterschiedliche Kartendarstellungen beispielsweise mit unterschiedlichen Farben oder nur bestimmten Details auf Basis der gleichen Rohdaten. Auch in Navigations-Apps werden diese OSM-Daten inzwischen eingesetzt, da sie detaillierter sind und schneller aktualisiert werden, als in einigen kommerziellen Produkten.

Um die Karte von OSM in der eigenen Webseite zu benutzen, braucht es zwei Dinge: einen Tile-Server und eine API, welche sich um die Darstellung kümmert und beispielsweise ausrechnet, welche Tiles anzuzeigen sind. Eine Möglichkeit ist beispielsweise die Open-Source JavaScript-Bibliothek Leaflet und der OSM-Tile Server.

Beispiel:

Die URL zum Tileserver beinhaltet vor allem am Ende die Angaben zum Zoom (z), dem Ordner für die x-Achse und dem Dateinamen y für die Spalte: "{z}/{x}/{y}.png"

Die einfache Struktur der Ordner und Bildnamen erlaubt es, daß man auch seinen eigenen Tileserver betreiben kann. Dazu muß man nur die Bildkacheln in den Ordnern auf dem Webserver speichern und die URL auf die lokale Verzeichnisstruktur zeigen lassen. Beispielsweise: 'web/tiles/{z}/{x}/{y}.png'. Bei dieser Methode muß man aber alle pre-rendered Tiles vorhalten, so daß es nur für relativ kleine Kartenausschnitte oder kleine Zoom-Stufen sinnvoll ist.

QGIS

Von den zahlreichen GIS-Anwendungen (Geographisches Informationssystem) nutzen wir hier QGIS (Version 3.4 "Madeira"). Das Tool stellt eine grafische Benutzeroberfläche für Skripte zur Verfügung und bietet neben vielen anderen Funktionen durch die Erweiterung mit Plug-Ins die für uns notwendigen Funktionen relativ komfortabel an. QGIS ist allerdings nicht sonderlich stabil und stürzt gerne ab - also das Projekt häufig speichern!

Nach der Installation sollte die Sprache der Oberfläche automatisch auf Deutsch eingestellt sein. Ansonsten: Einstellungen/Optionen (Settings/Options) und im Bereich Allgemein (General) die Option System-Locale überschreiben (Override system locale) aktivieren und die Sprache bei Benutzeroberflächenübersetzung (User Interface Translation) ändern und die Anwendung neu starten.

Als ersten Schritt soll eine (historische) Karte genutzt werden, die schon von anderen Anwendern vorbereitet wurde. Die Karte soll nur noch in Tiles zerlegt werden, um diese auf dem eigenen Server zu nutzen. Um Verluste durch die Verarbeitung von Raster-Bildern zu minimieren, sollte stets ein verlustfreies Datenformat benutzt werden. PNG ist ein gutes Format und wird für die kleinen Grafikkacheln genutzt. Für die großen Bilder der Karten eignet sich TIFF. Eine spezielle Form ist GeoTIFF, bei dem spezielle Daten über die Georeferenz zusätzlich zu den sichtbaren Rasterdaten in die Bilddatei eingebettet werden. Das Bild kann mit einem normalen Grafikprogramm bearbeitet werden. Wird ein GeoTIFF in einer GIS-Anwendung geöffnet, kann das Bild auf einer Karte korrekt ausgerichtet und platziert werden.

Als nächstes benötigen wir das Plug-In um Tiles zu erzeugen. Für die aktuelle Version von QGIS gibt es nur eine experimentelle Version des Plug-Ins "QTiles3" (Version 1.6.0), weshalb Sie es nicht über den Erweiterungs-Manager laden können, sondern als ZIP-Datei von der Webseite herunter laden müssen. Nach dem Download öffnen Sie Erweiterungen/Erweiterungen verwalten und installieren, wechseln in den Bereich Aus ZIP installieren und wählen die herunter geladenen Datei aus (rechts auf die Schaltfläche mit drei Punkten klicken). Anschließend Erweiterung installieren und nach der Erfolgsmeldung Schließen.

Auf die gleiche Weise installieren Sie die experimentelle Version 2.0.0 von "OpenLayers Plugin". Mit diesem Plug-In haben Sie die Möglichkeit, in QGIS verschiedene Weltkarten vonGoogle und OpenStreetMap etc. als Ebene einzublenden. Das ist notwendig, um zu sehen, ob das Bild korrekt ausgerichtet ist. Außerdem benötigen Sie Karten später bei der Georeferenzierung.

Jetzt benötigen wir noch eine georeferenzierte und ausgerichtete Karte. Als Beispiel dient "Dietrich Reimer's Handkarte. Das neue Deutschland nach dem Diktat von Versailles". Auf der Webseite können Sie im Bereich Export das fertige GeoTIFF downloaden.

Erstellen Sie ein neues Projekt: Projekt/Neu und wählen Sie Web/Openlayers plugin/OpenStreetMap/OpenStreetMap, woraufhin die OSM-Karte als Layer gezeigt wird. Mit dem Mausrad zoomen Sie und bei gedrücktem Mausrad verschieben Sie die Ansicht.
Fügen Sie eine neue Ebene mit dem GeoTIFF hinzu: Layer/Layer hinzufügen/Rasterlayer hinzufügen. Im Dialogfenster wählen Sie bei Raster im Bereich Quelle das herunter geladene GeoTIFF aus, klicken auf Hinzufügen und dann auf Schließen.

QGIS Aktivieren Sie ggf. Ansicht/Bedienfelder/Layer und Ansicht/Bedienfelder/Layergestaltung für die zwei zusätzlichen Andockbereiche. Die Reihenfolge der Ebenen bestimmt, welche Ebene im Stapel oben liegt und andere verdeckt. Sie können diese einfach im Fenster Layer umsortieren. Mit den Schiebereglern im Bereich Symbolisierung im Fenster Layergestaltung können Sie die Bildfarben usw. ändern. Diese und folgende Einstellungen wirken sich immer auf den aktuellen Layer aus, der im Fenster Layer ausgewählt ist. Die Globale Deckkraft benötigen Sie ggf. später, um die Transparenz eines Layers zu verändern, um die darunter liegende Ebene zu sehen. Wenn das importierte Bild einen Rand hat und keinen transparenten Hintergrund, können Sie in QGIS eine Farben transparent schalten: Im Register Transparenz die Schaltfläche Werte der Anzeige hinzufügen anklicken und in der Ebene im Bild die Farbe anklicken, die transparent werden soll.

Wie Sie sehen, ist das geladene GeoTIFF korrekt ausgerichtet. Es soll jetzt in Tilesets zerlegt werden. Alle sichtbaren Ebenen werden in die Tileset-Grafiken übernommen, weshalb Sie zuerst die Ebene OpenStreetMap ausblenden müssen, in dem Sie im Fenster Layer das Kontrollhäkchen vor dem Layernamen entfernen.

Tileset erzeugen

Verarbeitungswerkzeuge: Generate XYZ tiles Für ältere Versionen von QGIS gab es das Plug-In "QTiles3". Ab Version 3.x ist das nicht mehr nötig - allerdings ist die integrierte Funktion etwas versteckt.

Öffnen Sie Verarbeitung/Werkzeugkiste. Das Andockfenster Verarbeitungswerkzeuge befindet sich dann vermutlich rechts unten etwas unscheinbar, kann aber losgelöst werden. Klicken Sie doppelt auf XYZ-Kacheln erzeugen (Verzeichnis).

XYZ-Kacheln erzeugen/Generate XYZ tiles Wählen Sie bei Extent durch Klick auf das Symbol ganz rechts, welcher Bereich exportiert werden soll. Ausschnittsausdehnung bedeutet, der derzeit sichtbare Bereich wird exportiert. Mit Ausdehnung auf Kartenausschnitt wählen können Sie einen roten Bereich durch aufziehen eines Rechtecks im Kartenbereich markieren, der dann exportiert wird. Layerausdehnung bearbeiten ermöglicht es, daß Sie anschließend einen Layer wählen, dessen Ausdehnung dann benutzt wird. Wichtig: Hier wählen Sie nur, welche Fläche in Tilesets zerlegt wird, nicht was in der Fläche sichtbar ist - das legen Sie in QGIS fest, in dem Sie Layer ein- und ausblenden.
Bei minimum/maximum zoom legen Sie fest, welche Zoom-Level erzeugt werden. Wie beschrieben: kleine Zoom-Level enthalten nur wenige Grafiken der ganzen Welt. Je größer der Wert, desto näher kann man später in die Karte zoomen. Es werden aber viel mehr Grafiken benötigt. Für einen ersten Test probieren Sie 3-5.
Wichtig ist, daß Sie bei Background color keinen Wert auswählen (Karomuster). Andernfalls wird ein Rand um die Karte entstehen. Die anderen Werte belassen Sie bei der Vorgabe: PNG, Quality: 75, Metatile size: 4, Kachelbreite/Kachelhöhe: 256.
Keine Ahnung, was es besagt, aber wenn die Karte zusätzliche Ebenen mit Vektordaten (bspw. Markierungen oder Beschriftungen) enthält, ist es besser, den Wert für Metatile size auf 20 zu setzen, da ansonsten bei einzelnen Zoomstufen Inhalte fehlen.
Bei Ausgabeverzeichnis wählen Sie einen Zielordner (In Verzeichnis speichern). In diesem werden die Unterordner für die Zoom-Stufen erzeugt. Geben Sie bei HTML-Ausgabe einen beliebigen Dateinamen ein (In Datei speichern), um eine HTML-Datei zu erzeugen, die ein Grundgerüst für die Anzeige der Tilesets im Browser beinhaltet.
Nach Klick auf Starte werden die Grafiken erzeugt, was sehr lange dauern kann, wenn es viele Bilder werden (hoher Zoom-Level-Wert). Anschließend können Sie das Fenster Schließen.

OSM Tileset Öffnen Sie im Explorer den Ordner, in dem Sie die Tilesets erzeugt haben. Dort befindet sich eine HTML-Datei mit dem Namen Ihres Tilesets, die Sie durch doppelklick im Browser öffnen können.
Zudem gibt es einen Ordner mit dem Namen Ihres Tilesets. Dort drin befinden sich Unterordner für die Zoom-Level und die Einzelgrafiken.
Wenn Sie die HTML-Datei im Browser öffnen, sehen Sie die exportierte Grafik auf einem leeren Layer. Mit den Zoom-Buttons oben links im Fenster oder dem Mausrad können Sie den Maßstab ändern. Bei Benutzung des Mausrads werden meistens mehrere Zoom-Level übersprungen.

In der HTML-Datei sehen Sie, wie einfach das erzeugte Tileset mit Leaflet eingebunden werden kann. Sie können jetzt die erzeugten Ordner mit den Tileset-Grafiken auf Ihren Webserver kopieren und dort von Ihren Webseiten aus nutzen:


Sie können in der HTML-Datei folgenden Eintrag direkt nach der Zeile
var map = L.map...
einfügen, um zusätzlich einen OSM-Layer zu sehen. Der OSM-Layer wird online geladen und ist nicht Teil des Tilesets:
    var baselayer = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {maxZoom: 18,}).addTo(map);
 

Karten selber scannen

Auf dem Weg zu einer digitalen Karte kann es sein, daß Sie eine Landkarte besitzen, die Sie selber einscannen wollen. Das ist stets problematisch, weil sich mehrere Probleme dabei auftun, sobald die Karte größer ist, als Ihr Scanner. Aber auch wenn Sie kleine Karten scannen (mindestens 300 dpi) und dann zusammensetzen wollen, treten Probleme auf.

Ein einfaches Beispiel sind die von mir gescannten Seiten eines Autoatlas für Deutschland. Der Atlas an sich besteht aus Doppelseiten, die auf einen A3-Scanner passen. Allerdings sollen sie anschließend zu einer Deutschlandkarte zusammengesetzt werden. Das klappt aus mehreren Gründen nur suboptimal. Das Hauptproblem ist, daß die Karten nicht etwa entstanden sind, in dem man eine große Karte zerschnitten hat und dann abdruckte, sondern jede Doppelseite wurde einzeln angefertigt. Das bedeutet, daß auf jeder Seite Ungenauigkeiten eingeflossen sind und die Kanten nicht glatt ineinander übergehen. Zudem hat der Verlag eine Unsitte praktiziert, die fast immer bei Kartenwerken angewendet wird: es gibt keine Überlappung zwischen den Karten - vermutlichm um Papier zu sparen. Die einzelnen Kartensegmente habe ich in QGIS georefenrenziert (s. u.) und dann dort zusammenstitchen lassen. Dadurch ergeben sich zwar vor allem an den Blattkanten Verzerrungen, aber so kann eine halbwegs brauchbare Gesamtkarte erzeugt werden.

Anders sieht es aus, wenn Sie eine große Karte scannen wollen, die nicht auf den Scanner paßt. Die meisten werden nur einen DIN A4-Scanner besitzen. Bei Multifunktionsgeräten kann man den Deckel nicht abnehmen, so daß das Handling vor allem von alten Karten schwierig wird. Bei Flachbettscannern kann man den Deckel abnehmen und dann die Karte plan auflegen und mit einem Buch oder ähnlch beschweren, um eine glatten Anpressung zu bekommen. Scanner mit CIS-Sensor liefern so gut wie keine Tiefenschärfe, was bei nicht planem Aufliegen auf der Glasplatte zu Unschärfe führt, weshalb Scanner mit CCD-Sensor besser aber auch teurer sind. Die Karte muß in einzelnen Abschnitten gescannt werden, wobei darauf zu achten ist, daß ausreichend Überlappung verbleibt (optimal: 1/3). Anschließend müssen die Teile in einer Software zusammengesetzt werden. Das ist sehr aufwendig und fehleranfällig und führt nie zu einem optimalen Ergebnis. Es lohnt sich, die Karte in einem Copyshop auf einem Großformat-/Durchzug-Scanner einlesen zu lassen (bis etwa 120 cm Breite). Ist die Karte nicht zu empfindlich und beschädigt, geht das recht gut und kostet etwa 30-60 Euro. Die Geräte liefern allerdings meistens nur 200 dpi. Dafür erspart man sich extrem viel Arbeit. Für empfindliche oder noch größere Karten bieten sich spezille Repro-Dienste an, bei denen die Karte plan auf einen Vakuumtisch gelegt wird. Der Service kostet dann allerdings etwa 160 Euro.

Hat man einzelne Teile, die man zusammensetzen muss, benötigt man viel Geduld und extrem viel Speicherplatz. Die Karte von Berlin bestand aus 16 Dateien (was zu wenig ist, weil nur wenig Überlappung teilweise vorhanden war) mit insgesamt 3,3 GB. Ich gehe nicht im Detail auf die Schritte ein. Zuerst werden die Scans am Rand beschnitten, damit scharfe Außenkanten entstehen. Die einzelnen Dateien dürfen nicht farbkorrigiert werden o. ä., da die Algorithmen jede Datei einzeln betrachten und dann ein Flickenteppich aus unterschiedlichen Farboptimierungen etc. entsteht. Anschließend benötigt man eine Software, die die Bilder zusammensetzt - man nennt das stitching. Dabei werden die Bilder gedreht und verschoben. Wenn es sich um plane Scans handelt, ist ein Verzerren nicht erforderlich - anders sieht es aus, wenn eine Optik die Scans verzerrt hat. Die Software Hugin wird allgemein als empfehlenswert angesehen. Allerdings ist das Programm nicht einfach zu bedienen und man muß ziemlich experimentieren. Wichtig ist, daß man die Projektion Gradlinig (Rectilinear) benutzt. Die Bilder werden geladen und man setzt (möglichst viele, mindestens etwa zehn) Kontrollpunkte in benachbarten Bildsegmenten. Damit wird angezeigt, wo sich die Bilder überlappen. Hugin bietet hier ein hilfreiches Werkzeug, daß die Punkte semiautomatisch findet: Man klickt in dem einen Bild auf einen Punkt und im anderen Bild dann nur in die Nähe - die Software versucht den richtigen Punkt selbst zu finden, was fast immer gut gelingt. Das Ergebnis überzeugte mich auch nach Stunden nicht.
Dann entdeckte ich Image Composite Editor (ICE) von Microsoft. Das Tool macht alles automatisch und nach wenigen Versuchen hatte ich in einer halben Stunde das bisher beste Ergebnis.
Auch wenn TIFF als Grafikformat einige Probleme bereitet und unschön ist, sollte man bei GIS-Anwendungen damit arbeiten (unkomprimiert), da die meisten Programme damit am besten und schnellsten arbeiten.

Möchte man das Ergebnis noch nachträglich bearbeiten (Farbkorrekturen, Transparenz), braucht man ein Grafikprogramm, daß mit so großen Dateien (im Fall von Berlin 1920 ca. 2,5 GB) umgehen kann. Man sollte vor allem den Rand beschneiden und transparent oder auf eine separate Farbe setzen, damit man später bei der Georeferenzierung eine saubere Außenkante bekommt und die Karte als Overlay zu einer anderen Karte (wenn die Karte über einer anderen Karte liegt und die untere Karte - beispielsweise OSM als Weltkarte - nur teilweise abgedeckt wird) gut aussieht. Das einzige Programm, welches so etwas kann scheint GNU Image Manipulation Program (GIMP) zu sein. Die meisten Anwender mögen GIMP nicht - ich auch nicht. Es ist kompliziert, ungewohnt, stürzt oft ab und überhaupt… Um die 2,5 GB farblich zu korrigieren, sollte man erst mit einer kleinen Kopie der Datei, in der man die Bildgröße extrem reduziert hat, die Werte ausprobieren. Auch wenn man in GIMP einstellt, es soll die temporären Dateien nicht auf C:\ ablegen, wird es dennoch gemacht. Es wird locker da zwanzigfache (50 GB!) an Speicherplatz temporär benötigt.

Georeferenzierung und Begradigung von Karten

Grundsätzlich gibt es für Landkarten fast unendlich viele Projektionsarten. Aufgabe ist es immer, eine etwa kugelförmige Oberfläche auf einer planen Ebene (Papier) abzubilden. Als wenn man versuchen würde, eine Orange zu schälen und flach auszubreiten. Für viele Anwendungen hat sich die Mercator-Projektion etabliert. Google Maps hat seinerzeit eine leicht abgewandelte Form eingeführt: Web-Mercator.
Neben der Darstellung gibt es auch noch verschiedene geodätische Referenzsysteme und Koordinatenreferenzsysteme (engl.: coordinate reference system, CRS). Das Problem ist (neben der nicht wirklichen Kugelform der Erde), daß früher jedes Land meinte, es sei das wichtigste und deshalb müsse in ihm mit irgendeiner Zählung von Koordinaten angefangen werden. Paris war lange Zeit der Mittelpunkt der Erde oder Greenwich. Die European Petroleum Survey Group Geodesy hat einen Zahlencode (EPSG-Code) eingeführt, mit dem man dieses Chaos immerhin strukturieren kann. Heute benutzt man meistens WGS 84 (EPSG:4326). Weil Google mit seinem etwas verzerrten Web-Mercator einen quasi Standard definierte, arbeiten im Prinzip alle Webanwendungen mit WGS 84/Pseudo-Mercator (EPSG:3857).

Wenn wir nun eine (alte) Karte verwenden wollen, muß dessen Kartensystem in das EPSG:3857 konvertiert werden. Die unvermeidbaren Verzerrungen jeder Darstellung werden dabei neu verzerrt und die Karteninhalte werden verschoben. Als Georeferenzierung bezeichnet man dabei den Vorgang, die eingezeichneten Orte mit neuen Koordinaten zu versehen. Verknüpft man genügend Punkte einer alten Karte mit einer neuen Karte, die das Ziel-Refernzsystem nutzt, dann kann ein Algorithmus alle Zwischenpunkte der Karte mathematisch verschieben, was als Begradigung (engl: rectified) bezeichnet wird. Die Ausgangskarte wird dabei (je nach Unterschied zwischen den Referenzsystemen) teilweise stark verzerrt. Je mehr Stützpunkte man anlegt (also Orte vom alten System im Zielsystem referenziert), desto genauer kann die Neuberechnung erfolgen. Für die meisten Algorithmen genügen drei Punkte als Mindestanforderung.

Ein weiteres Problem bei alten Karten ist immer die Genauigkeit. Dank GPS und genauer Vermessungestechnik und Rechenmodelle erreichen wir heutzutage eine viel bessere Abbildungsqualität als noch vor 100 Jahren. Karten dienten oft nur der Orientierung und unterlagen oft genug auch ästhetischen Wünschen und nicht zuletzt politischen Verfälschungen. Wenn wir also eine alte Karte georeferenzieren, wird es immer vorkommen, daß sie nicht deckungsgleich auf eine moderne Karte transferiert werden kann. Ganz im Gegenteil sogar: die meisten Orte und vor allem Straßen, Schienen, Küstenlinien und Flüsse werden abweichen. Natürlich könnte man das kompensieren, in dem man extrem viele Georeferenzen einbaut. Aber dadurch wird weder die alte Karte genauer, noch bringt es einen praktischen Vorteil. Zumal sich viele kartografierten Elemente auch im zeitlichen Verlauf schlichtweg verlagert haben. Flüsse und Küstenlinien wurden begradigt, Straßen wurden abgerissen und neu gebaut usw.

GDAL-Georeferenzierung

Zuerst muß die Georeferenzierung installiert werden: Erweiterungen/Erweiterungen verwalten und installieren. Im Bereich Alle nach "gdal" suchen und GDAL-Georeferenzierung aktivieren und den Dialog schließen. Im Menü Raster gibt es jetzt den Menüpunkt Georeferenzierung. Zusätzlich brauchen Sie die Möglichkeit, die Orte in der historischen Karte einer aktuellen Position/Karte zuzuordnen. Über den eben genutzten Dialog zur Installation von Erweiterungen fügen Sie deshalb noch das OpenLayers Plugin hinzu. Ebenfalls praktisch kann ein Koordinatengitter sein.
Grid, Koordinatengitter Wenn in der historischen Karte ein Gitter eingezeichnet wurde, läßt sich darüber eine sehr präzise Ausrichtung erreichen. Dazu müssen Sie noch das Plugin MMQGIS über Erweiterungen/Erweiterungen verwalten und installieren suchen und installieren. Anschließend können Sie ein Layer mit dem Gitter erzeugen: MMQGIS/Create/Create Grid Layer. Wählen Sie bei Units Degrees und geben Sie einen Wert für X und Y Spacing an, der zum Abstand des Gitternetzes in der historischen Karte paßt (beispielsweise "0.1"), wählen Sie Whole World bei Extent und geben Sie unbedingt einen eigenen Pfad und Dateinamen bei Output Shapefile vor, weil sonst der Layer im Windows Startmenü angelegt wird.

Beginnen Sie ein neues Kartenprojekt und fügen Sie mit dem Menüpunkt Web/OpenLayers plugin/OpenStreetMap/OpenStreetMap eine neue Ebene hinzu, auf der die OSM-Karte gezeigt wird. Hierfür ist eine online-Verbindung erforderlich.

Continental Atlas für Kraftfahrer, Berlin Als Beispiel dient ein Kartenausschnitt von Berlin. Im ersten Schritt ist es ggf. erforderlich, die Karte passend zuzuschneiden. Mit einer beliebigen Grafiksoftware schneiden Sie die Ränder ab, so daß ausschließlich die reine Karte übrig bleibt. Wenn die Karte nicht quadratisch ausgeschnitten werden kann, ist es kein Problem, wenn ein Rand verbleibt. Dieser muß aber einfarbig sein und die Farbe darf nicht in der Karte vorkommen. Dann ist es möglich, diese Farbe später in QGIS transparent zu stellen.

Öffnen Sie die Georeferenzierung: Raster/Georeferenzierung. Im neuen Fenster laden Sie die Karte über Datei/Raster öffnen. Es erscheint ein Dialog, in dem Sie aufgefordert werden, das Koordinatenbezugssystem für die Karte zu wählen. Da die Karte noch nicht ausgerichtet wurde, ist es egal, was Sie wählen. Nutzen Sie einfach WGS84.

Georeferenzierung Sie sehen jetzt in dem einen Fenster die historische Karte und in QGIS die OpenStreetMap. Die Aufgabe ist es nun, auf der historischen Karte Punkte zu markieren und die äquivalenten Orte in der modernen OSM-Karte zu wählen. Für eine einfache Ausrichtung sind drei Punkte erforderlich. Je mehr Punkte Sie markieren, desto passender wird die Karte ausgerichtet und ggf. verzerrt. Wählen Sie möglichst Punkte, die klein sind und sich nicht im Laufe der Jahre verändert haben. Bei Stadtplänen sind markante Gebäude oder Straßenkreuzungen gut geeignet. Bei der recht groben Beispielskarte eignen sich die Zentren kleiner Städte. Mit dem Scrollrad der Maus können Sie hinein und hinaus zoomen. Bei gedrücktem Scrollrad verschieben Sie den Ausschnitt.
Wählen Sie ggf. Bearbeiten/Punkt hinzufügen bzw. klicken Sie auf das passende Symbol in der Symbolleiste. Klicken Sie auf einen Punkt in der historischen Karte, um diesen zu Georeferenzieren. Gibt es ein Koordinatennetz und Sie haben wie oben beschrieben, das Plugin installiert, wählen Sie einen Schnittpunkt zweier Gitterlinien. Es öffnet sich ein Dialogfenster, in dem Sie die Koordinaten eingeben könnten. Da Sie diese nicht kennen werden, klicken Sie auf Aus Kartenansicht. Jetzt können Sie in der OSM-Karte im QGIS-Fenster den passenden Punkt (Ort oder Gitterpunkt) suchen und anklicken. Die Koordinaten werden dadurch im Dialog eingetragen und Sie übernehmen die Werte mit OK. In beiden Karten wird ein roter Punkt angezeigt. Möchten Sie den Punkt löschen, wählen Sie Bearbeiten/Punkt löschen und klicken den roten Punkt an. Aktivieren Sie Bearbeiten/Passpunkt verschieben, können Sie den Punkt in beiden Karten verschieben. Wählen Sie ggf. wieder Bearbeiten/Punkt hinzufügen und markieren Sie weitere Orte.

Transformationseinstellungen Haben Sie genügend Punkte eingefügt, können Sie die Ausrichtung starten: Datei/Georeferenzierung starten. Ein Hinweis erscheint - OK. Sie können zwischen verschiedenen Transformationstypen wählen. Je nach Typ dauert der Vorgang länger oder mehr Punkte werden benötigt. Die Ergebnisse sind unterschiedlich gut und es muß in der Regel ausprobiert werden, welcher Typ sich für das Projekt am Besten eignet. Linear verschiebt die Punkte nach einem recht einfachen System. Thin Plate Spline eignet sich meistens gut für topografische Karten. Mit den Vorgaben bei Abtastmethode kann man ebenfalls experimentieren - Linear ist oft geeignet. Als Ziel-KBS wählen Sie unbedingt EPGS:3857-WGS 84/Pseudo-Mercator, damit die Karte auf die OSM-Karte paßt. Aktivieren Sie Falls nötig 0 für Transparenz verwenden und Wenn fertig in QGIS laden.
Nachdem Sie die Transformationseinstellungen vorgenommen haben, wählen Sie erneut Datei/Georeferenzierung starten, um den Vorgang wirklich zu starten. Die Fortschrittanzeige informiert Sie über den Vorgang und anschließend wird die Karte im QGIS-Projekt als neue Ebene gezeigt.


QGIS nach Georeferenzierung Die Reihenfolge der Ebenen bestimmt, welche Ebene eine andere verdeckt und kann einfach durch verschieben im Bereich Layer (Ansicht/Bedienfelder/Layer) verändert werden. Im Andock-Fenster Layergestaltung (Ansicht/Bedienfelder/Layergestaltung) können Sie die Darstellung des derzeit ausgewählten Layers verändern. In der Rubrik Transparenz können Sie die Deckkraft für die Ebene ändern, um so beispielsweise besser erkennen zu können, wie gut die Georeferenzierung paßt.
Sind Sie mit dem Ergebnis nicht zufrieden, löschen Sie den Layer und verschieben die Punkte im Fenster der Georeferenzierung oder auf der OSM-Karte bzw. fügen weitere hinzu. Anschließend starten Sie eine neue Transformation. Im Fenster Georeferenzierung können Sie die Punkte speichern und laden (Datei/QCP-Punkte …), um sie später erneut zu nutzen. Zu beachten ist, daß bei der Georeferenzierung eine TIF-Datei im gleichen Ordner wie die Ausgangsdatei erzeugt wird, die in QGIS für das Layer benutzt wird. Diese Datei darf also später nicht gelöscht werden. Die TIF-Datei ist georeferenziert und kann jederzeit auch apäter in QGIS als Layer geladen werden.

Tilesets downloaden

URL einer Grafik Wenn Sie eine Webseite finden, auf der eine Karte (oder ein anderes Bild) in Form von Tilesets abgespeichert ist und Sie wollen sämtliche Teile herunterladen, um sie selber zu benutzen oder sie zu einem Gesamtbild zusammenzusetzen (beachten Sie aber ggf. die Urheber- und Nutzungsrechte), dann ist das ebenfalls möglich.

Zuersteinmal schauen Sie sich die Webseite in maximaler Zoomstufe an. Drücken Sie <F12>, um die Werkzeuge und den Inspektor im Browser zu öffnen. Wählen Sie die Funktion Element der Seite auswählen (Symbol ganz links mit dem Pfeil) und klicken Sie auf die Teile der Grafik. Im Inspektor wird u. a. die URL des Teils angezeigt. Sie müssen die Adresse der oberen linken und unteren rechten Ecke ermitteln. Die Bilddateinamen werden sich durch unterschiedliche Unterordner und Namen unterscheiden.
Im Beispiel variiert der letzte Ordnername ("TileGroup[n]") und der Dateiname an zwei Stellen: "7-[col]-[row].jpg".

Mit einem kleinen Unix-bash-Script werden jetzt die Dateien automatisiert herunter geladen:
#!/bin/bash
for x in {0..16}
do
  for i in {0..20}
  do
    for u in {0..50}
    do
      wget https:.../TileGroup$x/pic5-$i-$u.jpg 
    done
  done
done
Im Script muß natürlich die komplette URL zu den Bildern angegeben werden. Die drei Laufvariablen x, i, u müssen Sie entsprechend an den jeweiligen Dateinamen und Ordnernamen etc. anpassen. Eventuell benötigen Sie weniger oder mehr Schleifen. Das Shellscript wird gestartet und versucht dann per brute-force alle Kombinationen aus den Dateinamen und Ordnern durchzulaufen und die Dateien zu speichern. Die meisten Dateien werden gar nicht vorhanden sein aber das stört nicht. Alle vorhandenen Dateien landen im aktuellen Ordner. Die wget-Method eist ziemlich brachial und erzeugt entsprechend viele Anfragen an den Server.
Bspw.:
TileGroup0/pic5-0-0.jpg
TileGroup0/pic5-0-1.jpg
TileGroup0/pic5-0-2.jpg
...
TileGroup0/pic5-1-0.jpg
TileGroup0/pic5-1-1.jpg
...
TileGroup1/pic5-0-0.jpg
...
TileGroup16/pic5-20-50.jpg

Nachdem alle Teilbilder vorhanden sind, müssen diese zu einem Gesamtbild kombiniert werden. Dazu eignet sich ImageKlebor (Anbieter offline aber es gibt genügend Downloads). Die Bilder ggf. in einen separaten Ordner kopieren, in dem sich dann ausschließlich die Grafikteile befinden. Nach der Installation steht ein GUI zur Verfügung, das aber bei mehr als etwa 50 Teilen versagt. In der Eingabeaufforderung verrichtet das Programm aber gut und schnell seine Aufgabe. Dazu die MS-DOS-Konsole ("cmd") öffnen und mit dem Befehl
iklebor -sources pic5-{col}-{row}.jpg -out big.png
den Prozeß starten (ggf. Pfade angeben). Das Programm sucht automatisch im Ordner alle Dateien und ermittelt den Wertebereich für die Variablen {col} und {row}. Die Dateien werden dann zu einem neuen Bild zusammen gefügt, was mehrere Minuten dauern kann.