R kullanarak bir şekil dosyası tarafından tanımlanan bir alanın Ortalama Tarama Değeri Nasıl Bulunur?


19

Yıllar içinde belirli bir ayı temsil eden bir dizi tarama görüntülerim var ve şekil dosyası kullanarak bir alanın ortalama değerlerinin zaman çizelgesini yapmak istiyorum.

Değerleri rasterlerden nasıl ayıklayabilir ve bunları kullanabileceğim şekilde R'ye nasıl aktarabilirim?

Yanıtlar:


23

İşte örnek kod. Bu kodu tüm rasterlerinizi işlemek için bir döngüde çalışacak şekilde uyarlamak oldukça basittir. Rasterleriniz ortak bir boyut ve çözünürlük paylaşıyorsa, bir raster yığını oluşturabilir ve yığındaki bantlar arasında döngü yapabilirsiniz. Bir dizindeki tüm rasterleri belirli bir biçimde içeren bir vektör oluşturmak için "list.files" komutunu kullanabilir ve bu vektörü yığmak üzere geçirebilirsiniz.

Misal:

rlist=list.files(getwd(), pattern="img$", full.names=TRUE) 

r <- stack(rlist)   


    # Add required libraries
    require(raster)
    require(sp)
    require(rgdal)

    # Set working directory, raster, in and out shapefiles
    setwd("C:/test")
    inshp="MyPolys"
    outshp="PolyMeans"
    rdata <- "Year2012.img"

    # Read polygon feature class shapefile
    sdata <- readOGR(dsn=getwd(), layer=inshp)

    # Read raster
    r <- raster(rdata)

    # Extract raster values to list object
    r.vals <- extract(r, sdata)

    # Use list apply to calculate mean for each polygon
    r.mean <- lapply(r.vals, FUN=mean)

    # Join mean values to polygon data
    sdata@data <- data.frame(sdata@data, m2012=r.mean)

    # Write results
    writeOGR(sdata, getwd(), outshp, driver="ESRI Shapefile", check_exists=TRUE, 
         overwrite_layer=TRUE)

1
+1 - mükemmel çözüm, iyi düzenlenmiş ve eksiksiz cevap.
Simbamangu

Bir çokgenli dosyam varsa: data.frame(sdata@data, m2012=r.mean)know whch çokgeni hangi değere atayacak?
Stophface

r.mean sdata'ya doğru şekilde eklendiği için önce r.mean: r.mean <- unlist (lapply (r.vals, FUN = mean))
cmbarbu 28:18

6

Şekil dosyasını bir SpatialPolygonsDataFrame( readOGRpaketten işlev rgdal) olarak okuyun

Rasteri bir Rasternesneye okuyun ( rasterpaketten fonksiyon raster)

extract(raster, spdf)Her çokgenin altındaki ızgara hücrelerini almak için kullanın . Sonra meanonlara koş .

Raster görüntü kümenizi tekrarlayın ...


şekil dosyası nasıl yazılır (raster görüntüden çıkarılan değerler ile)?
Stophface
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.