如何将矩阵转换为栅格文件以及如何计算R中不同区域的平均值

时间:2012-03-29 00:02:32

标签: r

我有一个数据集,

dat<-matrix(seq(1:5290),c(115,46))
  1. 如何将dat转换为包含GIS相关元数据(如地图投影)的栅格文件?
  2. 然后如何使用

    将数据映射到美国地图
    lon <- seq(-124.25,length=115,by=0.5)    
    lat <- seq(26.25,length=46,by=0.5)
    
  3. 如果我想计算每个州的平均值,我该怎么办?或特定地区?

  4. 非常感谢您的反馈。

    d

1 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

library(raster)
library(maps)

dat<-matrix(seq(1:5290),c(115,46))  

创建具有所需范围的栅格

r <- raster(dat)
e <- extent(c(-124.5, -67.25, 26.25, 48.75))
extent(r) <- e

并绘制

plot(r)
map("usa", add=T)

取整个栅格的平均值

mean(getValues(r))

意味着某个地区

r.sub <- crop(r, c(-100, -54, 40, 45))
mean(getValues(r.sub))

从多边形中提取

您需要SpatialPolygonsDataFrame。在这里,我使用readWKT()创建一个虚拟的,但您也可以从readShapePoly()包中读取带有maptools的shapefile。

library(rgeos)
poly <- readWKT("POLYGON((-100 30, -100 31, -70 30, -88 29, -100 30))")
plot(r)
plot(poly, add=T)

并提取均值:

dat <- extract(r, poly)
sapply(dat, mean)