Ich habe eine .tif-Datei neben einer .qml-Datei mit Informationen zur Farbe für jeden Wert erhalten (z. B. Wald ist grün, Wolken sind schwarz).levelplot plottet die falschen kategorischen Farben
library(raster)
library(rasterVis)
sm <- raster("UT_classification_coded.tif")
########## Classify raster/build attribute table
sm <- ratify(sm)
rat_sm <-levels(sm)[[1]]
# Create categories
rat_sm$landcover <- c('Forest', 'Active vegetation', 'Senescent vegetation', 'Disturbed', 'Rice flooded', 'Rice growing', 'Settlement', 'Water', 'Cloud', 'Cloud shadow', 'Forest')
levels(sm) <- rat_sm
##### plot the colours using the .qml file
levelplot(sm, col.regions=c("#00b144", "#00ff00", "#ffc0a0", "#00ebeb", "#86b1ec", "#de57ff", "#ffff00", "#0000ff", "#000000", "#000000", "#008000"), xlab=NULL, ylab=NULL, scales=list(draw=FALSE), maxpixels=6e6)
Das Problem ist, dass levelplot
„glaubt“, dass die Landnutzungskategorien (Forest, Reis usw. überflutet) sind in umgekehrter alphabetischer Reihenfolge, und so sind die Farben. Somit sind die Farben der falschen Kategorie zugeordnet. Zum Beispiel werden die letzten drei Farben ("# 000000", "# 000000", "# 008000") der Vegetation Wasser, Siedlung, Szenerie zugeordnet.
Dankbar für alle Vorschläge zu einer Möglichkeit, dies zu beheben (abgesehen von der Darstellung der Farben in umgekehrter alphabetischer Reihenfolge, was mühsam ist, da die .qml-Datei die Informationen nicht so präsentiert).
EDIT: Hier ist die Beschreibung der TIF-Datei
class : RasterLayer
dimensions : 10981, 10981, 120582361 (nrow, ncol, ncell)
resolution : 10, 10 (x, y)
extent : 299993, 409803, 9190235, 9300045 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=18 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
data source : C:\Users\Documents\UT_classification_coded.tif
names : UT_classification_coded
values : 1, 15 (min, max)
Siehe auch: https://github.com/oscarperpinan/rastervis/issues/26#issuecomment-335011814 – Matifou