OpenStreetMap のデータから任意のエリアを抜き出した時のメモ その2

先日のOpenStreetMap のデータから任意のエリアを抜き出した時のメモを読んでくださった識者の方から、 ogr2ogr だけでも切り出せるよという情報を頂いたのでやってみました。
こっちの方が圧倒的に簡単で早く済みます。

シェープファイルのダウンロードは終わっているものとして、ogr2ogr を使えるようにすれば OK。

# apt-get install gdal-bin

前回はクエリの中に入れた緯度経度を ogr2ogr の -clipdst オプションに渡します。

$ ogr2ogr -s_srs EPSG:4326 -f "ESRI Shapefile" ./kawagoe.shp -clipdst 139.377436 35.837584 139.558384 35.962266 roads.shp

これでシェープファイルを矩形に切り出すことが出来ました。
とても簡単です。

切り出し結果の比較

なお、切り出しの結果は前回とちょっと異なります。

前回の方法で PostGIS から切り出した場合、指定した矩形の中と外に跨るウェイがそのまま取り出されるので、ヒゲが生えたようなデータになります。

f:id:k-side:20150428094711p:plain

対して、ogr2ogr で切り出すと、指定した矩形の中と外に跨るウェイは、矩形の境界でカットされた形でデータになりました。

f:id:k-side:20150428094710p:plain

オプションを詳しく調べていませんが、どちらの切り出し方でもオプションの設定などで出力されるデータの形状が変わるかもしれません。
そのうち見てみましょうかね。

-clipdst オプションでは、切り出しの範囲としてポリゴンを指定できるようなので、矩形ではなく都市の形状に切り出したい場合にはポリゴンを指定してもイケるようです。

$ ogr2ogr -s_srs EPSG:4326 -f "ESRI Shapefile" ./kawagoe_fit.shp -clipdst ./kawagoe_polygon.shp ./kawagoe.shp

一度矩形に切り出した kawagoe.shp から、都市の形状ポリゴンのみを格納した kawagoe_polygon.shp の形状に切り出して kawagoe_fix.shp を作らせています。
最初から roads.shp を使うと、複雑な処理を大きなファイルで行うことになるのでとても時間がかかるようだったので、切り出す大きさによっては一度矩形に切ってからもう一度 ogr2ogr にかけました。
ハイパワーな CPU が欲しい…。

f:id:k-side:20150428110718p:plain

osm ファイルや pbf を切り抜く場合

前回・今回と OpenStreetMap のデータをシェープファイルとしてダウンロードしたものを利用しましたが、osmosis を使うと osm ファイルや pbf ファイルを切り出せるようです。
いつか試してみましょう。