DE:JOSM/Plugins/PicLayer

From OpenStreetMap Wiki
Jump to navigation Jump to search

Mit PicLayer können Rasterbilder geladen und ausgerichtet werden, um sie zum Kartografieren zu verwenden. Dies können Luftbilder oder auch eingescannte Karten sein.

Ein GIF zur Nutzung des PicLayers: Piclayer_usage.gif

Piclayer usage.gif


Übersicht

  • Unterstützte Datenformate: PNG, JPEG, GIF
  • Einfache Bildkalibrierung durch Verschieben/Rotieren/Skalieren des Bildes per Mauszeiger
  • Laden und Speichern der Bildkalibrierungsdatei, eine separate Datei mit .cal-Endung

Limitationen

  • Keine Unterstützung von (Geo)TIFF
  • Keine Geo-Referenzierung mittels Referenzpunkten oder Koordinaten (Positionierung lediglich über die Maus)
  • .cal Dateien sind projektionsspezifisch (spezifisch zur aktuell gewählten JOSM Projektion. Wird die JOSM Projektion geändert, so muss die .cal Datei neu gespeichert werden, um sie korrekt laden zu können.)
  • Kein vollwertiges Orthorektifizierungssystem (der Prozess der Entfernung von Effekten der Bildperspektive (Neigung) und des Reliefs (Gelände) zum Zwecke der Erstellung eines planimetrisch korrekten Bildes)[1].

Grundlegende Arbeitsablauf

  1. OSM-Daten laden: Zunächst müssen die OSM-Daten für das interessierende Gebiet heruntergeladen werden.
  2. Bild laden: In diesem Schritt wird das Bild geladen.
  3. Bild kalibrieren: Wenn Kalibrierungsdaten bereits vorliegen, können diese geladen werden. Damit ist das Bild in die OSM-Daten eingepasst. Wenn sie nicht vorliegen, dann jetzt das Bild an die OSM-Daten anpassen.
  4. Kalibrierungsdaten speichern: Wenn Du das Bild selbst kalibriert hast, dann die Kalibrierungsdaten jetzt abspeichern.
  5. Bild nutzen: Jetzt kann das Bild zum Kartografieren der OSM-Daten verwendet werden.

Voraussetzungen

PicLayer ist ein Plugin zu JOSM. JOSM und eine dazu passende Java-Engine muss installiert sein. Luftaufnahmen können nur dann sinnvoll verwendet werden, wenn sie exakt senkrecht aufgenommen sind. Eine perspektivische Entzerrung von Schrägaufnahmen ist nicht möglich.

Installation

Einstellungen Karteikarte Plugins

JOSM starten. Im Menü BearbeitenEinstellungen anklicken. Auf der Seite Einstellungen die Karteikarte für Plugins/Erweiterungen aktivieren. Es werden dann alle verfügbaren Plugins angezeigt. Im Kästchen das Häckchen für PicLayer setzen.

Beim nächsten Start von JOSM wird das Plugin mitgeladen.

Bedienung

  1. Zunächst müssen die OSM-Daten für das interessierende Gebiet heruntergeladen werden. Siehe dazu: mit JOSM Daten vom OSM-Server laden
  2. Über den Menüpunkt Imagery kann das Bild von der Festplatte oder aus der Zwischenablage geladen werden.
  3. Nach dem Laden wird das Bild in JOSM in voller Größe angezeigt und im Ebenenmenü rechts ist eine neue Zeile für das Bild eingefügt. Es muss die entsprechende Ebene aktiviert werden. Sind bereits Kalibrierungsdaten vorhanden, wird diese automatisch geladen
  4. Danach kann das Bild über das Piclayer-Menü (links) verschoben, rotiert oder skaliert werden.

Bild ausrichten

Das eingelesene Bild muss so ausgerichtet und vergrößert werden, dass es in die OSM-Kartendaten passt. Für diesen Einpassvorgang bietet PicLayer drei verschiedene Verfahren. Alle drei Kalibrierverfahren können zum gleichen Ergebnis führen.

Manuelles Kalibrieren

Um Piclayer zu aktivieren, muss die Bildebende aktiviert werden. Anschließend sind die Befehlsknöpfe für den Piclayer in der Bearbeitungsleiste auf der linken Seite nutzbar.

PicLayer-Menü

Man kann

  • das Bild verschieben
  • drehen
  • vergrößern und verkleinern
  • die Breite verändern
  • die Höhe verändern

Dazu den entsprechende Befehlsknopf anklicken und dann bei gedrückter linker Maustase die Maus bewegen. Das exakte Positonieren des Bildes mit diesem Verfahren ist etwas mühselig. Luftbilder müssen exakt senkrecht aufgenommen sein. Die perspektivische Entzerrung bei Schrägaufnahmen kann PicLayer nicht leisten.

Kalibrieren mit Markierpunkten

Zunächst setzt man mit dem "Grüner Pfeil"-Werkzeug aus der Bearbeitungsleiste auf dem auszurichtenden Bild drei Markierpunkte an hervorstechenden Positionen, die auch in den vorhandenen Kartendaten ersichtlich sind. Danach wählt man das "Roter Pfeil"-Werkzeug aus, stellt gegebenenfalls die Transparenz der Ebenen passend um und zieht die drei Markierpunkte an die entsprechenden Positionen in den Kartendaten. Dabei wird das Bild automatisch passend gedreht, geschert und skaliert. Die Markierpunkte sollten möglichst weit voneinander gesetzt werden. Die folgende Animation erklärt dieses Vorgehen: Animation

Automatisches Kalibrieren

AutoCalibrate.png

Die automatische Kalibrierungsfunktion bietet die Möglichkeit, Bilder (vorzugsweise Gebäudepläne) auf der Weltkarte zu positionieren und zu kalibrieren.


Was ist der Unterschied zum Ausrichten mit Buttons?

  • es ist schneller
  • eine höhere Genauigkeit ist gewährleistet
  • durch Informationen über Seitenlängen des Gebäudes kann ein Verzerren des Bildes während dem Kalibrieren ausgeschlossen werden. Oft sind gegebene Außengrundrisse fehlerbehaftet, diese Fehler sollen beim Kalibrieren nicht übernommen werden.

Wie kalibriert die Funktion das Bild?
Diese Funktion legt nicht einfach nur die definierten Markierpunkte Edge point.png auf die angegebenen Referenzpunkte Ref point.png! Nachdem alle nötigen Informationen zusammen getragen wurden, wird der Referenzpunkt 1 als Anker genutzt. Das bedeutet der erste Markierpunkt wird auf den ersten Referenzpunkt gelegt. Anschließend folgt die Berechnung einer Koordinate auf der Linie zwischen Referenzpunkt 1 und Referenzpunkt 2 mit einem vorher angegebenen Abstand. Hier wird der zweite Markierpunkt platziert. Die Linie zwischen den Referenzpunkten 1/2 ist somit der Anker der Platzierung. Der letzte Referenzpunkt wird über die angegebene Distanz und mittels Offset zwischen Markier- und Referenzpunkten ermittelt.

Voraussetzungen zur Nutzung
Benötigt wird

  • ein Bild (vorzugsweise Gebäudeplan)
  • Informationen über Seitenlängen des Gebäudes

Wie funktioniert das?

  1. öffne das Bild und aktiviere den Bild-Layer, sodass auf der linken Seite die PicLayer Buttons erscheinen
  2. wechsele in den "Kalibrierautomatik"-Modus AutoCalibrate.png
  3. fülle die benötigten Informationsfelder aus
    1. Markierpunkte auswählen Edge point.png
    2. Distanzen einfügen - wird ein Textfeld ausgewählt, so erscheint auf der Karte eine grüne Linie, welche den benötigten Abstand visualisiert. Der Abstand ist in Metern anzugeben
    3. wähle die Referenzdatei - öffne eine .osm oder .gpx Datei JOSM-Icon-open.svg mit Koordinaten des Gebäudeumrisses als Referenz oder aktiviere einen Layer JOSM-Icon-layerlist.svg mit OSM Daten
    4. Referenzpunkte auswählen Ref point.png
      1. Modus auswählen - sind die benötigten Referenzpunkte schon im Layer als Punkt hinterlegt, kann der defined / definiert-Modus ausgewählt werden (nur .osm Dateien). Besteht der Layer ggf. aus ungenauen Rohdaten oder sollen die Referenzpunkte beliebig auf den Layer gelegt werden, wähle manual / manuell - Modus
      2. Wähle die Punkte als Referenzpunkte, welche schon in 3.1 als Markierpunkte gesetzt wurden, diesmal nur auf dem Referenzlayer
    5. Ausführen

GIF zur Nutzung des Automatismus: Piclayer_auto_calibration.gif

Piclayer auto calibration.gif


Resultat
Das Bild ist richtig kalibriert, wenn die Position mit den Koordinaten der Referenzpunkte übereinstimmt und die Seitenlängen, d.h. die Abstände zwischen Referenzpunkt 1/2, sowie Referenzpunkt 2/3 mit den anfangs Angegebenen übereinstimmen. Hierbei wird der Referenzpunkt 1 als Anker genutzt (siehe Wie kalibriert die Funktion das Bild?).

Warum werden die Distanzen zum Kalibrieren eines Bildes benötigt?

Mit dem Wissen der Abstände kann sichergestellt werden, dass das Bild nach dem Kalibrieren nicht verzerrt wurde. Setzt man lediglich die Markierpunkte auf die Referenzpunkte werden Ungenauigkeiten der Referenz übernommen. Ungenauigkeiten können z.B. durch Verzerrungen in Luftaufnahmen zu Stande kommen. Zudem bietet eine genaue Kalibrierung die Möglichkeit anschließend eine Korrektur an der Referenz vorzunehmen.

Fehlermeldung
Weicht die Dimension des kalibrierten Bildes übermäßig von den angegebenen Distanzen ab, so wird das Bild zurückgesetzt und eine Fehlermeldung tritt auf.

Speichern der Kalibrierung

Wenn das Bild fertig ausgerichtet ist, dann rechts im Ebenenmenü die Bild-Zeile mit der rechten Maustaste anklicken. Dann öffnet sich dieses Menü:

Kalibrierungsdaten speichern


Damit die Kalibrierungsdaten an einer geeigneten Stelle auf der Festplatte ablegen. Die Kalibrierung kann als .cal-Datei in einem JOSM-spezifischen Format gespeichert oder als ESRI Worldfile exportiert werden.


Anhang

Neues .cal-Dateiformat

Das folgende Beispiel nutzt die UTM35 (oder auch EPSG:32635) Projektion: POSITION_X=28.8652921°E POSITION_Y=60.4985131°N und Bildauflösung~=0.5 m/pix

#JOSM PicLayer plugin calibration data
#Sun Nov 27 22:21:58 CET 2011
POSITION_Y=6708383.375731533
POSITION_X=602463.1049788792
INITIAL_SCALE=673.3630407396365
M12=-714.691403694874
M11=0.508636037014039
M10=6.263463862108147E-5
M02=43.42632371753174
M01=-2.1720970442278513E-4
M00=0.5060984647587284
  • POSITION_X und POSITION_Y: Position der Bildmitte in Welt-Einheiten (Projektions-Spezifisch) — gleich dem alten .cal Format
  • INITIAL_SCALE: Gleich 100 Pixeln in Welt-Einheiten
  • M00, M01, M02 and M10, M11, M12: affine transform coefficients


Mathematischer Hintergrund:


Latex translation-rotation-scale.png


(PX,PY)=POSITION_X/Y, S=INITIAL_SCALE, (x,y)=Pixel Position relativ zum Bildmittelpunkt. (x',y')= Projizierte Koordianten. IGN=ignore. INITIAL_SCALE und POSITION_X, POSITION_Y sind im Grunde überflüssig, da M sie beinhaltet. Siehe auch http://en.wikipedia.org/wiki/File:2D_affine_transformation_matrix.svg.

Beachte:

  • Die in der .cal-Datei gespeicherte Projektion ist spezifisch ist. Sie hängt von der aktuell ausgewählten Projektion im JOSM ab (zu finden unter BearbeitenEinstellungenProjektion)

Altes .cal Dateiformat

Beispiel:

#JOSM PicLayer plugin calibration data
#Mon Nov 15 19:38:35 CET 2010
SCALEX=1.0
SCALEY=1.0
SHEARX=0.0
SHEARY=0.0
INITIAL_SCALE=190.92609423045016
POSITION_Y=292616.03696207993
POSITION_X=490266.6137017577
INITIAL_POS_y=293088.4061731008
INITIAL_POS_X=490909.1888228225
ANGLE=58.77
  • INITIAL_SCALE: Welt-Meter / 100 Pixel zum Zeitpunkt des Ladens
  • SCALE_X/Y: Zusätzliches Skalieren durch den Nutzer
  • SHEAR_X/Y:
  • INITIAL_POS_X/Y:
  • POSITION_X/Y: Position der Bildmitte in Welteinheiten
  • ANGLE: 0 steht für keine Rotation

Skalieren: Die Größe des Bildes in Welt-Metern ist Bildgröße / 100 * INITIAL_SCALE * SCALE_X/Y

Beachte:

  • Die in der .cal-Datei gespeicherte Projektion ist spezifisch ist. Sie hängt von der aktuell ausgewählten Projektion im JOSM ab (zu finden unter BearbeitenEinstellungenProjektion)
  • JOSM stürzt eventuell bei alten .cal-Dateien ab (siehe ticket 6123)

Tipp

  • Mit dem Filtermenu von JOSM können beim Ausrichten störende Objekte wie Zäune, Grenzen usw. ausgeblendet werden.
  • Sehr alte gespeicherte .cal-Dateien sind mit Piclayer nicht einlesbar, sie lassen sich allerdings eventuell nach Eintrag zweier zusätzlichen Zeilen in die cal-Datei laden:
SHEARX=0.0
SHEARY=0.0

Die Proportionen der Grafikdateien stimmen dann zwar, aber die Position ist falsch - u.U. muss in JOSM sehr weit herausgezoomt werden, um die Grafik an ihren Platz verschieben zu können. (siehe auch josm ticket)

Hintergrund: Bei der Berechnung von EPSG:3857 hat JOSM bis Februar 2011 eine falsche Einheit benutzt (Radiantwert statt Meter). Das wurde mit r3922 bereinigt. Allerdings passen dadurch die alten gespeicherten cal-Dateien nicht mehr. Die cal-Dateien auf luftbilder.openstreetmap.de wurden inzwischen migriert. Nach Download der cal-Dateien funktionieren sie mit dem aktuellen JOSM.
Wer die eigenen cal-Dateien migrieren möchte, hier ist ein perl-Skript (danke an Gary68): mult.pl
Es wird ein perl-Interpreter benötigt. Aufruf: perl mult.pl <dateiname>
Ein komplettes Verzeichnis kann unter Unix mit diesem Skript bearbeitet werden: calneu und alternativ: mult.pl.zip