OpenStreetMap(以下OSM)は、ユーザー主導で自由に編集・利用できる地図データとして非常に優れています。しかし、登山やハイキング、サイクリングといったアウトドア用途のルート検索では「標高情報」が欠落しているため、急勾配や山岳地域の経路選定に必要な高度差を考慮できず、推奨できません。そこで本記事では、OSMに標高データを組み込むための概要解説と「自前でデータを取得・組み込む」方法をステップバイステップでご紹介します。
標高データAPIの現状と課題
インターネット上には無料で利用できる標高データAPIがいくつか存在します。代表的なものを以下に挙げます(※APIリクエスト制限や有料プランへの誘導が多い点にご留意ください)。
- Google Maps Elevation API
- 無料枠あり。ただし1日あたり2,500リクエストまで。超過時は課金。
- Open-Elevation API
- 完全無料。ただしリクエスト遅延、運営不安定の報告あり。
- Mapbox Terrain-RGB
- 無料枠あり。高精度だが、商用利用ではプラン契約必須。
- USGS Elevation Point Query Service
- アメリカ国内限定。無料だが日本国内では未対応。
- OpenTopography
- 無料プランあり。リクエスト制限・APIキー取得が必要。
これらのAPIを利用すると手軽ですが、多くが利用規約やリクエスト制限に縛られ、継続運用コストや安定性に課題があります。そこで本記事では、API依存せず、自ら標高データを取得しOSMに組み込む手法を最終目標とします。
標高データの代表的提供元とその取得方法
国内における最も信頼性が高い標高データ提供元は国土地理院(GSI)の「基盤地図情報 数値標高モデル(DEM)」です。以下、主要な提供元との比較と、国土地理院を選ぶ理由をまとめます。
提供元 | データ精度 | 利用条件 | メリット | デメリット |
---|---|---|---|---|
Google Maps Elevation API | 高精度 | 無料枠制限、商用利用課金 | 開発者向けSDK豊富、信頼性高い | リクエスト制限、課金体系が複雑 |
Open-Elevation API | 中精度 | 完全無料 | APIキー不要、シンプル | 遅延・メンテ不安 |
Mapbox Terrain-RGB | 高精度 | 無料枠制限、商用利用課金 | カラーマップで可視化容易 | ライセンス条件厳格 |
国土地理院 DEM | 1m/5m/10m | 完全無料、商用・非商用問わず可 | 日本全国を公的機関が提供、最新データ | データサイズ大、取り扱いが煩雑 |
OpenTopography | 可変 | 無料枠制限、APIキー必要 | 多様なフォーマット対応 | 日本国内利用時やや不便 |
国土地理院を選ぶ理由
- 公的機関提供
データの信頼性・正確性が高い - ライセンス自由度
商用・非商用問わず再配布や加工が可能 - 更新頻度
最新の標高データが定期的に公開
国土地理院データ取得の手順
以下の手順で「基盤地図情報ダウンロードサービス」から数値標高モデルを入手します。

- ブラウザで「基盤地図情報ダウンロードサービス」
(https://service.gsi.go.jp/kiban/app/)にアクセス。 - 「基盤地図情報」の一覧から「数値標高モデル」を選択し移動。
- データ形式として1mメッシュ/5mメッシュ/10mメッシュを選択可能。
- ※本記事ではバランスの取れた5mメッシュを選択します。
- 地図上で埼玉県所沢市周辺を拡大し、スケールを2,000ピクセル程度に設定。
タイル番号「533953」をクリックしてダウンロードリストに追加。 - 「ダウンロード・解凍」ボタンを押下し、XML形式データ(100ファイル)が取得できることを確認。
- ダウンロードした100ファイルの中から「FG-GML-5339-53-01-DEM5A-20250214.xml」をテキストエディタで開く。
<gml:tupleList>
要素を探すと、33750個の標高データが並ぶリストが存在。
<gml:tupleList>のデータ構造と意味
<gml:tupleList>
には、5mメッシュの各格子点に対応する標高値が「空白区切り」の数値として格納されています。33750という数字は、縦225点 × 横150点のグリッドに相当し、以下のように配列されています。
- 並び順:
1行目の左上から右方向に150点分、
続いて2行目の左端から右方向に150点分、
…を繰り返して225行分。 - 解釈例:
- 最初の数値=タイル左上の標高(m)
- 150番目の数値=タイル上辺の右端標高
- 151番目=2行目左端の標高
5mメッシュタイルの面積計算
5mメッシュ1格子の面積:5m × 5m = 25㎡
タイル全体の格子数:33750点
→ タイル面積 = 25㎡ × 33750 = 843,750㎡(約0.844km²)
100ファイル分を用いると、所沢市を含むタイル群の合計面積を算出できます。
(例:東京多摩地域全体をカバーするエリアなど応用可能)
メッシュ解像度とサーバ要件
1mメッシュ
- データ量は5mメッシュの約25倍(225×5=1125行、150×5=750列→843,750点)
- 高性能なストレージ・メモリ・CPUが必須
5mメッシュ
- バランス良く用途が多いが、標高解析が多岐にわたる場合は尚更高性能環境が望ましい
10mメッシュ
- データ量はさらに軽量で、まずはこちらで運用実績を積み、パフォーマンス確認をおすすめします
- 次のステップアップとして5mメッシュ導入を検討
まとめ
本記事では、OSMに標高データを組み込むための前提知識と、国土地理院を活用したデータ取得手順、データ構造の解説、面積計算例、解像度別の運用提案までをご紹介しました。次回以降では、実際に取得したXMLデータをGeoJSONやタイル形式に変換し、Leaflet.js上で可視化するステップに進みます。
コメント