初めに
商圏分析ために、周辺店舗情報をAPIにて取得する。Google Maps PlatformのPlaceAPIでも同じことはできそうだが、無料で試せるYOLPにて取得してみた。
Yahoo!ローカルサーチAPI を使用し、中心位置を指定して円範囲で絞り込む。
リファレンスより引用
Yahoo!ローカルサーチAPI(以下、ローカルサーチAPI)は、店舗、イベント、クチコミ情報などの地域・拠点情報(POI)を検索するためのAPIです。
検索対象は、全国の店舗を網羅した電話帳データおよび店舗オーナーなどからの投稿データです。
環境
-Windows10
-Python 3.9.8
パラメータ
- appid => Yahooデベロッパー登録をし、取得する
- lat => 中心緯度(世界測地系)
- lon => 中心経度(世界測地系)
- output => 出力形式を指定(json/xml)
- date =>日時を指定(YYYYMMDDHHMI形式)
- distance => 中心からの距離(km)
- sort =>さまざまなパラメータにより算出した適合度順/距離(hybrid/geo)
- gc => 業種コード。今回は01「グルメ」にて取得。
本コードではyahoo_url.formatにてパラメータをセットしてください。
仕様による条件
- 検索距離は、最大20km
- 1回の取得件数は、最大100件
- 1条件の取得件数は、最大3000件(初期値を指定し取得する必要がある)今回のプログラムでは未対応
コード
# -*- coding:utf-8 -*-
import requests
import json
# Yahoo weather APIにて気象情報を取得する
yahoo_url = "https://map.yahooapis.jp/search/local/V1/localSearch?appid={appid}&lat={lat}&lon={lon}&dist={distance}&output={output}&sort={sort}&gc={gc}&start={start}"
yahoo_url = yahoo_url.format(appid="xxxxxxxxxxxxxxxxxxx",
lat="34.000000", lon="135.00000000", output="json", distance="5", sort="geo", gc="01")
# distance=km,gc=業種コード
yahoo_json = requests.get(yahoo_url).json()
print(yahoo_json)
終わりに
他にもいろんな条件を指定できるので、リファレンスを調べてみてください。
また業務で使用する際は、使用許諾等を確認する必要があります。(ガイドライン等)
諸注意が必要なものの、ぐるなびやゼンリン、電話帳データが無料で使用できるのは非常にありがたいことです。今後もこのAPIを使っていろんなことをしてみたいと思います。
参考
Google Maps Platformの方が掲載数が多そうですが、利用許諾の範囲が狭く、下記のようなGoogle Maps API 利用規約の遵守が必要です。
一部抜粋
10.5 知的財産権に対する制限
d.コンテンツをキャッシュ保存または保管しない。
本サービス以外で使用するコンテンツをプリフェッチ、キャッシュに保存、インデックス登録、または保管しないものとします。
10.4 本サービスおよびコンテンツの不正利用に対する制限
d.お客様の Maps API 実装に対する制限
Google マップを表示せずに本コンテンツを使用しない。Maps API ドキュメントで明示的に許可されていない限り、対応する Google マップなしでは Maps API 実装で本コンテンツを使用しないものとします。
つまり、CSV等での保存ができない。Google Map以外の地図と組み合わせての分析ができない。
などの制限があると言うことです。
Excelでリストを作ったり、GISでの分析ができないため、使用には注意が必要です。
参考サイト