2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[R] gdb に格納されたGISデータをsfクラスとして読み込む

Last updated at Posted at 2020-01-19

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
思いつくメリットと、書き込みを追記しました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?