この記事は、下記の記事に触発されて書きました
uMapとOverpass API(overpass turbo)を使ってOpenStreetMatsuyaマップを作る
Overpass API
OpenStreetMap の地理情報を取得するための API です。
取得した情報のライセンスはODbL です。
オープンソースライセンスと同様に、共有、創作、翻案が行えます。
参考 : オープンデータのライセンスを考える(9)ODbLの概要
牛丼店の地理情報を取得するクエリは下記のようになる
OSMサーバー?data=[out:json];node["amenity"="fast_food"]["cuisine"="beef_bowl"];out;
約600件 登録されている。
全国の牛丼店の店舗数は 4000 店らいしので、網羅率は!5%くらいです。
網羅率を上げるのは、皆さんの協力が必要です。
興味を持った人はこちらから。
ポケモンGOマッパーのためのOSM入門
取得範囲を指定していないので、台湾に2店ほどあるが、気にしないことに。
Google マイマップ に表示する
Google マイマップ に表示するために KML ファイルを用意します。
overpass turbo を使うと、KML ファイルが取得できる。
しかし、マーカーの情報が表形式になって見難い。
今回は、Python を使ってみました。
Json を解析する
python のjsonライブラリを使います。
import json
f = open('sample.json', 'r')
json_dict = json.load(f)
elements = json_dict["elements"]
for element in elements:
lon = element["lon"]
lat = element["lat"]
tags = element["tags"]
if "name" in tags:
name = tags["name"].encode('utf-8')
マーカーの情報を作成する
OSMのタグは多いので、どこまで対応するか悩ましい。
下記を参考にする。
if "branch" in tags:
branch = tags["branch"].encode('utf-8')
info += branch + LF
if "opening_hours" in tags:
opening_hours = tags["opening_hours"].encode('utf-8')
info += "営業時間: ".encode('utf-8') + opening_hours + LF
KML ファイルを作成する
python の simplekml ライブラリを使います。
simplekml : A Simple KML creator
import simplekml
kml = simplekml.Kml()
kml.newpoint( name=name, description=info, coords=[( lon, lat )] )
ソースコードの全体は下記に。
Google マイマップを作成する
下記からログインする。
KML ファイルをアップロードする。
作成した Google マイマップ