覚えたことは少しでもメモしていこうと思う。
シェープファイル
ESRI社の商用GISソフトウェアで使われる地図データ形式だが、仕様が公開されているので他のアプリケーションでもサポートしているものが多い。
シェープファイルは複数のファイルから構成される。
-
.shp
幾何データが格納されたメインファイル -
.shx
幾何データのインデックスファイル -
.dbf
dBASE形式で保存された属性データ -
.sbn
.sbx
空間インデックスファイル(オプション)
これらのファイルが同一ディレクトリにあってデジタル地図として機能できる。
シェープファイルの読み込み
サンプルファイルの準備
maptools
の中にサンプルファイルが入っているので使用してみる。
install.packages("maptools")
library(maptools)
サンプルファイルへのパスを取得。
f <- system.file("shapes/sids.shp", package="maptools")
ちなみに、ここで取得したディレクトリ内を覗いてみると先程の3つのファイルが入っていることが分かる。
% ls /Library/Frameworks/R.framework/Versions/3.3/Resources/library/maptools/shapes | grep sids [~]
sids.dbf
sids.shp
sids.shx
ファイルの読み込み
少し古い教科書ではmaptools::readShapeSpatial()
を使用することになっていて、現在でも一応読み込めるがdeprecatedなのでrgdal::readOGR
またはsf::st_read
を使うように促される。
> map <- readShapeSpatial(f)
警告メッセージ:
1: use rgdal::readOGR or sf::st_read
2: use rgdal::readOGR or sf::st_read
パッケージをインストールしておく。
install.packages("rgdal")
install.packages("sf")
これで警告なしにシェープファイルを読み込める。
map2 <- rgdal::readOGR(f)
map3 <- sf::st_read(f)
maptools::readShapeSpatial()
は地図データをSpatial***DataFrame
という専用のクラスで読み込む。***の部分はシェープファイルの形式に応じてPoints、Lines、Polygonsと変化する。
maptools::readShapeSpatial()
と同様にSpatialPolygonsDataFrame
などの形式で読み込むのはrgdal::readOGR()
で、sf
はよりデータフレームに近い形式で読み込む(今後はsf
を使っていく感じになっていく?模様。 RでGISをやるときにはsfパッケージ、という世の中になるらしい。 - Technically, technophobic.)。
使う
はい。この先は勉強していません。
sf
ではそのままplot()
に投げるとメタデータの数だけプロットが出るようですね。
plot(map2, col = "grey", border = "white")
plot(map3)
参考
- 谷村晋「Rで学ぶデータサイエンス7 地理空間データ分析」
- 古谷知之「シリーズ統計科学のプラクティス5 Rによる空間データの統計分析」