2017-10-15 13 views
0

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) 
+0

Siehe auch: https://github.com/oscarperpinan/rastervis/issues/26#issuecomment-335011814 – Matifou

Antwort

2

ich changes in the code begangen haben, um dieses Problem zu lösen. Bitte versuchen Sie die Entwicklungsversion des Pakets:

## install.packages('remotes') 
remotes::install_github('oscarperpinan/rasterVis') 
+0

Danke, es hat funktioniert viel besser. Eine letzte Beobachtung: Die Legende der Handlung ist so, dass die ersten Werte der Legende die letzten Werte sind, die in "rat_sm $ landcover" zugewiesen sind (d. H. Ihre Anzeige ist immer noch umgekehrt von dem Vektor "rat_sm $ landcover") – pdx

Verwandte Themen