[その (2)] の (62h) でつくった 正距円筒図法 (plate carree) の地図に、地形の標高を表示してみる。
ここでつかうのは、日本の「国土数値情報」の、約 1 km 間隔の格子 (実際は、緯度 2/(3×80) 度、緯度 1/80度 の格子) の標高データである。 あらかじめ、単純バイナリ形式に変換してある。 データ源と変換方法については、つぎのページを見てほしい。
[国土数値情報の標高データを Pythonで読み、作図する (試作版)]
そこに書いたのと同様な方法で、日本全国のデータ を 単純バイナリ (32ビット浮動小数点) 形式に変換し、 niigata の /diskb/kokudo/bindata/elev1km/elev1km_all.r4l として置いた。
つぎのプログラム [63a_kanto_chubu.py] は、 (62h) のプログラムと同じ範囲の図に、 matplotlib の contourf を利用して、標高を段彩で表示するものである。
lonmin, lonmax, latmin, latmax の値をかえることによって、 表示される緯度経度範囲をかえることができる。 日本の範囲でいろいろな値をためしてみてほしい。
(origlon, origlat, eastlon, northlat などは、 読みこまれるデータに関するものなので、 elev1km_all.r4l をつかうならば、変えないこと。)
プログラム例の現状では図を画面表示するようにしてあるが、 画像ファイル出力にかえるには、プログラムの終わり付近の plt.show() をコメントにして、 その下に「##」でコメントにしてある4行を生かせばよい。
contourf および カラーバーの説明は、気象データの作図のプログラムを説明するときにする予定。
【[2024-06-18 晩 修正点 1] 2024-06-18 昼の版ではつぎのようになっていました。
toposub = topo[iy0:iy1,ix0:ix1] lonsub = lon[ix0:ix1] latsub = lat[iy0:iy1]
これでは、contourf にひきわたされる配列は、 ix1番め や iy1番め のひとつ手まえまでの内容になるようです。 ix1番め や iy1番め をふくめるために、つぎのように修正しました。
toposub = topo[iy0:iy1+1,ix0:ix1+1] lonsub = lon[ix0:ix1+1] latsub = lat[iy0:iy1+1] 】
【[2024-06-18 晩 修正点 2] 2024-06-18 昼の版では 標高値が levels のリストの最小値よりも小さいばあいは ax.set_under、 最大値よりも大きいばあいは ax.set_over が有効になることを想定していました。 しかし、contourf のバージョンによっては set_under, set_over で指定された色がつかわれず colors にふくまれた色の範囲が拡大されることがあり、 niigata にインストールされたバージョンもそのようです。 対策として、 levels のリストの最初に非常に小さい値、最後に非常に大きい値を追加し、 colors のリストの最初に set_over で指定した色、 最後に set_under で指定した色を追加することにします。】