Verhinderung reflektierender Oberflächen in rasterVis

10

Ich habe mit digitalen Geländemodelldateien im ESRI ASCII-Raster-Rasterformat experimentiert. Trotz null Erfahrung mit dieser Art von Daten fand ich es sehr einfach, in R zu laden, wie im folgenden Code beschrieben. Die plot3DFunktion aus dem rasterVisPaket ist standardmäßig eine gut aussehende Darstellung, aber das Modell ist ziemlich reflektierend. Da es sich um eine Landschaft handeln soll, ist diese glänzende Oberfläche nicht wirklich geeignet.

Ich suche eine natürlichere, mattere, topologische Darstellung (wenn ein solches Wort für eine 3D-Darstellung einer Reihe von Figuren verwendet werden kann).

glänzend

Ich stelle mir vor, dass es Wege geben muss, aber ich habe keine Erfahrung damit raster, einige Hinweise zu verwenden und zu suchen.

Wie kann ich das Reflexionsvermögen des Diagramms verringern oder entfernen?

library(raster)
library(rgdal)
library(rasterVis)

foo <- raster(readGDAL("my.dtm.asc"))
plot3D(foo)
Langsamer Lerner
quelle

Antworten:

5

Ich habe einige Tests durchgeführt und das ?rgl.materialArgument gefunden specular, das bei der Aufgabe geholfen hat.

Siehe das folgende Beispiel:

library(raster)
library(rasterVis)

r = raster(volcano)

plot3D(r,lit=TRUE,specular="white") #white is default
plot3D(r,lit=TRUE,specular="black") #change specular to black

Geben Sie hier die Bildbeschreibung ein

Andre Silva
quelle
3

Sie müssen Argumente an plot3D übergeben, die die rgl-Anzeigeeigenschaften mithilfe der in "rgl.material" verfügbaren Argumente ändern. Ich würde mit "Glanz" oder "Leuchtdichte" beginnen. Sie würden nur die zugehörigen Argumente rgl.material direkt in plot3D angeben.

plot3D(foo, zfac=2, shininess=10) 
Jeffrey Evans
quelle
2

Ich bin ziemlich neu mit r und dem rasterVis-Paket. Eine Sache, die ich als hilfreich empfunden habe, ist das Durchsuchen verschiedener Farbpaletten, um festzustellen, ob Sie eine finden können, die besser zu dem passt, was Sie suchen (ohne dass Sie versuchen müssen, die Farben so zu ändern, dass sie genau meinen Wünschen entsprechen). Zum Beispiel habe ich versucht:

plot3D(foo, col=terrain.colors(6))

Mit ziemlich anständigen Ergebnissen. Sie können auch mit Paletten aus dem RColorBrewer-Paket experimentieren, von denen einige weniger glänzend zu sein scheinen. z.B:

plot3D(foo, col=brewer.pal(9, 'YlOrRd'))
user27853
quelle