23 votos

¿Cómo encontrar el valor medio de la trama de un área definida por un shapefile utilizando R?

Tengo un conjunto de imágenes raster que representan un mes específico sobre los años, y quiero hacer una cronología de los valores medios de un área con un shapefile.

¿Cómo extraer los valores de las tramas e importarlos en R de manera que puedo utilizarlos?

30voto

Dan Puntos 16

Aquí es código de ejemplo. Es bastante sencillo para adaptar este código en un bucle para procesar todas sus tramas. Si sus tramas comparten un punto común y la resolución puede crear una trama de pila y bucle a través de las bandas en la pila. Para crear un vector que contiene todas las tramas en un directorio en un formato específico, puede utilizar "list.files" y luego pasar este vector a la pila.

Ejemplo:

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)

7voto

Jay Bazuzi Puntos 194

Leer el shapefile en un SpatialPolygonsDataFrame ( readOGR función de paquete de rgdal )

Lea la trama en un Raster objeto ( raster función de paquete de raster )

Uso extract(raster, spdf) para obtener las células de la rejilla debajo de cada polígono. A continuación, ejecute mean en ellos.

Repetir sobre el conjunto de imágenes de trama...

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X