DE:OSM2World

From OpenStreetMap Wiki
Jump to navigation Jump to search
OSM2World
OSM2World 0.2.0 Shader KIT.png
Autor: Tobias Knerr und andere Mitwirkende
Lizenz: GNU Lesser General Public License (kostenlos)
Plattformen: Windows, Linux und macOS
Version: 0.2.0 (2019-06-23)
Sprache: Deutsch
Webseite: http://osm2world.org
Quellcode: https://github.com/tordanik/OSM2World
Programmiersprache: Java

Erstellt aus OSM-Daten ein 3D Modell der Welt.

OSM2World (osm2world.org) ist ein Programm, das anhand von OpenStreetMap-Daten ein 3D Modell der Erde erstellt. Das Modell kann in verschiedenen Formaten exportiert werden.

Exportformate

Im Moment werden Wavefront .obj Dateien, .pov Dateien für den POVRay Ray-Tracer, die direkte Ausgabe über JOGL und .png Bilder die über die Ausgabe von JOGL erstellt wurden unterstützt. Zusätzliche Formate können nach Bedarf hinzugefügt werden.

Verwendung von OSM2World

POVRay Rendering von OSM2World Szenerie

Installation

OSM2World benötigt eine Java-Laufzeitumgebung (JRE) in Version 1.6 oder höher. Bei der Verwendung von JOSM ist dies wahrscheinlich schon vorhanden.

Sobald du Java fertig eingerichtet hast, gehe zu osm2world.org/download, lade das Zip-Archiv mit dem Programm herunter und entpacke es auf deinem Computer.

Benutzeroberfläche

Führe OSM2World von der Kommandozeile aus, indem du den für dein System passenden Starter bzw. das passende Skript ausführst. Dies erlaubt dir, Dateien die OSM-Daten enthalten zu öffnen und durch die Modelle zu navigieren.

  • die linke Maustaste verschiebt die Kameraposition
  • die rechte Maustaste rotiert die Blickrichtung der Kamera
  • das Mausrad zoomt näher heran oder weiter weg

Alternativ ist die Steuerung über die Tastatur möglich. Zur Fehlerbehebung können verschiedene Ebenen eingeblendet werden, man kann in die Formate .png, .pov und .obj exportieren. Bitte beachte dass die Darstellung eine schlechtere Qualität hat und ggf. rechenintensiv ist - sie dient hauptsächlich zur Fehlerbehebung.

Bedienung über die Kommandozeile

Dies ist eine kurze Dokumentation der Bedienung von OSM2World über die Kommandozeile. Habe bitte Verständnis dafür, dass die Syntax der Befehle sich in der Zukunft wahrscheinlich noch ändern wird.

Eingabe und Ausgabe

Resultat einer Ausgabe als PNG Beispiel
  • -i/--input <file> .osm, .osm.gz, .osm.bz2 oder .osm.pbf Eingabe Datei
  • -o/--output <file> ... eine oder mehrere Ausgabe Dateien. Die Dateinamen-Erweiterung bestimmt das Format der ausgegebenen Datei, möglich sind .obj, .pov und .png.
  • --resolution <horiz_res>,<vert_res> Größe in Pixel für die Ausgabe in einer bestimmten Auflösung (nur als .png).

Kamera

Das Festlegen einer Kamera und Projektionsart ist für das Erzeugen von .png-Ausgaben zwingend nötig, für .pov-Dateien ist dies optional (aber dennoch empfohlen). Du kannst entweder eine senkrechte oder perspektivische Projektion verwenden. Von dieser Wahl hängen die verfügbaren Parameter bei der Definition einer Kamera ab.

Senkrechte Projektion:

  • --oview.angle <angle_deg> Kippwinkel der Ansicht in Grad (Standard 30°, nur Winkel zwischen 0° und 90° möglich)
  • --oview.from <N/E/S/W> Himmelsrichtung aus der die Ansicht erzeugt wird, Standard ist Süden (S)
  • es gibt zwei Alternativen bei der Festlegung der Grenzen des Rechtecks (in der Ebene mit der Höhe 0), das auf die Ansichts-Ebene projiziert wird:
    • --oview.bbox <lat>,<lon> <lat>,<lon> ... Liste der Koordinaten, das Rechteck wird so klein gewählt, das gerade alle angegebenen Koordinaten enthalten sind
    • --oview.tiles <zoom>,<tileX>,<tileY> ... eine oder mehrere Kacheln (festlegen über Zoomstufe und x/y-Koordinate), das Rechteck wird so klein gewählt, das gerade alle angegebenen Kacheln enthalten sind

Perspektivische Projektion:

  • --pview.pos <lat>,<lon>,<ele> Kamera-Position für die perspektivische Anzeige
  • --pview.lookAt <lat>,<lon>,<ele> Blickrichtung für die perspektivische Anzeige
  • --pview.aspect <value> Verhältnis (Breite/ Höhe) für die perspektivische anzeige, Standard ist das Seitenverhältnis der gewählten Auflösung
  • --pview.fovy <angle_deg> Blickwinkel in vertikaler Richtung in Grad, Standard sind 45°

Protokollierung

  • --performancePrint zeigt nach jedem Abschnitt der Berechnung die benötigte Zeit in der Konsole an
  • --performanceTable <file> fügt die für die Berechnung benötigten Zeiten einer Datei hinzu (formatiert als Tabelle im Plain-Text Format )

Andere Parameter

Beispiel eines alternativen Farbschemas bei Verwendung von --config
  • --config <file> Konfigurationsdatei mit zusätzlichen Optionen (siehe OSM2World/Configuration file). Kann sowohl bei Benutzung der grafischen Oberfläche als auch über die Konsole verwendet werden
  • --gui startet die Benutzeroberfläche
  • --help zeigt eine kurze Beschreibung der verfügbaren Kommandozeilen-Optionen an
  • --version zeigt die verwendete Version von OSM2World an

Bei Verwendung von --gui, --help oder --version, wird OSM2World keine Berechnung durchführen sondern nur den einzelnen Befehl ausführen.

Konfigurationsdatei

  • --parameterFile <file> eine Datei, die pro Zeile eine Reihe von Optionen enthält

Falls du mehrere Berechnungen durchfüühren möchtest, kannst du die Parameter (ohne den Programmbefehl) in eine Datei schreiben und diese als Argument an OSM2World übergeben. Zeilen die mit # beginnen werden ignoriert.

Der Hauptvorteil liegt darin, dass Berechnungen in Gruppen durchgeführt werden wenn sie z.B. die gleichen --input und --config Optionen besitzen. So kann beispielsweise der selbe Datensatz schnell aus verschiedenen Blickwinkeln gerendert werden.

Beispiele

 ./osm2world -i example.osm -o image.png --pview.pos +50.2607,+10.965,+110.0 --pview.lookAt 50.2623367,10.9640632,0

Speichert ein von example.osm erzeugtes 3D-Modell als image.png. Das Rendering verwendet eine perspektivische Projektion mit den angegebenen Koordinaten für Kameraposition und Blickrichtung.

 ./osm2world -i example.osm -o tileexample.pov 

Erzeugt ein 3D-Modell von example.osm und exportiert es als example.pov. Die POVRay-Datei enthält keine Angabe der Kamera, daher muss diese manuell festgelegt werden bevor man example.pov an POVRay übergeben kann.

 ./osm2world -i example.osm -o tileexample.pov --oview.tiles 12,2186,1312 12,2186,1313

Erzeugt ein 3D-Modell von example.osm und speichert es als tileexample.pov. Die POVRay-Datei enthält alle nötigen Angaben über die Kamera die für eine senkrechte Projektion nötig sind. Das erzeugte Bild wird sich auf die kleinstmögliche Fläche beschränken, die die zwei Kacheln 2186,1312 und 2186,1313 (beide auf Zoomstufe 12) enthält. Die Kamera schaut aus Richtung Süden auf das Bild. Kein --oview.angle Parameter wurde übergeben, daher wird der Standardwert von 30° verwendet. Dieser Blickwinkel ist besonders interessant, da hierbei zwei "normale" Kacheln so abgebildet werden, das sie genau als eine rechtwinklige Kachel dargestellt werden (da sin(30°)=0.5).

Java-Library Schnittstelle

OSM2World kann als Java-Bibliothek verwendet werden. Die bevorzugte Methode ist die Verwendung der ConversionFacade Klasse (en: class), die die ganze Konvertierung in einen Aufruf (en: method call) hüllt. Damit können Eingabedaten bereitgestellt und Ausgabeziele festgelegt werden. Ebenso kann ausgewählt werden, welche Arten von Welt-Objekten erstellt werden sollen, und Feinabstimmungsparameter zur Verfügung gestellt werden - oder natürlich einfach Standardeinstellungen. Werfe dazu einen Blick auf javadoc.

Brauchst du noch mehr Funktionen, verstehst den Code nicht, etc., dann frage einfach!

Pläne und Einschränkungen

OSM2World Rendering erschienen auf der Hauptseite im November 2011

Höhendaten

Die Berechnung von Höhendaten in OSM2World ist zum aktuellen Zeitpunkt sehr instabil und standardmäßig deaktiviert, ist als experimentelle Option aber vorhanden. Die Berechnung soll Attribute (wie beispielsweise incline=*, layer=*, tunnel=* und bridge=*) und absolute Höhendaten (ele=*, entweder direkt von OSM oder von externen Quellen (SRTM oder OpenDEM) verwenden.

Problembehebung

  • Es wird empfohlen nur kleine Kartenausschnitte zu verwenden, speziell bei Verwendung der Benutzeroberfläche. OSM2World verwendet aktuell noch stellenweise ineffiziente Algorithmen zur Berechnung.
  • Falls OSM2World der RAM ausgeht, kann man das Start-Skript editieren und den Wert des Parameters -Xmx (maximal von Java nutzbarer Speicher) erhöhen.
  • Bei sonstigen Fragen verwende talk page, die OSM2World mailing list oder nimm an den relevanten Diskussionen in anderen Foren oder Mailing-Listen teil. Du kannst auch direkt User:Tordanik kontaktieren.

Links und Quellen

Impressionen vom isometrischen OSM2World slippymap

Projektseiten

Dokumentation

Anwendungsbeispiele und tagging