API

【python】HeartRails Geo API 地域情報を取得

APIキー取得方法

本APIはAPIキーを必要としないAPIです。

APIの使い方

👇まずはお試しください。

Executeをクリックすることで結果を確認できます。

今回は主に7つのAPIについてご説明いたします。

#①エリア名の一覧を取得する API です。
https://geoapi.heartrails.com/api/json?method=getAreas

------------------------------------------------
#レスポンス例
{
  "response": {
    "area": [
      "北海道",
      "東北",
      "関東",
      "中部",
      "近畿",
      "中国",
      "四国",
      "九州"
    ]
  }
}

✅特にパラメータはなしで、地域情報の取得可能なエリア一覧を取得できます。

#②都道府県名の一覧を取得する API です。

https://geoapi.heartrails.com/api/json?method=getPrefectures?area=関東

--------------------------------------------------------------------------
#レスポンス例
{
  "response": {
    "prefecture": [
      "茨城県",
      "栃木県",
      "群馬県",
      "埼玉県",
      "千葉県",
      "東京都",
      "神奈川県"
    ]
  }
}

✅パラメータとしてはareaに①で取得できるエリアのいずれかを設定します。

#③ご指定のエリア、またはご指定の都道府県に存在する市区町村名の一覧を取得する API です。

https://geoapi.heartrails.com/api/json?method=getCities?area=関東?prefecture=東京

--------------------------------------------------------------------------
#レスポンス例

{
  "response": {
    "location": [
      {
        "city": "千代田区",
        "city_kana": "ちよだく"
      },
      {
        "city": "中央区",
        "city_kana": "ちゅうおうく"
      },
      {
        "city": "港区",
        "city_kana": "みなとく"
      },......
    ]
   }
}

✅パラメータにはareaとprefecture(県名)のどちらかが必須で設定が必要となります。

#④ご指定の都道府県、またはご指定の市区町村に存在する町域の情報の一覧を取得する API です。

https://geoapi.heartrails.com/api/json?method=getTowns?prefecture=東京?city=渋谷

--------------------------------------------------------------------------
#レスポンス例
{
  "response": {
    "location": [
      {
        "city": "渋谷区",
        "city_kana": "しぶやく",
        "town": "宇田川町",
        "town_kana": "うだがわちょう",
        "x": "139.697169",
        "y": "35.66163",
        "prefecture": "東京都",
        "postal": "1500042"
      },
      {
        "city": "渋谷区",
        "city_kana": "しぶやく",
        "town": "円山町",
        "town_kana": "まるやまちょう",
        "x": "139.694603",
        "y": "35.657514",
        "prefecture": "東京都",
        "postal": "1500044"
      },.....
    ]
   }
}

✅パラメータとしてはprefecture(県名)かcity(市町村名)のいずれかが必須となります。
対象の市町村情報(郵便番号、経度、緯度)を取得できます。

#⑤ご指定の郵便番号に合致する最寄駅の情報の一覧を取得する API です。

https://geoapi.heartrails.com/api/json?method=getStations?postal=1500000

--------------------------------------------------------------------------
#レスポンス例
{
  "response": {
    "station": [
      {
        "name": "明治神宮前",
        "kana": "めいじじんぐうまえ",
        "line": "東京メトロ千代田線",
        "y": 35.669071,
        "x": 139.703995,
        "postal": "1500001",
        "prev": "表参道",
        "next": "代々木公園",
        "prefecture": "東京都",
        "distance": 234.87156950097645
      }
    ]
  }
}

✅パラメータにはpostal(郵便番号)が必須です。
※郵便番号はハイフン(-)を除く7桁を入力します。

#⑥ご指定の郵便番号に合致する町域の情報の一覧を取得する API です。

https://geoapi.heartrails.com/api/json?method=searchByPostal?postal=1500000

--------------------------------------------------------------------------
#レスポンス例
{
  "response": {
    "location": [
      {
        "city": "渋谷区",
        "city_kana": "しぶやく",
        "town": "(その他)",
        "town_kana": "(そのた)",
        "x": "139.701466",
        "y": "35.668591",
        "prefecture": "東京都",
        "postal": "1500000"
      }
    ]
  }
}

✅パラメータにはpostal(郵便番号)が必須です。
※郵便番号はハイフン(-)を除く7桁を入力します。

#⑦ご指定の場所 (経度、緯度) 付近の町域の情報の一覧を取得する API です。

https://geoapi.heartrails.com/api/json?method=searchByGeoLocation?x=135.0?y=35.0

--------------------------------------------------------------------------
#レスポンス例
{
  "response": {
    "location": [
      {
        "city": "西脇市",
        "city_kana": "にしわきし",
        "town": "上比延町",
        "town_kana": "かみひえちょう",
        "x": "135.005213",
        "y": "35.001111",
        "distance": 491.18291654385115,
        "prefecture": "兵庫県",
        "postal": "6770039"
      },.....
    ]
  }
}

✅パラメータには経度(x)と緯度(y)の設定が必須となります。

 

pythonでの実装方法

今回は上記⑤の郵便番号から最寄りの駅を取得するAPIをpythonで実装してみます。

import requests

endpoint = "	https://geoapi.heartrails.com/api/json?method=getStations"

headers= {}
params={
    "postal":"1500000"
}

result = requests.get(endpoint, headers=headers, params=params)

#contentsをjsonから辞書型に変換
data = result.json()
print(data["response"]["station"][0]["name"]) 
print(data["response"]["station"][0]["line"]) 
print(data["response"]["station"][0]["prev"]) #一つ前の駅 
print(data["response"]["station"][0]["next"]) #一つ後の駅 

出力結果:

明治神宮前
東京メトロ千代田線
表参道
代々木公園

他APIとの組み合わせ例

以下で紹介しているAPIを用いれば経度/緯度を取得できることから以下の天気APIを活用することで最寄り駅の天気を取得するみたいなことも可能になります。

【python/javascript】OpenWeather 天気取得のAPIOpenWeatherAPIとは? OpenWeatherAPIとは、日本を含める世界の様々な地域の天候情報を取得できるAPIです。 ...