首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算多边形平均值并对其进行映射?

如何计算多边形平均值并对其进行映射?
EN

Stack Overflow用户
提问于 2012-03-30 07:19:38
回答 1查看 759关注 0票数 1

我有这样的数据集(pts):

代码语言:javascript
复制
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)映射到映射中:

代码语言:javascript
复制
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区域的平均值并映射这些平均值?

环境保护局区域可在网页底部找到,网址为:http://www.epa.gov/wed/pages/ecoregions/level_iii_iv.htm

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-30 13:37:57

首先读取shape文件

代码语言:javascript
复制
er <- readOGR("Eco_Level_III_US.shp", "Eco_Level_III_US")

然后确保栅格r和生态区域er具有相同的投影

代码语言:javascript
复制
er.4326 <- spTransform(er, CRS("+init=epsg:4326 +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0"))

从shapefile中提取r个栅格数据(这可能需要几分钟),计算平均值并将其添加到多边形中。

代码语言:javascript
复制
er.v <- extract(r, er.4326)
means <- sapply(er.v, mean)
er.4326$means <- means

最后把它画出来

代码语言:javascript
复制
 spplot(er.4326, "means")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9934988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档