GISデータをgdbフォルダで渡されることが増えてきたので、Rで読み込む方法をメモ。
gdb は
- ファイルサイズの大きいベクターデータを保存できる。ファイルサイズが大きく .shp で書き出せないときなどに役立つ(.shpに書かなけきゃいいんですがそうもいかない場合が...)。
- multiple feature class を扱うことができる。たとえば、屋根形状を含めた建物ポリゴンデータの保存に役立つ。
### 0. 準備
library(mapview)
library(sf)
setwd("C:/hoge/piyo")
### 1. 読み込み
TokyoMP <- sf::st_read(dsn="GISdata.gdb", layerName="Boundary_Tokyo")
### 2. マッピング
mapview(TokyoMP)
ちょっと前に {arcgisbinding} というArcGISとRをつなげるパッケージが現れたので、これを使った方法は下記のとおりである。こちらの方法のメリットはまだよくわかっていない(思いつくところでは、このパッケージはラスターをgdbに書き込むことができる。筆者はラスターをgdbに書き込みたくなり、他パッケージだとできなそうだったところ、このパッケージをみつけた。)。パッケージの詳細は https://r-arcgis.github.io/ にある。
### 0. 準備
library(arcgisbinding)
library(data.table)
library(dplyr)
library(mapview)
library(sf)
### 1. ArcGIS pro のライセンスを確認
# 事前に ArcGIS pro を起動してログインしておく
arcgisbinding::arc.check_product()
### 2. gdbフォルダの中身を確認
path1 <- "C:/hoge/piyo/GISdata.gdb"
(DataList <- arcgisbinding::arc.open(path1)@children$FeatureClass)
# [1] Boundary_Tokyo
### 3. sf 形式として読み込み
TokyoMP <- arcgisbinding::arc.open(paste(path1,"/Boundary_Tokyo",sep="")) %>%
arcgisbinding::arc.select() %>%
arcgisbinding::arc.data2sf()
## 4. マッピング
mapview(TokyoMP)
## 5. gdb に書き込み
arc.write("C:/hoge/piyo/GISdata_new.gdb/TokyoMP2",TokyoMP)
# 新しいgdbフォルダ(GISdata_new.gdb)にオブジェクト TokyoMP を
# ファイル名(フィーチャークラス名)TokyoMP2 として保存。
# 新しい gdb は事前に作っておかなくても大丈夫。
※追記 2020-04-08
思いつくメリットと、書き込みを追記しました。