LoginSignup
15
10

More than 5 years have passed since last update.

Rでシェープファイルを読み込む

Last updated at Posted at 2017-04-09

覚えたことは少しでもメモしていこうと思う。

シェープファイル

ESRI社の商用GISソフトウェアで使われる地図データ形式だが、仕様が公開されているので他のアプリケーションでもサポートしているものが多い。
シェープファイルは複数のファイルから構成される。

  • .shp 幾何データが格納されたメインファイル
  • .shx 幾何データのインデックスファイル
  • .dbf dBASE形式で保存された属性データ
  • .sbn .sbx 空間インデックスファイル(オプション)

これらのファイルが同一ディレクトリにあってデジタル地図として機能できる。

シェープファイルの読み込み

サンプルファイルの準備

maptoolsの中にサンプルファイルが入っているので使用してみる。

install_maptools.R
install.packages("maptools")
library(maptools)

サンプルファイルへのパスを取得。

get_path.R
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)

Rplot.png

Rplot01.png

参考

  • 谷村晋「Rで学ぶデータサイエンス7 地理空間データ分析」
  • 古谷知之「シリーズ統計科学のプラクティス5 Rによる空間データの統計分析」
15
10
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
15
10