「An Introduction to R for Spatial Analysis and Mapping」の第5章をベースにRにおける地理情報の操作を学んでいく。

https://us.sagepub.com/en-us/nam/an-introduction-to-r-for-spatial-analysis-and-mapping/book241031

これまでの資料はこちらから。

まずは前回の一連のオブジェクトを作成するところから再開する。

library("GISTools")
data(tornados)

今回はバッファについて学ぶ。

一定の範囲を指定する時、既定の境界にバッファを加えて指定したいことがある。 たとえば、テキサス州の竜巻の発生地点を調べる際、テキサス州の境界から25kmの範囲も含めて調べる、というような場合である。

この操作を下記手順で進めることにする。

バッファを加える

今回はus_states2データのうち、STATE_NAME==Texasに該当するデータをAoIとして用いる。

このデータにバッファを加えるにはrgeosパッケージのgBuffer()を用いる。 widthにバッファの大きさをメートル単位で指定できる。 正の数値であれば外側へ、負の数値であれば内側にバッファを設定することになる。 以下の事例では外側/内側に25km(25000m)のバッファを設定している。

AoI <- us_states2[us_states2$STATE_NAME == "Texas",] 
AoI.buf <- gBuffer(AoI, width = 25000)
AoI.buf2 <- gBuffer(AoI, width = -25000)

バッファを加えて表示する

バッファを加えた地図(青線/赤線)を表示した上に元の地図を黒い境界線で上書きする。

par(mar=c(0,0,0,0))
plot(AoI.buf, border = "blue")
plot(AoI, add = TRUE)
plot(AoI.buf2, add = TRUE, border = "red")

カテゴリ単位でバッファを指定する

gBuffer()においてbiidにカテゴリ型のデータを指定すると、そのカテゴリ単位でバッファを指定できる。 以下の例ではTexasには内側25km、New Mexicoには外側25kmのバッファを設定している。

AoI2 <- us_states2[us_states2$STATE_NAME %in% c("Texas","New Mexico"),] 
AoI2.buf <- gBuffer(AoI2, width=c(-25000,25000), byid=TRUE, id=c("Texas","New Mexico"))
par(mar=c(0,0,0,0))
plot(AoI2.buf, border = "blue")
plot(AoI2, add = TRUE)