O-mapの原図に国土地理院ベクトルタイルと標高タイルを使う

オリエンテーリングマップ(O-map)の原図用に「国土地理院ベクトルタイル」と「標高タイル」をQGISでダウンロードしてOpenOrienteering Mapperにインポートする方法を紹介します。

基盤地図情報ダウンロードサービスが止まっているので、基盤地図情報が無ければ国土地理院ベクトルタイルをダウンロードすればいいじゃない、というわけです。

国土地理院ベクトルタイルについて

ざっくり言って基盤地図情報のようなオープンデータの地理情報で、特徴として、Web地図でリアルタイムに表示されることを目的としたファイル形式・配信方法が採用されています。

データの中身や利用規約 (基盤地図情報と同じように、出典記載で加工して再配布OK) 等については公式情報を参照してください。

準備

国土地理院ベクトルタイルの表示・ダウンロードに使うため、QGIS本体(バージョン3.14以上。それ以前はベクトルタイル未対応)と、QGISプラグイン「GSI-VTDownloader」、「ElevationTile4JP」をあらかじめインストールしてください。

まず国土地理院ベクトルタイルを触ってみる

理解のためにいったんベクトルタイルを本来の使い方で触ってみます。興味ない人は飛ばしていいです。

国土地理院ベクトルタイルのレイヤを追加する

  1. メニューバーから[レイヤ] > [レイヤを追加] > [ベクタタイルレイヤを追加]をクリックします。

  2. ソース型に「サービス」を選択して、[新規]>[新規一般接続…]を開き、以下内容を入力して[OK]をクリックします。

  3. 右下の[追加]でレイヤを追加し、[Close]でデータソースマネージャを閉じます。

  4. 世界地図のズームレベルで日本だけ小さく表示されてくるのでマウス操作で拡大します。

地物情報を確認してみる

  1. メニューバーから[ビュー] > [地物情報を表示]をクリックします。

  2. マウスで選択した地物の情報が「地物情報結果」パネルに表示されるようになるので、地図上でいろいろクリックして地物情報を表示し、「データ仕様」や「地物等の属性一覧」などと突き合わせて国土地理院ベクトルタイルのデータの中身を確認します。

レイヤのスタイル設定を試す

  1. メニューバーから[ビュー]>[パネル]>[レイヤ]でレイヤパネルを表示します。

  2. レイヤパネルの「国土地理院ベクトルタイル」を右クリックして[プロパティ]でレイヤプロパティを開きます。

  3. 左メニューから「シンボロジ」を選択します。

  4. [+]アイコンをクリックし、「塗りつぶし」を選択します。

  5. 追加された行の「レイヤ」列に「waterarea」と入力して下部の[Apply]をクリックし、水域の色が変わることを確認します。

  6. 追加した行を選択した状態で[+][-]の右に並んだ編集アイコンをクリックして開いたシンボルセレクタで色を変更して、[Apply]で色が変わることを確認します。

  7. [+]アイコンで今度は「ライン」の行を追加し、「フィルタ」列を「ftCode=2701」と書き換え、シンボルセレクタで色や線の太さを変更して[Apply]で道路の中心線の表示に反映されることを確認します。

  8. データ仕様」や「地物等の属性一覧」を参考に、レイヤやフィルタでの対象の選択をいろいろ試してみてください。

国土地理院ベクトルタイルと標高タイルをダウンロードする

まず、前項で追加したベクトルタイルのレイヤは使わないので、右クリック>[レイヤを削除]してください。

背景地図を追加する

範囲選択をやりやすくするため、地理院タイルの標準地図を背景地図にしてみます。

  1. メニューバーから[レイヤ] > [レイヤを追加] > [XYZレイヤを追加]を開きます。

  2. [新規]をクリックして開き、以下内容を入力して[OK]をクリックします。

  3. 右下の[追加]でレイヤを追加し、[Close]でデータソースマネージャを閉じます。

国土地理院ベクトルタイルをダウンロードする

  1. 背景地図を見ながら地図を移動、拡大・縮小し、ダウンロードしたい範囲全体が画面に表示されるようにします。

  2. メニューバーから[Web] > [GSI-VT-Downloader] > [GSI-VT-Downloader] を開きます。

  3. Source-layerでダウンロードするレイヤを選択します。基盤地図情報からO-mapを作るときのファイル選択と同じように選べばいいです。

  4. Zoomlevelでズームレベルを選択します。ズームレベルが低いと総描で地物が省略されてしまうので基本的には最大の数字を選べばいいです。鉄道だけズームレベルを最大から1つ下げた「15」にして線路の中心線以外の細かい情報を含まないようにする、といったこともできます。

  5. [表示領域で実行]をクリックしてダウンロードします。表示領域を動かさずに、必要なレイヤすべてに操作を繰り返します。

標高タイルをダウンロードする

  1. メニューバーから[プラグイン]>[ElevationTile4JP]>[ElevationTile4JP]を開きます。

  2. 標高タイルズームレベルに最大の14を選択し、任意のファイル名をつけてダウンロードします。

等高線を作成する

  1. メニューバーから[ラスタ]>[抽出]>[等高線(Contour)…]を開きます。

  2. 「入力レイヤ」にダウンロードした標高タイルのレイヤを指定します。

  3. 「等高線の間隔」に、出力したい等高線間隔を入力します。ここで5メートルと25メートルの等高線をそれぞれ出力して主曲線、計曲線にしてもいいですが、今回、1メートル間隔の等高線を出力して、レイヤにフィルタをかけてあとで変更できるようにします。

  4. 実行をクリックすると等高線レイヤが作成されます。

  5. レイヤパネルで等高線レイヤを右クリックして[フィルタ]を開きます。

  6. 「ELEV%5=0」(5で割ったときの余りが0)というフィルタを設定して主曲線にします。

  7. メニューバーから[レイヤ]>[レイヤを複製]します。

  8. 「ELEV%25=0」(25で割ったときの余りが0)というフィルタを設定して計曲線にします。

レイヤをエクスポートする

  1. レイヤパネルでそれぞれのレイヤを右クリックし、[エクスポート]>[新規ファイルに地物を保存]を選択します。

  2. 「形式」に「ESRI Shapefile」 を選択 (好みがあれば違ってもOK) 、ファイル名に任意のファイル名を選択して保存します。下部の「保存したファイルを地図に追加する」はレイヤが増えてややこしくなるのでチェックを外します。(レイヤが増えることよりもいちいち外すことのほうが面倒な場合は外さなくてOK)

OpenOrienteering Mapperにインポートする

CRTファイルを用意する

OpenOrienteering Mapperでファイルをインポートするとき、記号の置き換えルールをテキストで書いたCRT(相互参照テーブル)ファイルというものを用意することで、記号が割り当てられた状態でオブジェクトを追加できます。

例として私の作ったCRTファイルを載せます。
↓の文字列をメモ帳などに貼り付けて「.crt」という拡張子をつけて保存してください。(公式ドキュメントにも書いてありますが、証明書ファイルとまぎらわしい拡張子です。)

# 等高線
101 ftCode = 7351 OR ftCode = 7352 OR ftCode = 7353

# 砂礫地
210 ftCode = 7403

# 水域面
301.1 ftCode = 5000

# 水涯線
## 河川
301.4 ftCode = 5201 OR ftCode = 5202 OR ftCode = 5203
## 湖池
301.4 ftCode = 5231 OR ftCode = 5232 OR ftCode = 5233
## 海岸線
301.4 ftCode = 5101 OR ftCode = 5102 OR ftCode = 5103

# 一条河川
304 ftCode = 5301

# 枯れ川
306 ftCode = 5302

# 湿地
307.1 ftCode = 7401

# 道路縁
## 道路-通常部-通常部
501.2 ftCode = 2201 OR ftCode = 2241 OR ftCode = 2204 OR ftCode = 2244
## 道路-通常部-橋・高架
501.2 ftCode = 2203 OR ftCode = 2243
## 道路-庭園路-通常部
501.2 ftCode = 2221 OR ftCode = 2251 OR ftCode = 2224
## 道路-庭園路-橋・高架
501.2 ftCode = 2223

# 広い道路
## 幅員区分5.5m-13m未満。トンネルを除外。
502 rnkWidth = 2 AND ftCode != 2704 AND ftCode != 2714
## 幅員区分13m以上19.5m未満。トンネルを除外。
502 rnkWidth = 3 AND ftCode != 2704 AND ftCode != 2714
## 幅員区分19.5m以上。トンネルを除外。
502 rnkWidth = 4 AND ftCode != 2704 AND ftCode != 2714

# 道路
## 幅員区分 3m未満。徒歩道・石段・トンネルを除外。
503 rnkWidth = 0 AND NOT ftCode ~= 272 AND NOT ftCode ~= 273 AND NOT ftCode ~= 4
## 幅員区分 3m以上5.5m未満。石段・トンネルを除外。
503 rnkWidth = 1 AND NOT ftCode ~= 273 AND NOT ftCode ~= 4

# 徒歩道
505 ftCode = 2721 OR ftCode = 2722 OR ftCode = 2723

# 電車。地下部分・索道を除外
509 ftCode = 8201 AND railState != 2 AND railState != 3 AND NOT rtCode ~= 40206

# 索道・送電線
510 rtCode ~= 40206 OR ftCode = 8202

# 建物
521.3 ftCode = 3101 OR ftCode = 3102 OR ftCode = 3103

# 無壁舎
522.1 ftCode = 3111 OR ftCode = 3112

# パイプライン
528 ftCode = 5321

# 階段
532 ftCode = 2731 OR ftCode = 2732 OR ftCode = 2733


QGISでエクスポートしたファイルをOpenOrienteering Mapperにインポートする

以前書いたnoteの画像の使いまわしで、若干表示が違います。

ファイルを一つずつインポートしていきます。

  • メニューバー > ファイル > インポート を開き、読み込むファイルを選択します。

  • 記号マッピング > CRTファイルを開く… から、用意したCRTファイルを選択し開きます。

  • 置換ルールが表示されることを確認し、OKでインポートを開始します。

  • 残りのファイルに対しても同じことを繰り返します。

CRTファイルのルールに当てはまらない地物は未定義のままインポートされるので、必要なものは手動で割り当てるか、CRTファイルを修正してください。

QGISでエクスポートした等高線もCRTファイルにルールがないので未定義でインポートされます。手動で記号を割り当ててください。

不要な未定義のままのオブジェクトは、記号ウィンドウで「この記号のオブジェクトをすべて選択する」で選択してDeleteキーでまとめて削除できます。

国土地理院ベクトルタイルには、基盤地図情報にない道路中心線が含まれています(残念ながら道路面は無し)。上に挙げたCRTファイルでは道路中心線と道路縁を両方インポートしますが、簡易作図するときには道路縁を捨てて道路中心線だけ使うようにすれば塗りつぶす手間が省けたりします。


とりあえず以上です。 

この記事が気に入ったらサポートをしてみませんか?