JL1NIE ’s blog

趣味のアマチュア無線やプログラミングについて徒然と。

山岳リストの自動生成(その2)

まず最初にlibcontourをGitHubから入手します。

github.com

Ubuntuの環境ではほぼmake一発でコンパイル完了です。更にちょうど良い具合にサンプルプログラムにTIFFデータの領域木を生成するものがありました。画像の輝度を標高データを表す浮動小数点に変更します。ライブラリが生成する領域木のグラフには、親ノードの極値とサドル(=鞍点)の座標とその値、更にその子供へのポインタがあります。座標はメッシュ領域の先頭からの位置しか入っていないため、これをXMLのデータから取り出した緯度・経度に変換。領域木をそのまますべて出力するとSOTAのルールに満たない微小なピークもすべて出力されるため、極値とサドルの差が150m以上あるものを再帰的にすべて表示するようにしました。またパラメータでこの値を変更することで、ある領域で仮にSOTAの100mルールを採用した場合にどのようになるかシミュレーションも出来るようにしました。

次に国土地理院から10mメッシュの標高データを入手します。全国すべてを入手するとXMLファイルにして4800弱、ファイルサイズにすると60GB弱のデータになります。これでは使い勝手が悪いのでpythonXMLパーザでデータを読み込み後、二次メッシュのサイズで8x8の領域にまとめてバイナリで保存、これでやっと1領域が200Mbyte程度のファイルが170個弱までコンパクトにすることが出来ました。