Як знайти середнє значення растру для області, визначеної файлом форми за допомогою R?


19

У мене є набір растрових зображень, які представляють конкретний місяць за ці роки, і я хочу скласти часову шкалу середніх значень області за допомогою filefile.

Як я можу отримати значення з растрових даних та імпортувати їх у R таким чином, щоб я міг їх використовувати?

Відповіді:


23

Ось приклад коду. Досить прямо вперед адаптувати цей код для роботи в циклі для обробки всіх ваших растрових файлів. Якщо ваші растри мають загальну міру та роздільну здатність, ви можете створити растровий стек і провести цикл через смуги в стеку. Щоб створити вектор, що містить усі растри в каталозі, у певному форматі ви можете використовувати "list.files", а потім передати цей вектор у стек.

Приклад:

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 - відмінне рішення, добре викладена та повна відповідь.
Simbamangu

Якщо у мене є багатополігональний файл: Як data.frame(sdata@data, m2012=r.mean)знати, якому багатокутнику призначити, яке значення?
Stophface

щоб правильно додати r.mean до sdata, я повинен був спочатку скасувати список r.mean: r.mean <- unlist (lapply (r.vals, FUN = середній))
cmbarbu

6

Прочитайте файл форми SpatialPolygonsDataFrame( readOGRфункція з пакета rgdal)

Прочитайте растр в Rasterоб'єкт ( rasterфункція з пакета raster)

Використовуйте extract(raster, spdf)для отримання комірок сітки під кожним багатокутником. Потім біжи meanпо них.

Повторіть набір растрових зображень ...


як виписати файл форми (зі значеннями, витягнутими з растрового зображення)?
Stophface
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.