2016-03-16 13 views
7

Devo calcolare il davanzale, l'intervallo e il nugget da un livello raster. Ho esplorato pacchetti gstat, usdm, dove è possibile creare variogrammi, tuttavia non ho trovato una funzione che a un livello raster valuterà questi parametri. Nella maggior parte delle funzioni questi parametri devono essere definiti ad es. krigging.R: Calcola soglie, intervallo e nugget da un oggetto raster

Ho strati di dati raster per differenti altezze che è simile al enter image description here

desidero ottenere il davanzale, nugget e vanno dai parametri semivariogramma montati questi strati di dati per creare un grafico simile a questo: enter image description here

I livelli dati originali sono disponibili here come tiff multi-banda. Ecco una figura dal documento this che illustra ulteriormente il concetto.

enter image description here

+0

Si prega di fornire un esempio. Gstat funziona con i punti spaziali se vuoi lavorare con le griglie puoi leggerli come frame di dati spaziali gird o puoi anche usare la funzione interpolate nel pacchetto raster. pacchetto raster fornisce diversi esempi. –

+0

Ho modificato la mia domanda per aggiungere ulteriori dettagli. – Arihant

+0

Non penso che questo sia un problema di statistica spaziale. Penso che dovresti stimare la semi-varianza attraversare gli strati e tracciarla rispetto ai valori medi di ogni strato. Non sono sicuro se questo può aiutare comunque. –

risposta

1

Questa è solo una supposizione. Ecco come valuto la semi varianza

dove n è il numero di livelli la cui media è inferiore alla media totale. m è la media totale tra tutti i livelli. r è la media di ogni livello che è sceso al di sotto della media totale.

s <- stack("old_gap_.tif") 
m <- cellStats(mean(s), stat="mean", na.rm=T) # 0.5620522 
r <- m[m < 0.5620522] 
sem <- 1/53 * (0.5620522 - r)^2 
plot(sem, r) 
3

Utilizzando gstat, ecco un esempio:

library(raster) 
library(gstat) 
demo(meuse, ask = FALSE, echo = FALSE) 
set.seed(131) # make random numbers reproducible 
# add some noise with .1 variance 
meuse.grid$dist = meuse.grid$dist + rnorm(nrow(meuse.grid), sd=sqrt(.1)) 
r = raster(meuse.grid["dist"]) 
v = variogram(dist~1, as(r, "SpatialPixelsDataFrame")) 

(f = fit.variogram(v, vgm("Sph"))) 
# model  psill range 
# 1 Nug 0.09035948 0.000 
# 2 Sph 0.06709838 1216.737 

f$psill[2] # sill 
# [1] 0.06709838 

f$range[2] # range 
# [1] 1216.737 

f$psill[1] # nugget 
# [1] 0.09035948 

Collegare il proprio raster per r, e dovrebbe funzionare. Modificare lo Sph per adattarlo a un altro modello di variogram, provare con plot(v,f) per verificare la trama.

+0

Grazie Edzer, per qualche motivo ho ricevuto questo errore: Errore in fit.variogram (v, vgm ("Sph")): il modello dovrebbe essere di classe variogramModel (utilizzare vgm) in linea (f = fit.variogram (v, vgm ("Sph"))) – Arihant

+1

Forse aggiorna il tuo pacchetto gstat? Quale versione corri? –

+0

Grazie per l'aiuto, ma quando si utilizza il mio livello raster dall'esempio TIF multibanda allegato alla domanda, ricevo un altro errore. > r = s [[81]] > r classe: Raster banda: 81 (di 99 bande) dimensioni: 49, 50, 2450 (nrow, ncol, ncell) risoluzione : 5, 5 (x, y) estensione: 364284, 364534, 4305537, 4305782 (xmin, xmax, ymin, ymax) coord. rif.: + proj = tmerc + lat_0 = 0 + lon_0 = -75 + k = 0,995999932289124 + x_0 = 500000 + y_0 = 0 + ellps = WGS84 + unità = m + no_defs origine dati: nomi: old_gap_.81 valori: 0,008213255 , 1.000001 (min, max) – Arihant

Problemi correlati