Jak znaleźć średnią wartość rastrową obszaru zdefiniowanego przez plik kształtu za pomocą R?
19
Mam zestaw obrazów rastrowych, które reprezentują konkretny miesiąc na przestrzeni lat i chcę utworzyć oś czasu średnich wartości obszaru za pomocą pliku kształtu.
Jak wyodrębnić wartości z rastrów i zaimportować je w R w sposób, w jaki mogę je wykorzystać?
Oto przykładowy kod. Dostosowanie tego kodu do pracy w pętli do przetwarzania wszystkich rastrów jest dość proste. Jeśli twoje rastry mają wspólny zasięg i rozdzielczość, możesz utworzyć stos rastrowy i zapętlić pasma w stosie. Aby utworzyć wektor zawierający wszystkie rastry w katalogu, w określonym formacie, możesz użyć „list.files”, a następnie przekazać ten wektor do stosu.
Przykład:
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)
data.frame(sdata@data, m2012=r.mean)
wieloboczny : Skąd wiadomo, do którego wielokąta przypisać jaką wartość?Przeczytaj plik shapefile w
SpatialPolygonsDataFrame
(readOGR
funkcja z pakieturgdal
)Wczytaj raster do
Raster
obiektu (raster
funkcja z pakieturaster
)Użyj,
extract(raster, spdf)
aby uzyskać komórki siatki pod każdym wielokątem. Potemmean
na nich biegnij .Powtarzaj na swoim zestawie obrazów rastrowych ...
źródło