Linuxサーバで気象情報を取得させようと今更ながらYahooのAPIで遊んでみた。

YahooAPIを利用するにはまずYahooデベロッパー登録する必要がある。

該当のAPIは以下のYahooデベロッパーネットワークのAPIを利用
気象情報API

上記のリクエストパラメータで必須の位置情報(coordinates)なのだが、
こちらの取得に際して説明は以下のよう「世界測地系」ということで数時間悩んだ。



ハマった点

上記の緯度経度の「世界測地系で指定してください。」でハマった。

上記はGoogleMapなどで住所検索すると緯度経度が表示されるが、そうではないかった。

結果、上記の緯度経度の取得方法が判明したので以下に記述しておく。


解決策

同じYahooの提供するAPIのジオコーダAPIを使って取得することで解決できた。
YahooジオコーダAPI


上記で取得したCoordinatesを以下の通り気象情報APIで使うことで取得できた!


以下、Pythonによる上記JSONデータの取得コード

#!/usr/bin/python3
import requests
import json
#
api_key = "&appid=[YUOR API-KEY]"
api_url1 = "https://map.yahooapis.jp/weather/V1/place?"
parm1 = "coordinates=[YOUR GEO-CODE]"
parm2 = "&output=json"
#
url = api_url1 + parm1 + parm2 + api_key
get_url_info = requests.get(url)
obj=json.loads(get_url_info.text)
#
#print(obj)
print(obj['Feature'][0]['Id'])
print(obj['ResultInfo']['Latency'])
print(obj['Feature'][0]['Name'])
print(obj['Feature'][0]['Geometry']['Type'])
print(obj['Feature'][0]['Geometry']['Coordinates'])
print(obj['Feature'][0]['Property']['WeatherAreaCode'])
#
for i in range(7):
    print(obj['Feature'][0]['Property']['WeatherList']['Weather'][i]['Type'])
    print(obj['Feature'][0]['Property']['WeatherList']['Weather'][i]['Date'])
    print(obj['Feature'][0]['Property']['WeatherList']['Weather'][i]['Rainfall'])

上記の実行結果は以下(※ジオコードは伏せています)

202004232340_xxx.xxxxx_xx.xxxxxx
0.00631
地点(xxx.xxxxx,xx.xxxxxx)の2020年04月23日 xx時xx分から60分間の天気情報
point
xxx.xxxxx,xx.xxxxxx
4310
observation
202004232340
0.0
forecast
202004232350
0.0
forecast
202004240000
0.0
forecast
202004240010
0.0
forecast
202004240020
0.0
forecast
202004240030
0.0
forecast
202004240040
0.0

今更YOLPのAPIネタを参考にする人はいないかもしれませんが、何かの役に立てば幸いです。