[その (2)] の 62h でつくった 正距円筒図法 (plate carree) の地図に、地形 (topography) の 標高 (elevation [注: ここでは仰角ではない]) を表示してみる。
ここでつかうのは、日本の「国土数値情報」の、約 1 km 間隔の格子 (実際は、緯度 2/(3×80) 度、経度 1/80度 の格子 [2025-06-10 授業後訂正]) の標高データである。 あらかじめ、単純バイナリ形式に変換してある。 データ源と変換方法については、つぎのページを見てほしい。
[国土数値情報の標高データを Pythonで読み、作図する (試作版)]
そこに書いたのと同様な方法で、日本全国のデータ を 単純バイナリ (32ビット浮動小数点) 形式に変換し、 niigata の /diskb/kokudo/bindata/elev1km/elev1km_all.r4l として置いた。
つぎのプログラム [63a_gkanto.py] は、 62h のプログラムと同じ範囲の図に、 matplotlib の contourf を利用して、標高を段彩で表示するものである。
lonmin, lonmax, latmin, latmax の値をかえることによって、 表示される緯度経度範囲をかえることができる。 日本の範囲でいろいろな値をためしてみてほしい。
(origlon, origlat, eastlon, northlat などは、 読みこまれるデータに関するものなので、 elev1km_all.r4l をつかうならば、変えないこと。)
プログラム例の現状では図を画面表示するようにしてあるが、 画像ファイル出力にかえるには、 プログラムのはじめのほうにある「savefig = False」を 「savefig = True」にかえればよい。
contourf および カラーバーでの (ここでは標高の) 数値と色の関係は、 contourf の levels と colors というオプションのくみあわせできめている。 このプログラム例では、levels には levels、colors には colors という リスト変数で値をあたえている。 (リスト変数名とオプション名は同じである必要はない。)
contourf のばあいは、levels の 2つの値ではさまれた区間に colors の色が対応する。 【等値線をひく contour のばあいは levels の値とcolorsの色が1対1に対応する。】
colors にあたえる色は文字列で指定する。 文字列は、英語の色の名まえがいろいろ予約されているほか、 色を RGB (赤、緑、青) に分解してそれぞれ16進数2けたで表現した6文字の あたまに「#」をつけた形で指定することもできる。
colors で色のリストを指定するかわりに、 cmap (colormapの略) として、 色が連続的に変わっていくパターンを指定する方法もある。
contourf では、colormap の set_over と set_under という機能によって、 levels と colors をつかう方式のばあいでも、 levels のいちばん上の値よりも大きい値や、 いちばん下の値よりも小さい値につかう色を指定することが (2021年ごろのバージョンの matplotlib では) できたのだが ちかごろの matplotlib ではうまくいかない。 そこで、ちかごろの増田のプログラム例では、levels にあたえるいちばん上と下の値は、 ありうる値の範囲を大きくつつむようにとっておくことにしている。