8

R を使用して、ポリゴン レイヤーを使用してラスター レイヤーからデータを抽出しようとしています。ポリゴンはラスター セルよりもはるかに小さいです。

ここに画像の説明を入力

今、私はライブラリextract()から呼び出しrasterます:

a <- extract(raster, polygons, weights = TRUE, small = TRUE)
a
# ...
# [[1551]]
# value weight
#   209   0.03 # top left cell - more than 50% of the polygon area

2 つの問題があります。重みは、ポリゴンによってカバーされるセル領域の割合であり、重みは 1/100 に丸められます。私の場合、出力には左上のセルのみが表示されます (値 209) - 他の 3 つのセルの重みはゼロに丸められ、除外されました。ただし、左下のセルはポリゴンの大部分をカバーしているため、これも含める必要があります。

適切な加重平均が必要です。これを使用して他の方法で行うことはできますextract()か? それとも他の方法ですか?

PS: 余談: の重みextract()はうまく設計されていないと思います。重みは、特定のセルがカバーするポリゴン領域の割合である必要があります。その逆ではありません。そうすれば、多角形の加重平均も計算しやすくなり (各行の 2 つの数値を乗算して合計するだけです)、1/100 に丸めることは大きな問題にはなりません。

再現可能な例- (ファイルをダウンロード- 簡易版、実際のデータははるかに大きい):

require(raster)
rast <- raster("my.tif")
poly <- readOGR(".", "socc_buff_Rx")
a <- extract(rast, poly, weights = TRUE, small = TRUE)
a

関連: R での抽出が小さなポリゴンとラスターで失敗する

4

1 に答える 1