2016-07-26 3 views
0

관련된 좌표와 데이터 그리드 셀 당 평균값 계산이 보이는 SpatialGridDataFrame하면 :클래스, UTM 투영 I는 <code>gridmap</code>라는 래스터 파일을

Object of class SpatialGridDataFrame 
Coordinates: 
     min max 
[1,] 415.0 545.5 
[2,] 6371.5 6493.0 
Is projected: TRUE 
proj4string : 
[+proj=utm +ellps=WGS84 +datum=WGS84 +zone=30 +units=km +towgs84=0,0,0] 
Grid attributes: 
    cellcentre.offset cellsize cells.dim 
1   415.25  0.5  261 
2   6371.75  0.5  243 
Data attributes: 
    values  
Min. : 1 
1st Qu.:15856 
Median :31712 
Mean :31712 
3rd Qu.:47568 
Max. :63423 

I는 데이터 프레임을 갖는 해당 좌표와 연관된 좌표 및 값 (V1)을가집니다. 특정 좌표에는 여러 값이있을 수 있습니다. 내가하고 싶은 무엇

DF <- data.frame(
    Lat = c(6384.705, 6384.701, 6384.698, 6384.698, 6384.691, 6384.687) 
    Lon = c(439.7384, 439.7385, 439.7386, 439.7387, 439.7389, 439.7390) 
    V1 = c(34, 0.006, 76, 34, 777, 0.0000348) 
) 

내 래스터의 각 GRID-CELL에 대한 V1의 평균값을 각각 분리 된 데이터 프레임에서 좌표 및 그리드 셀의 값을 갖는 데이터 프레임을 만들 수 없습니다입니다 래스터 좌표 값 및 평균값 V1. 나는이 코드를 사용하여 각 관측 그리드 셀 ID를 얻기 위해 gridmap에 위치를 오버레이하는 방법을 알아낼 수 있습니다

coords <- data.frame(cbind(DF$Lon, DF$Lat)) 
coords <- SpatialPointsDataFrame(coords, data = data.frame(DF), proj4string = CRS(projUTM)) 
siteSpo <- over(x=coords, y=gridmap) 
DF$siteID <- siteSpo$values 

을하지만 각 개인에 대한 각 값을 평균의 다음 단계를 알아낼 수 없습니다 그리드 셀 ID와 데이터가없는 0을 포함하여 모든 평균 그리드 셀 값을 갖는 새로운 SpatialGridDataFrame을 생성합니다. 우리가 파일을 가지고 있지 않기 때문에

답변

1

내가 먼저 RasterLayer 객체를

library(raster) 
#r <- raster("gridmap file") 

을 만들 것, 여기에 예 (당신은 또한 r <- raster(gridmap)을 수행 할 수 있습니다)입니다. 이제

r <- raster(ncol=261, nrow=243, xmn=415, xmx=545.5, ymn=6371.5, ymx=6493.0) 
values(r) <- 1:ncell(r) 

:

df <- data.frame(
    y = c(6372, 6378, 6384, 6384, 6485, 6487), 
    x = c(419, 429, 439, 439, 539, 500), 
    V1 = c(34, 0.006, 76, 34, 777, 0.0000348) 
) 
df <- aggregate(df[, 'V1', drop=FALSE], df[,2:1], mean) 
df$grid <- extract(r, df[,c('x', 'y')]) 

df 
# x y  V1 grid 
#1 419 6372 3.40e+01 63171 
#2 429 6378 6.00e-03 60059 
#3 439 6384 5.50e+01 56947 
#4 539 6485 7.77e+02 4425 
#5 500 6487 3.48e-05 3303