Drafts

@cm3 の草稿置場 / 少々Wikiっぽく使っているので中身は適宜追記修正されます。

Python の geocoder ライブラリ

geocoding シリーズに関連して。

前回「geonames に頼りすぎるの良くないなと思いました。」と書いていたので、URIに解決するのではなく、緯度経度に解決する方向で基本をおさらいしてみようと思った。

そこで、geocoder 1.8.0 : Python Package Indexを見て、試してみたら Ajka の方は一発。試したコードは以下、引数で地名を与える。

import geocoder
import sys

geo_str = sys.argv[1]
g = geocoder.google(geo_str)
print(geo_str+": "+str(g.latlng))
print(g.geojson)

google の geocoding は API 認証だと思っていたのに、Rate Limit だって書いてあるし、確かに動いちゃったのだが、

あたりを見るに、2500/日くらいまではこのプログラムで行けるということか。Ciudad Valdeluz の方は google だとダメ。

でも実は上のコードじゃなくてAPI Overview — geocoder 1.9.0 documentationに書いてあるように Command Line Interface があって geocode "Ciudad Valdeluz, Spain" ってやるだけで、

{"region": "Castilla-La Mancha", "lng": -3.10888328101075, "importance": 0.4, "place_rank": "22", "quality": "residential", "state": "Castilla-La Mancha", "ok": true, "location": "Ciudad Valdeluz, Spain", "accuracy": 0.4, "provider": "osm", "place_id": "81769962", "bbox": {"southwest": [40.5823602, -3.1193332], "northeast": [40.5977205, -3.1003217]}, "status_code": 200, "confidence": 7, "osm_id": "103564909", "postal": "19141", "type": "residential", "village": "Yebes", "status": "OK", "address": "Ciudad Valdeluz, Yebes, Guadalajara, Castilla-La Mancha, 19141, Espa\u00f1a", "encoding": "utf-8", "lat": 40.5882919, "country": "Espa\u00f1a", "osm_type": "way", "county": "Guadalajara"}

という結果が Open Street Map から返ってきた。カタカナでやったらさすがに失敗。何も指定しないと osm から取得するようになっている模様。--provider bing とか加えることで取得先を変更できる。

次回からはこういう情報も加えていきたいと思います。