QGISでDEMから等高線を作ってGoogleマップに追加する

この記事は1年以上前に書かれました。
内容が古くなっている可能性がありますのでご注意下さい。


先日、道の整備されていない山中で石切場の調査をしていたところ、目の前の地形と地図から読み取れる地形が大きく異なっていました。そこで、QGISを使って数値標高モデル(DEM:Digital Elevation Model)から高精細な等高線のみの地図を作成し、Googleマップに重ね合わせて表示することを思いつきました。
結果はこのようになります。


数値標高モデルのデータは国土地理院の基盤地図情報サイトから入手します。詳しくはこちらの記事を参考にして下さい。
数値標高モデルからGeoTIFF形式への変換は、株式会社エコリスの基盤地図情報 標高DEMデータ変換ツールを使用しました。QGIS用のプラグインfgddemImporterは、QGIS 3.xにはまだ対応していないためです。
標高DEMデータ変換ツールの使用方法については株式会社エコリスのサイトを参考にして下さい。

ダウンロードした数値標高モデルのデータはたくさんの.xmlファイルですが、変換ツールを使用するとそれらが一旦.tifファイルに変換され、さらにすべての.tifファイルが結合されたmerge.tifファイルが作成されます。

そこで、はじめにmerge.tifファイルを[レイヤ]→[レイヤの追加]→[ラスタレイヤの追加…]メニューで読み込みます。

次に、[ラスタ]→[抽出]→[等高線…]メニューを選択します。

入力レイヤとして「merge」を選択し、等高線の間隔は「5.0」に変更します。
[実行]ボタンをクリックすると「等高線」レイヤが作成されます。

作成されたレイヤのCRSはJGD 2011(EPSG:6668)ですので、WGS84(EPSG:4326)に変換します。
[ベクタ]→[データ管理ツール]→[レイヤの再投影]を選択し、入力レイヤに「等高線」、変換先CRSを「EPSG:4326」を指定します。

[実行]ボタンをクリックすると、[再投影された]レイヤが作成されます。
このレイヤをKML形式に変換すれば良さそうですが、Googleマイマップにアップロードできるファイルには最大で5MBというサイズ制限があります。

そこで、必要な部分のみを切り取ります。
そのために、切り取る領域を定義したシェープファイルを作成します。[レイヤ]→[レイヤの作成]→[新規シェープファイルレイヤ…]を選択します。

ジオメトリタイプは「ポリゴン」、CRSは「EPSG:4326」を指定します。ここではファイル名は「clip」としています。

次に、切り取る領域のポリゴンを作成します。あらかじめ背景地図を読み込んでおき、[レイヤ]→[編集モード切替]メニューで編集モードに入り、[編集]→[ポリゴン地物を追加]メニューでポリゴンを追加します。以下の例では、神奈川県にある大山周辺の矩形を作成しています。

ポリゴンができたら編集を終了してシェープファイルを保存します。

次に、[ベクタ]→[空間演算ツール]→[クリップ]メニューを選択します。

入力レイヤに「再投影された」等高線のレイヤを指定し、オーバーレイレイヤには「clip」レイヤを指定します。ここでは、2つのレイヤのCRSが一致していることが重要です。

[実行]ボタンをクリックすると、クリップ用ポリゴンの形に切り取られた等高線のレイヤが作成されます。

このレイヤをKML形式で保存します。

今回の用途ではフィールドのエクスポートは不要なのでチェックを外しています。

次に、作成したKMLファイルからGoogleのマイマップを作成します。
GoogleにログインしてGoogleマップを開き、左上の三本線のメニューボタンをクリックします。

メニューが表示されたら「マイプレイス」を選択します。

「マイプレイス」から、「マイマップ」を選択します。

「地図を作成」をクリックします。

「インポート」をクリックして、作成したKMLファイルを選択します。

インポートに成功すると、KMLファイルの内容が地図上に表示されます。線の色や太さを変えることもできます。

作成したマイマップには名前を付けておきます。
モバイル端末のGoogleマップアプリでマイマップを読み込めば完成です。

道の整備されていない山中では役に立ちそうです。ただし、電波が届くという条件が付きます。