【R】都道府県ごとの河川lineデータをRで結合して一級水系を抽出する
概要
Rを使用して都道府県ごとの河川のラインデータを読み込み、結合して一級水系を抽出する手順。
必要なパッケージの読み込み
必要なパッケージを読み込む。
library(sf)
library(dplyr)
データの読み込みと結合、一級水系の抽出
# 河川ラインを読み込み
files <- list.files("path", pattern = "Stream.shp", full.names = T)
# オブジェクトの作成
river_all <- NULL
for(i in 1:length(files)) {
# 各都道府県のデータを読み込み
river <- st_read(files[i], options = "ENCODING=CP932")
# 各都道府県のデータをマージ
river_all <- rbind(river_all, river)
}
# 一級水系のコードリスト
code <-c( "810101",
"810102",
"810103",
"810104",
"810105",
"810106",
"810107",
"810108",
"810109",
"810110",
"810111",
"810112",
"810113",
"820201",
"820202",
"820203",
"820204",
"820205",
"820206",
"820207",
"820208",
"820209",
"820210",
"820211",
"820212",
"830301",
"830302",
"830303",
"830304",
"830305",
"830306",
"830307",
"830308",
"840401",
"840402",
"840403",
"840404",
"840405",
"840406",
"840407",
"840408",
"840409",
"840410",
"840411",
"840412",
"850501",
"850502",
"850503",
"850504",
"850505",
"850506",
"850507",
"850508",
"850509",
"850510",
"850511",
"850512",
"850513",
"860601",
"860602",
"860603",
"860604",
"860605",
"860606",
"860607",
"860608",
"860609",
"860610",
"870701",
"870702",
"870703",
"870704",
"870705",
"870706",
"870707",
"870708",
"870709",
"870710",
"870711",
"870712",
"870713",
"880801",
"880802",
"880803",
"880804",
"880805",
"880806",
"880807",
"880808",
"890901",
"890902",
"890903",
"890904",
"890905",
"890906",
"890907",
"890908",
"890909",
"890910",
"890911",
"890912",
"890913",
"890914",
"890915",
"890916",
"890917",
"890918",
"890919",
"890920")
# 一級水系のラインデータを抽出し,ディゾルブ
river_ikkyu <- river_all[ , c("W05_001", "geometry")] %>%
filter(., W05_001 %in% code) %>%
group_by(., W05_001) %>%
summarize(.)
一級水系ラインデータの表示
plot(river_ikkyu)
shpファイルとして保存
st_write(river_ikkyu, "path/to/river_ikkyu_suikei.shp")
メモ
リストの場合はdo.call( )使った方が早いかも?
この記事が気に入ったらサポートをしてみませんか?