見出し画像

【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( )使った方が早いかも?


この記事が気に入ったらサポートをしてみませんか?