2014-01-27 4 views
2

저는 ArcGIS ZonalStats를 사용하여 모든 종류의 문제에 직면 해 있으며 R이 좋은 방법 일 수 있다고 생각합니다. 나는 R에 상당히 익숙하지만 코딩 배경을 가지고 있다고 말한다. 상황에 따라 다양한 크기의 여러 기능이 포함 된 여러 개의 래스터와 다각형 모양의 파일이 있습니다 (모든 기능은 래스터 셀보다 크고 다각형 기능은 래스터에 정렬되어 있음). 나는 추출물 래스터 라이브러리를 사용하여 각 다각형 기능에 대한 평균 값을 얻는 방법을 알아 냈어요 :다각형 내에서 NA가 아닌 래스터 셀 수를 얻는 방법

#load packages required 
require(rgdal) 
require(sp) 
require(raster) 
require(maptools) 
# ---Set the working directory------- 
datdir <- "/test_data/" 

#Read in a ESRI grid of water depth 
ras <- readGDAL("test_data/raster/pl_sm_rp1000/w001001.adf") 
#convert it to a format recognizable by the raster package 
ras <- raster(ras) 

#read in polygon shape file 
proxNA <- readShapePoly("test_data/proxy/PL_proxy_WD_NA_test") 
#plot raster and shp 
plot(ras) 
plot(proxNA) 

#calc mean depth per polygon feature 
#unweighted - only assigns grid to district if centroid is in that district 
[email protected]$RP1000 <- extract(ras, proxNA, fun = mean, na.rm = TRUE, weights = FALSE) 
#check results 
head(proxNA) 

#plot depth values 
spplot(proxNA[,'RP1000']) 

내가 가진 문제는 내가 또한 다각형의 영역 사이의 영역을 기반으로 비율을 필요로한다는 것입니다 동일한 다각형의 모든 비 NA 셀 래스터의 셀 크기가 무엇인지 알면 각 다각형의 면적을 얻을 수 있지만 누락 된 링크는 각 피쳐의 모든 비 -NA 셀 수입니다. 난 다각형 [email protected]$Cnumb1000 <- cellFromPolygon(ras, proxNA)에있는 모든 세포의 셀 번호를 얻을 수 있었고, 모든 비 NA 셀의 수를 합친 루프를 필요로하는 래스터 셀의 실제 값을 얻는 방법이 있다고 확신한다. 카운트 등. 하지만, 훨씬 더 빠르고 더 좋은 방법이있을 것이라고 확신합니다! 당신 중 누구라도 아이디어가 있거나 올바른 방향으로 나를 가리킬 수 있다면, 나는 매우 감사 할 것입니다! 많은 감사!

+0

죄송합니다, 나는이 질문을 잘못 때문에 GIS-유래 사이트로 이동 한 생각한다. [link] (http://gis.stackexchange.com/questions/84387/how-to-get-count-of-non-na-raster-cells-within-polygon-using-r) 많은 분들께 감사드립니다. 지금까지 봐! – HBA

답변

0

내가 파일에 대한 액세스를 필요는 없지만, 설명 내용에 따라,이 작업을해야합니다

library(raster) 
mask_layer=shapefile(paste0(shapedir,"AOI.shp")) 
original_raster=raster(paste0(template_raster_dir,"temp_raster_DecDeg250.tif")) 
nonNA_raster=!is.na(original_raster) 
masked_img=mask(nonNA_raster,mask_layer) #based on centroid location of cells 
nonNA_count=cellStats(masked_img, sum)