2015-12-05

OpenStreetMap データのダウンロードと抽出

任意のバウンディングボックスをカバーする範囲の OpenStreetMap (OSM) のデータは、簡単な HTTP API によってダウンロードすることができます。また、FME は OSM のデータフォーマットをサポートしているので、ダウンロードしたデータを読み込み、加工したり他のフォーマットで保存したりすることも可能です。
ここでは、特定の市町村をカバーする2次メッシュ区画の単位で OSM データをダウンロードし、そのデータから node, highway フィーチャーを抽出してメッシュ区画単位でグループ化されたデータセットに整えるところまでを自動化するワークスペース例を掲げます。
FME 2015.1.3.1 build 15573

=====
1. 全国の市区町村ポリゴンデータ(フォーマットは任意)から特定の市区町村のポリゴンを選択し、その領域をカバーする2次メッシュ区画の単位で OSM データをダウンロードする。
2. ダウンロードしたデータから node, highway フィーチャーを読み込み、メッシュ区画でクリップする。
=====

FMEワークスペース例
















(全国の市区町村ポリゴンデータの読込部分は省略)
Tester: 特定の市区町村のポリゴンを抽出
JpStdGridAccumulator (FME Store): 市区町村の領域をカバーする2次メッシュ区画 (矩形ポリゴン) を作成
BoundsExtractor: メッシュ区画の東西南北端の座標値を抽出
AttributeCreator: メッシュごとのデータダウンロード用の URL (HTTP API) と保存先ファイルパスを作成
HTTPCaller: OSM データ (XML) をダウンロードしてディスクに保存
(データのダウンロードはここまで)

FeatureReader: 保存した OSM データから node, highway フィーチャーを読み込む
Clipper: メッシュ区画ごとにフィーチャーをクリップ
FeatureTypeFilter: node フィーチャーと highway フィーチャーに振り分ける

結果: 千葉県柏市の領域をカバーする2次メッシュ区画でクリップした OSM highway ラインフィーチャー
背景オレンジ色のポリゴンは柏市の領域, 赤色のラインは2次メッシュ区画境界
左: 全域 (2次メッシュ5区画), 右: 一部拡大





















OSM データダウンロード用の URL については、次のページに記載されている XAPI を使用しました。
JA:データのダウンロード (原文: Downloading data)

引用:
==========
The API is limited to bounding boxes of about 0.5 degree by 0.5 degree and you should avoid using it if possible. For larger areas you might try to use XAPI, for example:
http://overpass.osm.rambler.ru/cgi/xapi_meta?*[bbox=11.5,48.1,11.6,48.2]
==========

OSM に限らず、ウェブ上で公開されているデータは、URL や API (および、認証を要するサイトの場合は認証に必要なパラメーター) を知っていれば HTTPCaller や FTPCaller によってダウンロードを自動化することができます。
正しい URL 等を指定した場合でも、サーバー、ネットワーク、あるいは通信回線の都合によってダウンロードに失敗することがありますが、その場合でもワークスペースの実行は停止することはなく、<Rejected> ポートからエラーの内容等を格納した属性を持ったフィーチャーが出力されるので、失敗の理由等を確認することができます。

上記ワークスペース例で抽出した全てのフィーチャーは2次メッシュコードを属性として持つので、2次メッシュ区画単位で任意のフォーマットの GIS データとして保存することができます。

=====
AttributeCreator で URL を作成する部分と HTTPCaller は、OSMDownloader (FME Store トランスフォーマー) で置き換えることができます。

サーバーに連続してリクエストを発行する場合、前回のリクエストによるダウンロード完了と次のリクエスト発行の間にわずかな間をおかないと失敗する可能性が高くなります。その場合には、HTTPCaller (またはOSMDownloader) の前に Decelerator を挿入し、各リクエストの発行を若干遅らせることを検討してください。

0 件のコメント:

コメントを投稿