「OpenStreetMapから鉄道路線データを落とせない」と愚痴っていたら、社内の人から「OSMに鉄道データ入っていますよ」と言われて、愕然とした件
という訳で、今日は、OpenStreetMapX.jl をダウンロードして色々やっていたのですが、よく分からりませんでした。というか、何ができるのか、が今一つ肚に落ちてこないのです。
で、こちらの路線は諦めて、とにかく鉄道データが取れる手段を探しました。
OpenStreetMapのデータから鉄道だけを抽出してGeoJSONで出力する方法
C:\Users\ebata>docker run -t -i stefda/osmium-tool /bin/bash
/bin , /usr/bin, /usr/local/bin のどこかで当るだろうと探りを入れていたら、
root@e87f198ccc07:/usr/bin# ls o*
objcopy objdump od odbcinst ogdi-config openssl osage osmium
root@e87f198ccc07:/usr/bin# osmium
Usage: osmium COMMAND [ARG...]
/usr/binで当たりました。
で、作業用のディレクトリを探していたら、/tmpがあったので、ここにファイルを持ち込んで作業することにしました
2つ目の、別のWindowsのコマンドプロンプトを上げて、今動かしているコンテナを調べました
C:\Users\ebata>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e87f198ccc07 stefda/osmium-tool "/bin/bash" 12 minutes ago Up 12 minutes wonderful_lumiere
で、ローカルからDockerコンテナの/tmpに直接コピーしました。
C:\Users\ebata>docker cp kanto-latest.osm.pbf wonderful_lumiere:/tmp
一つ目のコマンドプロンプトに戻って、ファイルが可能されているか確認しました。
root@e87f198ccc07:/# cd tmp
root@e87f198ccc07:/tmp# ls
kanto-latest.osm.pbf
ちゃんと入っていました。パスも通っているようですので、
root@e87f198ccc07:/tmp# which osmium
/usr/bin/osmium
そのまま、/tmpの中で作業しました
root@e87f198ccc07:/tmp# osmium tags-filter kanto-latest.osm.pbf w/railway -o kanto-railway-latest.osm.pbf
[======================================================================] 100%
root@e87f198ccc07:/tmp# ls
kanto-latest.osm.pbf kanto-railway-latest.osm.pbf
root@e87f198ccc07:/tmp# osmium export kanto-railway-latest.osm.pbf -o kanto-railway-latest.json
root@e87f198ccc07:/tmp# ls
kanto-latest.osm.pbf kanto-railway-latest.json kanto-railway-latest.osm.pbf
2つ目のコマンドプロンプトを立ち上げて、dockerコンテナから、ローカルに、完成したjsonファイルを送り出します。
C:\Users\ebata\docker-osmium-tool>docker cp wonderful_lumiere:/tmp/kanto-railway-latest.json .
C:\Users\ebata>lsDockerfile README.md kanto-latest.osm.pbf kanto-railway-latest.json work
見事に鉄道だけが抽出されています。
さて、今回はLRTを中心とした宇都宮市をカバーする地域の交通機関を切り出します。
【食べログ作れる? 】 OpenStreetMap から Osmiumで飲食店の位置情報を取得してGeoJSONに出力してみたを参照して、
$ osmium extract --bbox 左上の経度,左上の緯度,右下の経度, 右下の緯度 -o 出力したいファイル名.pbf 元のファイル名.osm.pbf
から、
$ osmium extract --bbox 139.76675736787732, 36.659949299138, 140.1596765021647, 36.47004171587971 -o utunomiya-lrt.osm.pbf kanto-latest.osm.pbf
として切り出してみます。
root@80e1a2d0dc02:/tmp# osmium extract --bbox 139.76675736787732, 36.659949299138, 140.1596765021647, 36.47004171587971 -o utunomiya-lrt.osm.pbf kanto-latest.osm.pbf
Error parsing command line: too many positional options have been specified on the command line
あれ、コンマと空白がダメだったかな?
root@80e1a2d0dc02:/tmp# osmium extract --bbox 139.76675736787732,36.659949299138,140.1596765021647,36.47004171587971 -o
utunomiya-lrt.osm.pbf kanto-latest.osm.pbf
Need LEFT < RIGHT and BOTTOM < TOP in --box/-b option.
うむ、 では、36.659949299138 と 36.47004171587971 を入れかえて、再度挑戦
root@80e1a2d0dc02:/tmp# osmium extract --bbox 139.76675736787732,36.47004171587971,140.1596765021647,36.659949299138 -o utunomiya-lrt.osm.pbf kanto-latest.osm.pbf
[======================================================================] 100%
成功したっぽいです。
root@80e1a2d0dc02:/tmp# osmium tags-filter utunomiya-lrt.osm.pbf w/railway -o utunomiya-railway-latest.osm.pbf
[======================================================================] 100%root@80e1a2d0dc02:/tmp# osmium export utunomiya-railway-latest.osm.pbf -o utunomiya-railway-latest.json
では、ここから、2つ目のコマンドプロンプトから、
C:\Users\ebata\docker-osmium-tool>docker cp serene_shirley:/tmp/utunomiya-railway-latest.json .C:\Users\ebata\docker-osmium-tool>docker cp serene_shirley:/tmp/utunomiya-lrt.osm.pbf .
としました。
utunomiya-railway-latest.json の表示結果はこちらです。
データ量も、関東全域と比較すると、11%程度になりました。
ところで、osmファイルと、osm.pbfファイルの違いって何だろう?