私はArcGIS ZonalStatsを使用してあらゆる種類の問題に遭遇しており、Rが優れた方法であると考えました。私はRにかなり慣れていると言いますが、コーディングの背景を得ました。
状況としては、いくつかのラスターと、さまざまなサイズの多くのフィーチャを持つポリゴンシェープファイルがあります(すべてのフィーチャはラスターセルよりも大きく、ポリゴンフィーチャはラスターに位置合わせされています)。抽出付きのラスターライブラリを使用して、各ポリゴンフィーチャの平均値を取得する方法を理解しました。
#load packages required
require(rgdal)
require(sp)
require(raster)
# ---Set the working directory-------
datdir <- "/test_data/"
#Read in grid of water depth
ras <- raster("test_data/raster/pl_sm_rp1000/w001001.adf")
#read in polygon shape file
proxNA <- shapefile("test_data/proxy/PL_proxy_WD_NA_test")
#calc mean depth per polygon feature
#unweighted - only assigns grid to district if centroid is in that district
proxNA$RP1000 <- extract(ras, proxNA, fun = mean, na.rm = TRUE, weights = FALSE)
#plot depth values
spplot(proxNA[,'RP1000'])
私が抱えている問題は、ポリゴンの面積と同じポリゴン内のすべての非NAセルの間の面積ベースの比率も必要なことです。ラスターのセルサイズがわかっており、各ポリゴンの面積を取得できますが、不足しているリンクは、各フィーチャ内のすべての非NAセルの数です。ポリゴン内のすべてのセルのセル番号を取得するproxNA@data$Cnumb1000 <- cellFromPolygon(ras, proxNA)
ことができ、ラスターセルの実際の値を取得する方法があると確信しています。これには、NA以外のすべてのセルの数を取得するためのループが必要です。カウントなど。しかし、私はそれを行うためのはるかに優れた迅速な方法があると確信しています!もしあなたの誰かがアイデアを持っているか、私を正しい方向に向けることができれば、私はとても感謝しています!
ras
、正当な値を使用してNAフラグを保持していますか?その値をフィルタリングするか、事後にこれらの値のカウントを取得できるようです。