Risposte:
In R
, utilizzare crop
per estrarre i valori e ( ad esempio ) table
per contarli.
Ad esempio, creiamo una griglia di 1 grado che copre il globo:
library(raster)
x.raster <- raster(outer(179:0, 0:359, `+`), xmn=-180, xmx=180, ymn=-90, ymx=90)
Il rettangolo di selezione viene convertito in un extent
oggetto per utilizzare crop
:
y.extent <- extent(cbind(c(-125,20), c(-60,50)))
y.raster <- crop(x.raster, y.extent)
Fatto ciò, la tabulazione è semplice:
table(getValues(y.raster))
In questo output la prima riga elenca i valori e la seconda elenca i conteggi corrispondenti:
165 166 167 ... 257 258
1 2 3 ... 2 1
Come controllo possiamo tracciare il raster e l'estensione:
plot(x.raster)
plot(y.extent, add=T)
Un'aggiunta minore: è possibile utilizzare anche la funzione (sicura per la memoria) "freq":
A seguito della risposta di whuber:
library(raster)
x.raster <- raster(outer(179:0, 0:359, '+'), xmn=-180, xmx=180, ymn=-90, ymx=90)
y.extent <- extent(cbind(c(-125,20), c(-60,50)))
y.raster <- crop(x.raster, y.extent)
Ma ora fai:
freq(y.raster)
È importante solo per oggetti molto grandi (raster su file). 'freq' restituisce una matrice a due colonne (valore / conteggio) mentre 'tabella' restituisce una tabella.
crop
operazione per una griglia di un minuto che copre la terra: ha 10800 file e 21600 colonne (233.280.000 celle). Il raccolto è stato eseguito nel tempo totale trascorso di 1,36 secondi.
v <- extract(x.raster, y.extent)
seguito da table(v)
extract
? Non fa parte di raster
e il R
sistema di aiuto ( ??
) non trova alcuna funzione con questo nome.