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)


inland water

水域に余分な線が現れるが,これで雨季にどれだけ水域が広がるのかが分かるようになった。

東南アジアに対するインフラの支援などでは雨季の生活ということをよく考えないといけないということがわかる。

次回こそは塗り分けに挑戦したいと思う。


参考:
<back>