3D-Visualisierung von Geodaten mit R

Steffen Kriewald

3D-Visualisierung - 1487

Konrad von Grünenberg
Beschreibung der Reise von Konstanz nach Jerusalem

3D-Visualisierung - Heute

  • vertikal gestapelte Daten
  • intuitiv / einfach verständlich

R? R!

  • flexible und mächtige Sprache zur (statistischen) Datenanalyse
  • basiert auf der Programmiersprache S (Bell Laboratories in 1976)
  • R: Implementation unter GPL (GNU General Public License) - Open Source!
    • kostenlos
    • quelloffen und erweiterbar
    • aktive Community

Das Schweizer Taschenmesser

R besteht aus einem Grundprogramm mit vielen Zusätzen den sogenannten packages oder Paketen

  • beim Start von R ist nur eine Grundausstattung geladen
  • ein Paket enthält spezielle Funktionen
  • jeder kann sein eigenes Paket schreiben

R als GIS

  • sp: definiert Klassen und Methoden für räumliche Objekte
  • rgdal: Geospatial Data Abstraction Library + PROJ.4

  • raster, rgeos, OpenStreetMap, … Viele mehr …
    https://cran.r-project.org/web/views/Spatial.html

  • limitierte 3D-Visualisierungsmöglichkeiten

    • raster: persp()
    • rasterVis: plot3D()
    • threejs: globejs()

rgl: 3D Visualisierung mit OpenGL

  • OpenGL

    • Open Graphics Library
    • Darstellung komplexer 3D-Szenen in Echtzeit
  • Grundformen (x,y,z, col, …)

    • points3d(); lines3d(); triangles3()
    • surface3d(); persp3d()
  • Darstellung

    • Licht, Fog
    • Transparenz
    • Texture mapping

rgl: Input/Output

  • PLY, OBJ, STL
    • inklusive Texturen
  • writeWebGL()
    • Limitierung auf 65.535 Vertices
    • Begrenzte Userinteraktion: spin3d(); play3d()
  • 2D Bilder
    • snapshot3d()
    • movie3d() = gif
comet <- readOBJ("data/ESA.obj")
shade3d(comet, col="gray")

testgl0snapshot
You must enable Javascript to view this page properly.

http://sci.esa.int/rosetta/54726-comet-67p-shape-model-shap2/

3D SpatialPolygonsDataFrame - shape3d()

  • Koordinaten aus Teilpolygonen extrahieren
  • Höhe / Werte aus Atributtabelle lesen
  • persp3d(xyz-matrix)
berlin <- readOGR("data/Ortsteile.shp", "Ortsteile")
shape3d(berlin, name="Einwohnerd")

3D Rasterdaten - dem3()

dem <- raster("data/pdm_dem.tif")
dem3d(dem, sf=10)
decorate3d()
movie3d( spin3d(rpm = 4), duration = 15 )

texture mapping - load.texture()

testgl3snapshot
You must enable Javascript to view this page properly.

load.texture(dem, zoom, type)
dem3d(dem, zoom, type)

testgl4snapshot
You must enable Javascript to view this page properly.

  • Schnittstelle zum Paket OpenStreetMap
  • OSM, bing, mapquest, stamen, esri, …

texture mapping - raster.to.png()

  • Extent muss gleich sein
  • Auflösung ist egal

Virtueller Globus mit rthreejs

http://bwlewis.github.io/rthreejs/

globejs(img="textures/world.topo.jpg")

Datenglobus

Basiskarte + Stäbchen + Bögen

Moment. Das war zu schnell…
Wie ging das? Wo kriege ich die Funktionen her?

http://www.pik-potsdam.de/~kriewald/gisday/

Vielen Dank für die Aufmerksamkeit!