overpassを使ってサンフランシスコの緯度経度半径1km以内にバーガーキングがあるかを探す

どうしようもなくバーガーキングを食べたくなったあなたへ。

サンフランシスコにバーガーキングを目当てに旅行に行く人はなかなか居ないとは思いますが、 そんな人向けに。

実装

import overpass
import urllib

# proxy設定する人
## proxies = {
##     "http":"http://hogehoge",
##     "https":"http://hogehoge"
## }
api = overpass.API()
api = overpass.API(endpoint="https://overpass-api.de/api/interpreter",timeout=600)

## api.proxies=proxies

# サンフランシスコの緯度経度から半径1km以内のfast food
response = api.get('node(around:1000.0,37.77493,-122.419416)["amenity"="fast_food"];out;')
for data in response["features"]:
    if 'name' in data["properties"] and data["properties"]["name"] == "Burger King":
        print(data)

結果

2件ありました。

{"geometry": {"coordinates": [-122.421096, 37.7831831], "type": "Point"}, "id": 432817342, "properties": {"addr:city": "San Francisco", "addr:housenumber": "819", "addr:street": "Van Ness Avenue", "amenity": "fast_food", "name": "Burger King", "source": "survey"}, "type": "Feature"}
{"geometry": {"coordinates": [-122.421096, 37.7831831], "type": "Point"}, "id": 432817342, "properties": {"addr:city": "San Francisco", "addr:housenumber": "819", "addr:street": "Van Ness Avenue", "amenity": "fast_food", "name": "Burger King", "source": "survey"}, "type": "Feature"}

解説

overpassというライブラリがあり、

openstreetmapAPIpythonからコールできるようにしたもの。

python-overpy.readthedocs.io

よくわからないクエリ方式(overpass QL)もしくは、XMLでリクエストを投げると、JSONでデータを返してくれる。

今回はサンフランシスコの緯度経度と1km以内のfastfoodというoverpass QLを投げて、

そのなかのバーガーキングを表示しました。