観測点ごとに数値データがあたえられたとき、その量の空間分布をみるために、 等値線 (コンター) をひいてみたいことがある。
その方法としては、つぎの2とおりがあげられる。
わたしが、両方の方法について、 既存のプログラム例をつなぎあわせて、 Fortran言語のプログラムをつくってみた例文が [GKS (Graphical Kernel System)による2次元グラフィックス] の下の 「格子点でないデータの扱い」のところにのこっているが、 いま実用的なものとはいえない。
Python による参考例を検索してみると、 格子に内挿する方法では、 scipy.interpolate.griddata または scipy.interpolate.interp2d をつかっている。 scipy は Anaconda では常備のパッケージで、追加してインストールする必要はない。 ここでは、griddata のほうをためしてみた。
scipy.interpolate.griddata では、内挿方法として nearest, linear, cubic を選択できる。 nearest は格子点にいちばん近い観測点の値をひろう方法で、 連続量ではなく離散的な値だけをとるようなデータにむく。 cubic は 3次関数で、なめらかな場にむく。 linear (線形内挿) は 1次関数であり、定量的な観測値のデータにはこれがよさそうだ。
線形内挿といっても、具体的な手順はいろいろありうる。 わたしは scipy.interpolate.griddata の中の手順を知らない。 内挿値を数値としてつかうのにはこれでは不安なのだが、 観測点での値をみながら補助としてつかう等値線にはじゅうぶんだと思う。
[2023年2月の大雪に関連してアメダス観測値の空間分布を見る] [2023-07-14 リンク訂正] の データをそのままつかい、 その例文プログラム [map_amedas_daily_gkanto_202302case.py] に、 観測点の位置から格子点に scipy.interpolate.griddate で空間内挿をして、 格子点値によって matplotlib (Cartopy 使用) の contour で 等値線図をひく作業を 書きくわえてみた。 (つぎのプログラム例の現状では、 2月10日の最低気温について、地点の位置に「+」記号と数字をかいたうえで、オレンジ色の破線で等値線をひくようになっている。 等値線レベルの値は気温のために設定したもので、他の気象要素のためには変える必要がある。)
追加したところは複数個所にわかれているが、それぞれ、「##### 等値線のための追加」 から「##### 等値線のための追加 ここまで」までとして、かこんでおいた。
まだいろいろと改善の余地があると思うが、ひとまず参考のためにしめしておく。