見出し画像

【R】国土数値情報の土地利用細分メッシュを一括ダウンロードする

概要

以下の国土数値情報の土地利用細分メッシュを一括ダウンロードする方法です.フォルダパスは適宜調整してください.

## 必要なパッケージの読み込み 必要なパッケージを読み込む。
library(sf)
library(dplyr)

1次メッシュコードの取得

国土数値情報の土地利用細分メッシュをダウンロードする際に用いる1次メッシュコードを取得します. メッシュコードが入っているデータは以下よりダウンロードできます.

# 2次メッシュデータの読み込み
  mesh2 <- st_read("path/to/mesh2.shp")

# 2次メッシュコードのとりだし
mesh2_code <- mesh$Name %>% 
  as.integer(.) /100 

# 1次メッシュコードの作成
mesh1_code <- meshcode %>% 
  floor(.) %>% 
  unique(.)

ダウンロードURLの取得

どれかひとつダウンロードし,ブラウザでURLを確認すると(年代によって違います), ダウンロードURL = “A” + 1次メッシュコード” + “B” のようなので,以下のようにURLのリストを作成します.

#平成21年のデータの読み込み
url_list <- c(paste0("https://nlftp.mlit.go.jp/ksj/gml/data/L03-b/L03-b-09/L03-b-09_",
                     mesh1_code,
                     "-jgd_GML.zip")
              )

データのダウンロード

URLを指定してダウンロードします.

for(i in 1:length(url_list)) {
  
  # 保存ファイル名の指定
   destfile <- paste0("path/to/landuse_mesh_", mesh1_code[i], ".zip")
  
   # ダウンロード(データがない場合はスキップ)
  tryCatch(download.file(url_list[i],destfile, mode = "wb", quiet = FALSE), 
        error = function(e) print(paste(file, 'did not work out')))    
}

データのダウンロード

ダウンロードしたデータを解凍する.

# zipファイルパスの取得
ziplist <- list.files("path", pattern = ".zip", full.names = T)

# 保存ファイル名用
filename <- list.files("path", pattern = ".zip", full.names = F)

# zipファイルの解凍
for(i in 1:length(ziplist)){
  unzip(ziplist[i],
        exdir = paste0("path", "/", gsub(".zip", "", filename[i]))
  )
        
}

ダウンロードデータのマージ

ダウンロードしたデータをマージして保存.

# shpファイルのフルパスを作成
 shp_list <- list.files("path/to/zipfolder", full.names = T) %>% 
  list.files(., pattern = ".shp", full.names = T)
 
 list <- list()
 
 # shpファイルの読み込み
 for(i in 1:length(shp_list)){
   list[[i]]<- st_read(shp_list[i])
   
 }
 
 #マージ
landuse  <- do.call(rbind, list)

# データの保存
st_write(landuse, "path/merge.shp", overwrite = T)


いいなと思ったら応援しよう!