2012-03-29 63 views
1

我有數據集(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

甚至讓你的問題之前,有幾個問題與您的代碼。我通過添加一個對'library(raster)'的調用來修復它。然後,如果你想讓'r'包含'z'中的值,在調用'raster(pts)':pts < - as(pts,「SpatialPixelsDataFrame」)之前,還需要添加以下行。 (因爲你沒有這樣做,'plot(r)'目前失敗並顯示錯誤信息)。最後,爲了使其成爲一個易於重現的示例,您還可以添加代碼以創建覆蓋RasterLayer的簡單SpatialPolygon對象。 (否則,人們必須創建一個以幫助你)。 – 2012-03-30 00:17:01

+0

我無法使rgdal與R 2.14.2一起使用。它說有一個名稱空間問題,這表明我搞亂了,或者包沒有更新,而且你使用的是R的舊版本。所以,我可以給出的最好的幫助是我提到的一個問題的鏈接這可能是類似的[(LINK)](http://stackoverflow.com/questions/9441778/improve-centering-county-names-ggplot-maps) – 2012-03-30 00:17:38

+0

@TylerRinker - 我也運行R 2.14.2,上Windows XP以及最新版本的** rgdal **('0.7.8',2012年1月18日發佈),並且工作順利。出於好奇,你在Windows上還是其他的東西? – 2012-03-30 00:25:13

回答

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")) 

提取從shape文件將R柵格數據(即可能需要幾分鐘時間),計算平均值並將其添加到您的polyongs。

er.v <- extract(r, er.4326) 
means <- sapply(er.v, mean) 
er.4326$means <- means 

最後繪製它

spplot(er.4326, "means") 
+0

太棒了。如何爲每個區域提供與原始地圖上顯示的圖例相對應的圖例?對不起,跛腳的問題。 – Dan 2012-03-30 14:51:42

+0

我注意到這個地圖上有31個地區。有沒有一種方法可以計算地圖上顯示在他們網頁底部的多邊形的平均值?我無法找到該地圖的shapefile。 – Dan 2012-03-30 15:00:11