2017.02.04 Sat |
Maximaによる世界地図の描画
1月30日の記事で無料の数式処理システムMaximaを紹介しましたので,今回はMaximaを使ってみたいと思います.
Maximaには様々なパッケージが用意されています.数式処理システムなので,数式処理や数値計算に関するパッケージもいろいろありますが,パッケージの中には,”worldmap“という世界地図を扱うものもあります.パッケージworldmap
では描画ソフトのgnuplotを用いて2次元の地図や3次元の地図を描画できます.
Maximaを開いたらまずパッケージworldmap
を読み込みます.
load(worldmap)$
2次元の地図の描画はdraw2d
を用います.例えば,ユーラシア大陸の海岸線を描画するときのコマンドは,
draw2d(geomap(Eurasia_coastlines))$
となります.geomap
というコマンドで海岸線を与えるリストを取得します.実行例は次のようになります.
3次元の地図の描画はdraw3d
を用います.例えば,ユーラシア大陸の海岸線を描画するときのコマンドは,
draw3d(geomap(Eurasia_coastlines))$
となります.実行例は次のようになります.
続いては,もう少し複雑な地図を描こうと思います.
[2次元の世界地図]
全ての国境を描くには,geomap(makelist(k,k,0,2800))
というコマンドで全ての国境のリストを取得します.コードは,
arg:[
color=black,
geomap(makelist(k,k,0,2800)),
grid=true
]$
apply(draw2d,arg)$
となります.リストargの1つ目の要素で海岸線の色を指定し,3つ目の要素で格子の表示をさせています.apply
コマンドでリストargをdraw2d
に適用しています.
2次元の描画ではfill_color
コマンドで各国を塗りつぶすこともできます.各国のインターネット利用率(2014年)を,0~20%は青,20%~40%は緑,40%~60%は黄,60%~80%はオレンジ,80%~100%は赤で表現してみました(データの出典:総務省統計局「世界の統計 2016」).塗りつぶされていない国はデータのなかった国です.
[3次元の世界地図]
まずは,地球儀のように,緯線・経線を描き,各国の国境を描いてみます.コードはこちらです.
d2r:%pi/180$
draw3d(
surface_hide = true,
color = gray,
parametric_surface(
cos(phi*d2r)*cos(theta*d2r),
cos(phi*d2r)*sin(theta*d2r),
sin(phi*d2r),
theta,-180,180,
phi,-90,90),
color = black,
line_width = 1,
geomap(makelist(k,k,0,2800)))$
surface_hide
をtrueにすると,地球の裏側が表示されなくなります.parametric_surface
により緯線・経線を表示しています.line_width
で線の太さを指定しています.
最後に,各国のインターネット利用率で国境線の色付けをしてみますと,次のようになります.
[参考]
Maximaパッケージdrawのマニュアル(http://maxima.sourceforge.net/docs/manual/maxima_52.html)
パッケージworldmapの利用例
(http://riotorto.users.sourceforge.net/Maxima/gnuplot/geomap/index.html#0)
世界の統計2016(http://www.stat.go.jp/data/sekai/0116.htm#c07)
GO
東京大学大学院工学系研究科修士1年