OpenStreetMap データおよび ESRI Shape データの入手と切り出し
【概要】GIS(地理情報システム)で利用する地図データの入手方法を解説する。OpenStreetMap データと ESRI Shape データを対象に、Planet.osm、GEOFABRIK、OpenStreetMap API v0.6、QGIS サンプルデータセットからのダウンロード方法と、osmium-tool を用いたデータ切り出し手順を、Windows パソコンで動作する範囲で説明する。
【本資料の前提】
- 動作環境:Windows パソコンで動作する手順のみを扱う。GPU の有無は本資料の作業に影響しないため問わない。Linux などの前提知識は必要としない。
- データ処理ツール:OSM データの切り出しには osmium-tool を用いる。
.osm.pbfを直接・高速に扱え、Windows で利用できるためである。同種のツールである osmosis(Java製)は、低速で圧縮ファイルの扱いが煩雑なため、本資料では代替として扱う。 - ファイル形式:入手から切り出し、QGIS での表示まで、
.osm.pbf形式を基本とする(OpenStreetMap API v0.6 のみ.osm(XML)を出力する)。
【目次】
用途に応じた入手方法の選択
- 全世界のデータが必要な場合 → Planet.osm
- 特定の国・地域のデータが必要な場合 → GEOFABRIK
- 小範囲のデータのみ必要な場合 → OpenStreetMap API v0.6
- GIS ソフトウェアの学習目的 → QGIS サンプルデータセット(ESRI Shape 形式)
OpenStreetMap データの構成要素
OpenStreetMap データは、node、way、relation の3種類の要素で構成され、これらを組み合わせて地理情報を表現する。
- node(ノード): 緯度・経度で表される点
- way(ウェイ): 複数の node を順序付けて接続した線または領域
- relation(リレーション): 複数の node、way、relation をグループ化したもの
全世界データ:Planet.osm
Planet.osm は、OpenStreetMap の全世界の地図データを1つのファイルにまとめたものである。全データを一括で入手できるが、ファイルサイズが大きい(.osm.pbf 形式でも 80GB 前後)。特定の国・地域だけが必要な場合は、次節の GEOFABRIK を利用する。
サーバ負荷への配慮: 多くの利用者が共有するサーバであるため、不必要なダウンロードは避けること。
- Planet.osm の Web ページを開く https://wiki.openstreetmap.org/wiki/Planet.osm
- ミラーサイトからダウンロードする。本家サイトへの負荷軽減のためミラーサイトを利用する。利用可能なミラーの一覧は日本語版のページ https://wiki.openstreetmap.org/wiki/JA:Planet.osm で確認できる。
国・地域別データ:GEOFABRIK
GEOFABRIK は、OpenStreetMap データを大陸別・国別に分割して配布している。必要な地域のデータのみをダウンロードできるため、Planet.osm より効率的である。
以下のファイル形式から選択できる。
- .osm.pbf: Protocol Buffer 形式。ファイルサイズが小さく処理が高速で、後述の切り出しでもそのまま扱える
- .osm.bz2: XML 形式を bzip2 で圧縮したもの。多くのツールで読み込めるが、.osm.pbf より大きく処理も遅い
- .shp.zip: ESRI Shape 形式。QGIS などの GIS ソフトウェアで直接利用できる(提供範囲は国・地域によって異なる)
サーバ負荷への配慮: 多くの利用者が共有するサーバであるため、不必要なダウンロードは避けること。
- ライセンス条項を確認する。データを利用する前に、https://www.geofabrik.de/data/download.html に記載のライセンス条項を確認する。OpenStreetMap データは ODbL(Open Database License、利用時に出典表示が必要なオープンデータライセンス)の下で提供されている。
- データをダウンロードする。アジア地域のデータは以下の URL から入手できる。日本のデータは「japan」のリンクからたどれる。
https://download.geofabrik.de/asia/
本資料では、ここで入手した .osm.pbf(例:japan-latest.osm.pbf)を次節「データ切り出し」の入力として使い、切り出した結果を QGIS で表示する流れで進める。
必要範囲のデータ切り出し(Windows)
GEOFABRIK や Planet.osm からダウンロードした .osm.pbf から、必要な範囲(市町村など)のみを抽出できる。ここでは Windows 上で動作する osmium-tool を使用した方法を説明する。osmium-tool は .osm.pbf を直接処理でき、圧縮・展開の中間操作を必要としない。
osmium-tool の入手
osmium-tool は OpenStreetMap データを処理するコマンドラインツールである。Windows では事前にインストールが必要で、パッケージ管理ツール conda(プログラムやその動作環境をまとめて導入・管理する仕組み)を使う。conda が未導入の場合は、先に Miniforge(conda を含む軽量な配布版。https://conda-forge.org/download/ から Windows 用インストーラを入手)をインストールする。導入後、スタートメニューから「Miniforge Prompt」を開き、以下を実行する。
conda install -c conda-forge osmium-tool
「Miniforge Prompt」で osmium --version を実行し、バージョンが表示されれば利用できる。
切り出し範囲の座標を調べる
切り出しには、対象範囲を囲む座標(bounding box=境界ボックス。範囲を囲む長方形を、西・南・東・北の4辺の経度・緯度で表したもの)が必要である。座標は openstreetmap.org の地図画面右側「エクスポート」で範囲を指定すると読み取れる。JOSM(Java OpenStreetMap Editor)でも地図上で座標を確認できる。
同じ bounding box を表す座標は、ツールによって書式が異なる。指す方角は同じであり、対応は次のとおりである。
| 方角 | 意味 | osmium / API の並び順 | osmosis のキー |
|---|---|---|---|
| 西端 | 経度(小さい方) | 1番目 | left |
| 南端 | 緯度(小さい方) | 2番目 | bottom |
| 東端 | 経度(大きい方) | 3番目 | right |
| 北端 | 緯度(大きい方) | 4番目 | top |
osmium と API は「西,南,東,北」の順にカンマ区切りで並べ、osmosis は left/bottom/right/top のキーで個別に指定する。
コマンドの構文
「Miniforge Prompt」を開き、.osm.pbf を置いたフォルダに移動してから実行する。osmium extract は、--bbox オプションに「西,南,東,北」を経度・緯度のカンマ区切りで指定し、入力ファイルから範囲を切り出して出力ファイル(-o で指定)に書き出す。
osmium extract --bbox 西,南,東,北 japan-latest.osm.pbf -o 出力ファイル.osm.pbf
コマンド操作の例1(福岡県糸島市)
「Miniforge Prompt」を開き、.osm.pbf を置いたフォルダに移動してから実行する。ファイルサイズによっては処理に数分かかる。
osmium extract --bbox 130.0355,33.4643,130.2938,33.6690 japan-latest.osm.pbf -o itoshima-city.osm.pbf
コマンド操作の例2(福岡県福岡市)
「Miniforge Prompt」を開き、.osm.pbf を置いたフォルダに移動してから実行する。
osmium extract --bbox 130.2037,33.4308,130.5053,33.7147 japan-latest.osm.pbf -o fukuoka-city.osm.pbf
コマンド操作の例3(大分県臼杵市)
「Miniforge Prompt」を開き、.osm.pbf を置いたフォルダに移動してから実行する。
osmium extract --bbox 131.6271,32.9533,131.9218,33.2336 japan-latest.osm.pbf -o usuki-city.osm.pbf
切り出した .osm.pbf は、次節で扱う QGIS で開いて確認できる。
補足:osmosis を使う場合
Java 製ツール osmosis でも切り出しは可能だが、Windows で .osm.bz2 を扱う際は標準入力の指定方法が特殊で、osmium-tool より低速である。osmosis を使う場合、標準入力に対して Windows では file=- ではなく file=CONIN$ を指定する(OpenStreetMap Wiki に記載)。.osm.pbf を直接読めば中間操作は不要になる。下記は .osm.pbf を入力とする例である。
osmosis --read-pbf file=japan-latest.osm.pbf --bounding-box left=130.0355 bottom=33.4643 right=130.2938 top=33.6690 --write-xml file=itoshima-city.osm
小範囲データ:OpenStreetMap API v0.6
OpenStreetMap API v0.6 を使用すると、別途ツールを介さず、指定した範囲のデータを直接取得できる。小範囲のデータを手軽に入手したい場合に適している。得られる形式は .osm(XML)であり、.osm.pbf とは異なるが、QGIS は両形式とも読み込める。
サーバ負荷への配慮: 多くの利用者が共有するリソースであるため、頻繁なダウンロードは避けること。
このダウンロードには範囲・件数の制限がある。bounding box は概ね 0.5 度 × 0.5 度以内で、取得できるノード数にも上限がある。広範囲のデータが必要な場合は GEOFABRIK を利用する。
取得用の URL は、bbox パラメータに「西,南,東,北」の経度・緯度をカンマ区切りで指定する(前節の対応表と同じ並び順)。下記の URL をブラウザのアドレスバーに入力すると、その範囲の .osm(XML)データがダウンロードされる。
https://api.openstreetmap.org/api/0.6/map?bbox=130.1879883,33.5219339,130.32119749999998,33.594031099999995
学習用 Shape データ:QGIS サンプルデータセット
QGIS は、本資料でデータ表示にも用いる無償の GIS ソフトウェアである。その QGIS が、操作を学ぶためのサンプルデータセット(Alaska dataset)を配布している。ESRI Shape 形式のデータが含まれており、ダウンロードと展開の後すぐに QGIS で開くことができる。前節までで切り出した .osm.pbf も、同じ QGIS で表示・確認できる。
- QGIS 公式サイト https://qgis.org/ を開く
- Download をクリックする
- Alaska の箇所の「download the dataset」をクリックする
- ダウンロードした zip ファイルを展開(解凍)する。Windows ではエクスプローラーで zip ファイルを右クリックし「すべて展開」を選ぶ
データセットの詳細は、展開後のフォルダ内にある README.html に記載されている。
関連情報
OpenStreetMap データは、Garmin 製 GPS 機器向けの形式に変換して利用することもできる。
Garmin 形式 https://wiki.openstreetmap.org/wiki/JA:OSM_Map_On_Garmin