【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)