Contenu connexe
Similaire à RでGISハンズオンセッション
Similaire à RでGISハンズオンセッション (20)
RでGISハンズオンセッション
- 1. 2012年11月5日
FOSS4G 2012 Tokyo
@東京大学柏キャンパス
RでGIS ハンズオンセッション
NPO法人オープンコンシェルジュ/OSGeo.JP
星田侑久
- 2. Rについて
R
http://www.r-project.org/
R(wikipedia)
http://ja.wikipedia.org/wiki/R%E8%A8%80%E8
%AA%9E
Rjpwiki
http://www.okada.jp.org/RWiki/
RでGIS
http://www.okada.jp.org/RWiki/?%A3%D2%A4
%C7%A3%C7%A3%C9%A3%D3
2
- 3. Rについて
商用版はS-PLUS
いいところ
データ量が多くても平気
扱える分析手法が豊富
やろうと思えば空間情報を用いた分析は
いろいろできる
3
- 4. Rのインストール
windows, mac, linuxで動作可能
http://cran.md.tsukuba.ac.jp/
4
- 5. とりあえず動かしてみる
# xに1を代入
x <- 1
x
# yに1を代入
y <- 2
y
# xとyを足したものをzに代入
z <- sum(x, y)
z
5
- 6. 使用するデータ
【地図で見る統計(統計GIS)】
http://www.e-stat.go.jp/SG2/toukeichiri/TopFrame.do?fromPage=init&toPage=download
①平成22年国勢調査(小地域)
東京都目黒区、世界測地系平面直角第9系、shp
②住宅の建て方別世帯数(小地域)
東京都目黒区、txt
【国土数値情報ダウンロードサービス】
http://nlftp.mlit.go.jp/ksj/gml/gml_datalist.html
③鉄道データ、世界測地系緯度経度、shp
6
- 7. 概要
1.データのインポート
2.データの結合
3.データ加工
4.グラフの描画
5.クラスター分析
6.主題図の作成
7
- 8. パッケージのインストール(オフライン)
パッケージ
●R言語のプログラムを配布用の形式に保存したもの
●関数やデータセット、リファレンスマニュアルなどがひ
とまとめにされた、いわば出来合いのアプリケーション・
関数ライブラリ・データベース
#パッケージが格納されているフォルダの確認
.libPaths()
上記のフォルダにPackageフォルダ内のデータをコピー
8
- 9. パッケージのインストール(オンライン)
#パッケージのインストール
install.packages(“maptools”)
#パッケージの読み込み
library(maptools)
9
- 10. 作業ディレクトリの設定
#作業ディレクトリの設定
setwd("フルパス")
c:¥temp → c:¥¥temp
→ c:/temp
#windowsの場合
¥WORK¥win
#mac、linuxの場合
¥WORK¥mac
10
- 11. データのインポート
#shpをインポート
#目黒区
meguro01 <- readShapePoly("h22ka13110.shp")
#座標系の設定
proj4string(meguro01) <-
CRS("+init=epsg:2451")
#画面に表示
plot(meguro01)
#ヘッダーの表示
names(meguro01)
#サマリーの表示
summary(meguro01)
11
- 12. 投影変換
EPSGコード
地理座標系をあらわすコード
http://spatialreference.org/
https://sites.google.com/site/gistoolboxes/
meguro02 <-
spTransform(
meguro01,
CRS = CRS("+init=epsg:4612"))
12
- 13. データのインポート
#dbfをインポート
dbf01 <- read.dbf("h22ka13110.dbf")
#属性データをインポート
txt01 <-
read.csv("tblT000577C13110.txt")
#型の違いを確認
class(meguro02)
#カラムへのアクセス
meguro02$KEY_CODE
13
- 14. データの結合
#単純にmergeすると型が変わる
tmp <- merge(meguro02, txt01,
by="KEY_CODE")
class(tmp)
#sort=Fオプションが大切
meguro03 <- meguro02
meguro03@data <-
merge(meguro02@data,
txt01,
by="KEY_CODE", sort=F)
14
- 15. ひとやすみ
#関数のhelp
help(readShapePoly)
各パッケージのドキュメント
http://cran.r-project.org/web/packages/maptools/maptools.pdf
http://cran.r-project.org/web/packages/sp/sp.pdf
15
- 16. データ加工
#演算
#数値型に変換して演算
#一戸建て世帯割合=一戸建て世帯/世帯数
meguro03$p000577002 <-
as.numeric(as.character(meguro03$T000577002)) /
as.numeric(as.character(meguro03$T000577001))
16
- 17. データ加工
#欠損値を0埋め
meguro03$p000577003 <-
ifelse(is.na(meguro03$p000577003),
0,
meguro03$p000577003)
#確認
subset(meguro03@data,
KEY_CODE == 13110001004,
c(T000577001,T000577002,T000577003,T000577004,
T000577005,T000577006,T000577007,T000577008,
T000577009))
#基本統計量
summary(as.numeric
(as.character
(meguro03@data$T000577003)))
17
- 18. グラフの描画
#ヒストグラム
hist(meguro03$p000577002,
xlim=c(0, 1), ylim=c(0, 20),
main="ikkodate", xlab="pro",
col="purple")
#散布図
plot(meguro03$p000577002,
meguro03@data$p000577004,
xlab="pro_ikkodate", ylab="pro_kyoudou",
main="scatter plot",
cex=1, pch=20, col="green",
xlim=c(0, 1), ylim=c(0, 1))
18
- 19. クラスター分析
#クラスター分析に投入する項目を抽出
cluster01 <-
meguro03@data[,
c("p000577002","p000577003","p000577005",
"p000577006","p000577007","p000577008",
"p000577009")]
#クラスター分析の実行
cluster02 <- pam(cluster01, k=3)
#クラスター分析の結果を図形データに結合
meguro03$cluster.nm <- cluster02$clustering
19
- 20. クラスター分析の結果の解釈
#クラスターのグループごとに一戸建世帯割合を集計
(平均)
barplot(
by(
meguro03$p000577002,
meguro03$cluster.nm,
mean),
main="ikkodate")
#1;共同住宅3~5階建が多い
#2;一戸建が多い
#3;共同住宅6~階建が多い
20
- 21. 主題図の作成
#shpへエクスポート
writePolyShape(meguro03, "cluster.shp")
#閾値の数
class <- classIntervals(meguro03$cluster.nm, 3)
#色の設定
colcode <- findColours(class, brewer.pal(3,"Accent"))
#凡例のラベル
names(attr(colcode, "table"))[1] <- "1"
names(attr(colcode, "table"))[2] <- "2"
names(attr(colcode, "table"))[3] <- "3"
21
- 22. 主題図の作成
#PDFへ出力、日本語も使えるように
pdf("meguro.pdf",family = "Japan1GothicBBB")
#クラスター分析の結果を格納したレイヤー
plot(meguro03,
xlim=c(139.6496,139.7295),
ylim=c(35.5973,35.6734),
col=colcode,
axe=TRUE)
#地図のタイトル
title("目黒区")
22
- 23. 主題図の作成
#レイヤーの重ね合わせ
par(new=T)
#線路レイヤー
plot(railroad,
xlim=c(139.6496,139.7295),
ylim=c(35.5973,35.6734),
col="black",
lwd=1)
#レイヤーの重ね合わせ
par(new=T)
23
- 24. 主題図の作成
#駅レイヤー
plot(station,
xlim=c(139.6496,139.7295),
ylim=c(35.5973,35.6734),
col = "red",
lwd = 3)
#レイヤーの重ね合わせ
par(new=T)
#地図の凡例
legend(139.6496,35.6734,
legend=names(attr(colcode, "table")),
fill=attr(colcode, "palette"),
cex=0.6,
bg='gray')
24
- 25. 主題図の作成
#町丁目名のラベル、ハロー
invisible(
text(getSpPPolygonsLabptSlots(meguro03),
labels=as.character(meguro03$MOJI),
cex=0.25,
col="white",
font=2))
invisible(
text(getSpPPolygonsLabptSlots(meguro03),
labels=as.character(meguro03$MOJI),
cex=0.25,
col="black",
font=1))
#PDF出力の終了
dev.off()
25
- 26. 参考書籍
谷村 晋 古谷知之
地理空間データ分析 Rによる空間データの統計分析
26