新・土と生き物

landscapemetrics::sample_lsm

2026-03-06 16:19:27
2026-03-06 17:14:31
目次

午前

  • データ解析

午後

  • データ解析

  • 会議

卒論のコマンドを勉強しながら再実行をしている最中に覚えたこと。忘れる前にメモ。

土地被覆図から、ある面積内の土地利用面積を取得することは良くある。

以前は、rasterパッケージのextract()を使っていたけど、landscapemetricsパッケージのlsm_*_***()の方が楽なことに気づいた。

例えば、面積割合を計算する場合には、「lsm_c_pland()」を使う。卒論ではこれを使っていた。

この関数は、ラスタデータ全体を対象に計算するので、円形バッファー内のみを対象とする場合には事前に円形ラスタデータを作成する必要がある。

こんな感じで円形ラスタデータを作成して

#data_point_6673が地点のベクタデータ
#land_data_6673がラスタデータ
rc_list <- lapply(1:nrow(data_point_6673), function(i) {
  buf <- buffers[i, ]
  r_crop <- crop(land_data_6673 , buf)
  r_mask <- mask(r_crop, buf)
})

「lsm_c_pland()」を実行する。リストとして出力されるので、このあともやや面倒。

list_lsm_c <- lapply(rc_list, lsm_c_pland)
list_lsm_c[[1]] #リスト1を表示

卒論コマンドの短縮化についてAIに相談していたら、同じくlandscapemetricsパッケージの「sample_lsm」を紹介してくれた。

これはバッファポリゴンを指定した上で、lsm_*_***系の関数を使うことができる。

buffers <- buffer(data_point_6673, width=1000) #バッファのポリゴンデータ(ベクタ)を作成

#これでOK!
sample_lsm(land_data_6673, y=buffers, what="lsm_c_pland")

同時に複数の関数を実行することもできる!

sample_lsm(land_data_6673, y=buffers, what = c("lsm_c_pland","lsm_l_shdi")))

関数の中に「size=」を指定できるけど、方形区になるので注意!

こんなイメージです!

この記事を書いた人

SK

ダンゴムシ・ワラジムシを研究しています! https://diversity.jpn.org/kara/index.html