📍
地理情報取得のためのYahoo! APIの利用方法
出店戦略のヒント
店舗出店戦略は一般的に「どこに出店するべきか・するべきでないか」という問いに集約されます。その際に検討される出店判断軸は、経営者・担当者の「カンや経験」に基づくことが多く、属人的な知識であり再現性にも課題があります。
そこで既存店舗の地理的条件と売上の間の関係を分析することで、店舗出店時に考慮すべき様々な判断軸を具体的に考察します。
企業が提供するサービスや顧客層によって、立地戦略の重要性は異なります。
例 コンビニ:集中出店(配送コスト優位性)など
モデル的に考えるとは・・
「店舗売上は地理情報で説明することできる」という考え方です
◯地理情報の例
最寄駅
・最寄駅からの距離
・最寄駅の乗降客数
周辺
・周辺の競合店舗数
・周辺のスーパー・コンビニ数(様々)
店舗
・店舗面積
・店舗築年数
・店舗家賃
道路
・店舗前車道の本数
etc…
周囲に何があるかとかはAPIが利用できる。今回はYahoo! のAPIを利用しました。
利用例①
# Yahoo! APIを使ったジオコーディング 住所から緯度・経度を出力
import requests
import json
def make_LatLog(query):
# APIエンドポイントのURL
url = 'https://map.yahooapis.jp/geocode/V1/geoCoder'
# 送信するデータ
params = {
'appid': ClientID,
'query': query,
'output': "json"
}
try:
response = requests.get(url, params=params)
response.raise_for_status()
data = response.json()
if 'Feature' in data:
feature = data['Feature'][0]
coordinates = feature['Geometry']['Coordinates']
latitude, longitude = map(float, coordinates.split(","))
return latitude, longitude # 緯度と経度をタプルで返す
else:
print(f"No coordinates found for {query}")
return None, None
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
return None, None
利用例②
次に緯度・経度を中心として半径〇〇m以内にある特定の店舗情報を取得することができる
def Count_Shop(lat, lon, gc, dist=0.5, sort="geo"):
# APIエンドポイントのURL
url = 'https://map.yahooapis.jp/search/local/V1/localSearch'
# 送信するデータ
params = {
'appid': ClientID,
'lat': lat,
'lon': lon,
'dist': dist,
"gc":gc,
# 'sort': sort,
'output': "json"
}
try:
response = requests.get(url, params=params)
response.raise_for_status()
data = response.json()
return data["ResultInfo"]["Total"]
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
return None
出力例です。
{'ResultInfo': {'Count': 10,
'Total': 21,
'Start': 1,
'Status': 200,
'Description': '',
'Copyright': '',
'Latency': 0.1},
'Feature': [{'Id': '10000042156',
'Gid': 'sCtG0OacIRg',
'Name': 'ペインクリニカルセンター',
'Geometry': {'Type': 'point', 'Coordinates': '139.7271072,35.73030323'},
'Category': ['あん摩マッサージ指圧師,カイロプラクティック・整体'],
'Description': '',
'Style': [],
'Property': {'Uid': 'c11c354fc390a333a2bf2fa92284d1af9803f30d',
'CassetteId': 'a8bcd9450c541521bba8260a9170f8a7',
'Yomi': 'ペインクリニカルセンター',
'Country': {'Code': 'JP', 'Name': '日本'},
'Address': '東京都豊島区南大塚3丁目38-9',
'GovernmentCode': '13116',
'AddressMatchingLevel': '6',
'Tel1': '03-3987-1146',
'Genre': [{'Code': '0403', 'Name': 'マッサージ、整体、治療院'},
{'Code': '0403003', 'Name': '整体、マッサージ'},
{'Code': '0403004', 'Name': 'カイロプラクティック'}],
'Station': [{'Id': '22562',
'SubId': '2256201',
'Name': '大塚(東京都)',
'Railway': 'JR在来線',
'Exit': '南口',
'ExitId': '3411',
'Distance': '233',
'Time': '2',
'Geometry': {'Type': 'point', 'Coordinates': '139.728656,35.731314'}},
{'Id': '23004',
'SubId': '2300401',
'Name': '向原(東京都)',
'Railway': '都電荒川線',
'Exit': '出口',
'ExitId': '5272',
'Distance': '246',
'Time': '3',
'Geometry': {'Type': 'point', 'Coordinates': '139.725101,35.729064'}},
{'Id': '22563',
'SubId': '2256301',
'Name': '大塚駅前',
'Railway': '都電荒川線',
'Exit': '出口',
'ExitId': '3413',
'Distance': '298',
'Time': '3',
'Geometry': {'Type': 'point', 'Coordinates': '139.729323,35.731646'}}],
'SmartPhoneCouponFlag': 'false'}},
...
今回は地理情報分析時のデータ収集のtipsでした!
TODO
・変数が揃ってきたら主成分分析してみる⇨周辺や店舗が似ている店舗群を抽出、比較
別PJ
・顧客ペルソナを作成。(変数を作成する際に、併売・利用を推定できる, 施策立案時に便利)
・併買分析(アトリビューション分析)
memo
普通に考えてコンビニ・スーパーは誰でも行くし、コンビニが多ければ顧客が来るとかって見込めないですよね。
Discussion