我有这样的数据集(pts):
x <- seq(-124.25,length=115,by=0.5)
y <- seq(26.25,length=46,by=0.5)
z = 1:5290
longlat <- expand.grid(x = x, y = y) # Create an X,Y grid
pts=data.frame(longlat,z)
names(pts) <- c( "x","y","data")
我知道我可以通过执行以下操作将数据框(pts)映射到地图中:
library(sp)
library(rgdal)
library(raster)
library(maps)
coordinates(pts)=~x+y
proj4string(pts)=CRS("+init=epsg:4326") # set it to long, lat
pts = spTransform(pts,CRS(" +init=epsg:4326 +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0"))
pts <- as(pts, "SpatialPixelsDataFrame")
r = raster(pts)
projection(r) = CRS(" +init=epsg:4326 +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0")
plot(r)
map("usa",add=T)
我的问题是,如何计算10个EPA区域的平均值并绘制平均值?
EPA区域可以在网页的底部找到 http://www.epa.gov/wed/pages/ecoregions/level_iii_iv.htm由于
答案 0 :(得分:2)
首先阅读形状文件
er <- readOGR("Eco_Level_III_US.shp", "Eco_Level_III_US")
然后确保光栅r
和生态区域er
具有相同的投影
er.4326 <- spTransform(er, CRS("+init=epsg:4326 +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0"))
从shapefile中提取r栅格数据(可能需要几分钟),计算平均值并将其添加到您的多边形中。
er.v <- extract(r, er.4326)
means <- sapply(er.v, mean)
er.4326$means <- means
最后绘制它
spplot(er.4326, "means")