Rでカンボジアの白地図を書く (2)
Dr. Kazuhiro Fukuyo
Professor, Yamaguchi University
Last updated: September 9, 2011
前回,Rのパッケージ"maptools"とDIVA-GISのデータを使って白地図を書いてみたわけですが,「トンレサップ湖」が抜けているなどの問題があったので,改善してみました。
準備作業
DIVA-GISが提供するshapeデータ:"Administrative
areas"には水域のデータが無い。そこで,新たにDIVA-GISが提供するfree geographic (GIS) dataから,カンボジアの"Inland water"のデータを頂くことにした。
DIVA-GISのホームページ -> free spatial data -> country level data
の順にたどって,カンボジアの"Inland water"のzipファイルをダウンロード,ハードディスク上の適切なところに解凍すればよい。解凍すると"KHM_wat"というフォルダができる。
行政区分の白地図にトンレサップ湖を重ねる
KHM_watフォルダにはKHM_water_areas_dcwという名前の水域データ
が含まれている。ここにメコン,トンレサップ,バサックといった大河とトンレサップ湖のデータが入っている。実はこれらの河川・湖のデータだけでなく,中
小の河川・湖,さらに雨季に冠水する土地のデータも入っている。
前回同様にRを立ち上げて,
library(maptools)
と入力するとforeign, sp, latticeなどのパッケージもロードされる。
つぎに州境形状データ"KHM_adm1.shp"と水域データ"KHM_water_areas_dcw.shp"を読み込む(下線部は保存場所に応じて書き直すこと)。
x <- readShapeLines("c:\\rtemp\\cmb\\KHM_adm\\KHM_adm1.shp")
y <- readShapeLines("c:\\rtemp\\cmb\\KHM_wat\\KHM_water_areas_dcw.shp")
つぎに水域データから3大河川とトンレサップ湖のデータを取り出すことにする。
「通常の河川・湖」と「冠水する土地」の違いは,F_CODE_DESという属性で分けられている。そこで,まず,F_CODE_DESが"Inland Water"となっている水域(つまり通常の河川・湖)のデータを取り出し,そのあと個別に3大河川とトンレサップ湖のデータを取り出すことにする。
yy <- y[y$F_CODE_DES == "Inland Water",]
yy1 <- yy[yy$NAME == "MEKONG",]
yy2 <- yy[yy$NAME == "TONLE SAB",]
yy3 <- yy[yy$NAME == "BOENG TONLE SAB",]
yy4 <- yy[yy$NAME == "TONLE BASAK",]
yy3がトンレサップ湖,yy1, yy2, yy4が3大河川のデータである。
これで準備ができたので,行政区分とトンレサップ湖を重ねて表示してみる。また行政区分の番号も示すことにする。
x$ID <- x$ID_1 - min(x$ID_1)+1
plot(x)
text(coordinates(x), labels=x$ID, cex=1.0, font=2)
plot(yy3, col="grey40", lwd=1, add = TRUE)
x$IDというのは,州名をアルファベット順に並べたときの順番(下表参考)である。x$ID_1が1533から始まるので,番号を1から付け直してみたわけである。
次のような画像が登場するはずである。
ID
|
NAME
|
ID
|
NAME
|
1
|
Banteay Mean Chey
|
13
|
Krong Preah Sihanouk
|
2
|
Battam Bang
|
14
|
Mondul Kiri
|
3
|
Kampong Cham
|
15
|
Otdar Mean Chey
|
4
|
Kampong Chhnang
|
16
|
Phnom Penh
|
5
|
Kampong Speu
|
17
|
Pursat
|
6
|
Kampong Thum
|
18
|
Preah Vihear
|
7
|
Kampot
|
19
|
Prey Veng
|
8
|
Kandal
|
20
|
Rattanak Kiri
|
9
|
Koh Kong
|
21
|
Siem Reap
|
10
|
Kep
|
22
|
Steung Treng
|
11
|
Kratie
|
23
|
Svay Rien
|
12
|
Krong Pailin
|
24
|
Takeo
|
冠水域を表示してみる
上述したように,KHM_water_areas_dcwには中小の河川・湖,さらに雨季に冠水する土地のデータも入ってい
る。これらも表示してやれば雨季のカンボジアの状況がわかるはずである。そこで,冠水域も含めた地図を表示してみることにする。
すでに定義したデータフレームを利用して次のようにコマンドを打ち込む。冠水域+中小河川・湖は灰色で,3大河川+トンレサップ湖は黒で表示する。
plot(x)
plot(y, col="grey", add = TRUE)
plot(yy1, col="black", lwd=3, add = TRUE)
plot(yy2, col="black", lwd=3, add = TRUE)
plot(yy3, col="black", lwd=3, add = TRUE)
plot(yy4, col="black", lwd=3, add = TRUE)
水域に余分な線が現れるが,これで雨季にどれだけ水域が広がるのかが分かるようになった。
東南アジアに対するインフラの支援などでは雨季の生活ということをよく考えないといけないということがわかる。
次回こそは塗り分けに挑戦したいと思う。
参考:
- 中澤 港「Epi Infoによる塗り分け地図の作り方」(2011年6月7日更新), http://phi.med.gunma-u.ac.jp/swtips/EpiMap.html
- 井田憲計「GISで地域を見る―地理情報システムを活用した地域分析の可能性―」(2007年8月2日), http://rio.andrew.ac.jp/~ida/lecture/guest/gis/
- 牧山文彦「[連載]フリーソフトによるデータ解析・マイニング 第50回 Rと空間統計」,
http://mjin.doshisha.ac.jp/R/200709_50.pdf