ユーザ用ツール

サイト用ツール


planet_osm_japan_update

planet.osm の日本部分だけを効率よく更新する方法

2015-01-03 時点で,ここに書いてある情報は「実験中」です.

planet.osm とは何か?

http://wiki.openstreetmap.org/wiki/JA:Planet.osm に説明があります通り,planet.osm とは,OpenStreetMap データベースのスナップショットです.編集履歴はありませんが,レンダリングの元になるデータの事と言って良いと思います.

ここでは,planet.osm から,日本のエリアだけを抽出し,またネットワークやマシン負荷がなるべく低い方法でデータを更新する方法を記載します.

手っ取り早い方法が既にあるのでは?

一番手っ取り早いのは,http://download.geofabrik.de/ から,日本のOSMデータをダウンロードする事です.

しかし,日本のOSMデータは,2015年1月3日現在で,.osm.bz2 形式のもので約1.4GByteあります..bpf 形式でも約 930MByte あります. これを毎回ダウンロードすると時間がかかりますし,変更の無い部分も毎回ダウンロードする事になるので,できるだけ効率の良い方法で日本の planet.osm が出来ないかを実験します.

前知識

一言で “planet.osm” と言っても,複数のファイル形式があります.

  1. XML 形式のもの(拡張子は .osm)
    これは,純粋なテキストファイルで,XML 形式で構成しています.OpenStreetMap では,このXML形式のものを,bzip2 で圧縮している事が多く,その場合の拡張子は “.osm.bz2” が付けられます.
  2. BPF 形式のもの(拡張子は .bpf)
    http://wiki.openstreetmap.org/wiki/PBF_Format にその説明があります(英語).どうも Google protocol buffers がベースのようです.これは完全なバイナリですが,後述する osmconvert 等のツールで扱うことが出来ます.
  3. o5m 形式のもの(拡張子は .o5m)
    http://wiki.openstreetmap.org/wiki/O5m にその説明があります(英語).“.osm” 形式と “.bpf” 形式の中間にあるようです.

BPF 形式のファイルは,非圧縮状態でも .osm.bz2 よりも小さいファイルになるようですので,ここでは BPF 形式をメインに扱います.

前準備

  1. Linux マシン
    マシンスペックは,高ければ高いほど良いですが,私は Core i5 2.67GHz,RAM 8GByte で運用しています.HDD は 500GByte を2機入れています.HDD は多いければ多いほうが良いです.
  2. Linux ディストリビューション
    ここで記載する方法は,基本的にはどのディストリビューションでも動作するはずですが,私は Debian Wheezy amd64 をインストールしています.64bit OS であれば,RAM を増設すれば更に多くの RAM が使えます.私見ですが,planet.osm を扱うには,RAM が多ければ多いほうが良いと考えています.
  3. インターネット回線
    後述しますが,初回は大体 27GByte のファイルをダウンロードします.後はあまり大量のダウンロードはないです Linux マシンのパワーが主です.
  4. osmctools
    osmctools は,osmconvert や osmupdate と言うツールがあり,この実験ではこれらのツールを使用します.
    Debian Wheezy の場合,Debian Wheezy に osmctools を入れるの手順で,osmctools をインストールできます.

初回のダウンロード

初回では,以下のファイルをダウンロードします.

  1. planet-latest.osm.pbf
    http://planet.osm.org/ にアクセスし,pbf/ ディレクトリ以下にあります.2015年1月3日現在で,約 26GByte あります.
  2. planet-latest.osm.pbf.md5
    planet-latest.osm.pbf と同じディレクトリにあります.このファイルは planet-latest.osm.pbf のMD5ハッシュ値です.planet-latest.osm.pbf が正しくダウンロードできているかどうか,このMD5ハッシュ値と比較して下さい.
  3. Polygon Filter File
    http://download.geofabrik.de/asia/japan.html にアクセスして,japan.poly をダウンロードして下さい.これには,planet-latest.osm.pbf から日本部分だけを切り出す範囲の情報が入っています.

私のネットワーク環境は 100Mbps で,上記全てをダウンロードするのに概ね4時間ほどかかりました.

日本のOSMデータを抽出

必要なファイル全てを Linux マシンにダウンロード出来たら,以下のコマンドを実行します.

$ osmconvert -B=japan.poly -o=planet-japan-latest.osm.pbf planet-latest.osm.pbf

上記のコマンドを実行することで,全世界のデータが含まれている planet-latest.osm.pbf から,japan.poly で指定されている範囲のみを抽出して,planet-japan-latest.osm.pbf に保存します.

私が実験した時は,planet-latest.osm.pbf は約 27GByte のサイズですが,日本部分だけを抽出した planet-japan-latest.osm.pbf は約 900MByte です.この処理中の osmconvert の使用RAMサイズは,VSZ で概ね 1.7GByte くらい使っていました.

以降は,planet-japan-latest.osm.pbf を主に扱います.

日本のOSMデータを最新へ

osmconvert では,単にデータの抽出を行うのみで,OSMデータは既に最新のものがあるはずです.

OSMデータを最新へ更新するには,osmupdate コマンドを使います.

$ osmupdate -B=japan.poly -v planet-japan-latest.osm.pbf planet-japan-new.osm.pbf

上記のコマンドを実行すると,osmupdate が http://planet.osm.org/ にアクセスして,changesets をダウンロードして最新の情報へ更新し,planet-japan-new.osm.pbf に保存します.

osmupdate の詳しい利用方法は,http://wiki.openstreetmap.org/wiki/Osmupdate にあります.

BPF形式の planet.osm をXML形式に変換

BPF 形式の planet.osm はバイナリですので,ちょっとした確認には使いにくいのですが,osmconvert を使用するとXML形式に変換できます.

$ osmconvert planet-japan-latest.osm.pbf | more

osmconvert は,標準ではXML形式で標準出力に変換データを出力するので,more コマンドなどで結果を確認できます.

planet_osm_japan_update.txt · 最終更新: 2017-11-21 23:40 by tosihisa@netfort.gr.jp