ポリゴン内のラインデータの抽出(切取り)
何回も調べたりしているため、メモ。
ポリゴン内のライン長さを出したいときがある。 その際はラインをポリゴンでインターセクトする必要がある。
関数はrgeos::gIntersection()
を利用する。
sp::over()
関数で行うと意図と異なる結果となるため注意。
(適切な方法で行えば実行できるだろうが。。。)
library(stplanr) library(magrittr) data(routes_fast) data(zones)
- よい例
plot(zones[3,], col = "yellow") plot(routes_fast, col ="grey90", add = T, lwd = 5) rgeos::gIntersection(spgeom1 = routes_fast, spgeom2 = zones[3,]) %>% plot(add = T, col = "blue")
- ダメな例
plot(zones[3,], col = "yellow") plot(routes_fast, col ="grey90", add = T, lwd = 5) tmp <- sp::over(x = routes_fast, y = zones[3, ]) plot(routes_fast[!is.na(tmp$geo_code), ], add = T, col = "red", lwd = 1)