Python初心者が地名や住所から座標を割り出すジオコーディングを試してみます。(Windows10上)
■Python
今回のPythonのバージョンは、「3.8.2」を使用しています。
■Geocoding APIを利用して住所を特定する
私がまずはじめに行ったのは、Google Maps Platform、Google Cloud Platformに登録し、有効にしたGeocoding APIを利用し、キーワード(建物名前)から住所を特定することをやります。なお、Google Maps Platform、Google Cloud Platformの登録、Geocoding APIの有効化についてはこちらで公開しています。
有効したGeocoding API、Maps API Keyを利用し、こちらの記事を参考にコードを書いてみます。
■コード
import requests #Geocoding APIのURL Url = "https://maps.googleapis.com/maps/api/geocode/json" #パラメータの設定 params={} params["key"] = "あなたの取得したAPIキー" #取得したAPIキーをセット params["address"] = "通天閣" params["language"] = "ja" #リクエスト結果 print(requests.get(Url, params).json())
今回は著者の住んでいるのが大阪なので、”address”に「通天閣」を設定し住所を特定してみます。
なお、Geocoding APIのURLについては、GoogleGeocoding APIのDeveloper Guideが参考になると思います。(Geocoding API Request Formatなど)
■実行
今回のコードを「googlemaps-test.py」というファイルで保存し、コマンドプロンプトから実行してみます。
実行してみると「 ‘formatted_address’: ‘日本、〒556-0002 大阪府大阪市浪速区恵美須東1 丁目18−6’」といった結果が表示されているので、住所が取得できました。
■Geocoding APIを使わずに「Geocoder」というライブラリを使って住所を特定してみる
Google Maps Platform、Google Cloud Platformに登録し、有効にしたGeocoding APIを利用して住所を特定するというのをやってみたのですが、Python製のライブラリには、Geocoding API、API Keyを使わずに「Geocoder」というライブラリで住所などの情報を引き出すことができますので、これも試してみます。参考したページ。
まず、Windows10上のPython3.8.2に、「Geocoder」というライブラリをインストールするために、pipを使います。
pip install geocoder
コマンドプロンプトに上記を入力してENTERキーを押します。
Python3.8.2にGeocoderのライブラリがインストールされます。
インストールされた後は、下記のコードを実行してみます。
■コード
import geocoder location = "通天閣" ret = geocoder.osm(location, timeout=5.0) print(ret.address)
通天閣という場所(location)の住所(address)を割り出したいので「ret.address」と記述します。
参考したページ:https://astropengu.in/posts/18/
■実行
今回のコードを「geocoder-test.py」というファイルで保存し、コマンドプロンプトから実行してみます。
実行すると、「通天閣, 新世界市場, 恵美須西二丁目, 恵美須東一丁目, 浪速区, 大阪市, 大阪府, 556-0002, 日本 (Japan)」という結果が表示されました。
■JavaScriptの書き方に寄せているjson形式で情報を取得してみる。
■コード
import geocoder location = "通天閣" ret = geocoder.osm(location, timeout=5.0) print(ret.json)
json形式でも住所などの情報を取得してみますので、「ret.json」に変更しています。
■実行
先程と同じく「geocoder-test.py」というファイルで保存し、コマンドプロンプトから実行してみます。
実行すると、「{‘accuracy’: 0.49889540333139504, ‘address’: ‘通天閣, 新世界市場, 恵美須西二丁目, 恵美須東一丁目, 浪速区, 大阪市, 大阪府, 556-0002, 日本 (Japan)’, ‘allotments’: ‘恵美須東一丁目’,…..」といったjson形式の結果が表示されました。
■Geocoderというライブラリを利用して引き出した情報をCSVファイルへ書き込み
■コード
import csv import geocoder location = "通天閣" ret = geocoder.osm(location, timeout=5.0) #CSVファイルの書き込み with open('geocoder.csv', 'w') as f: writer = csv.writer(f) writer.writerow(ret) #書き込み完了メッセージ表示 print('CSVファイルへの書き込みが完了しました。')
Geocoderというライブラリを利用して引き出した情報を「geocoder.csv」というCSVファイルへ書き込みを行い、完了した際に「CSVファイルへの書き込みが完了しました。」というメッセージを表示するプログラムを作ってみました。
■実行
「geocoder-test.py」というファイルで保存し、コマンドプロンプトから実行してみます。
実行してみると、「CSVファイルへの書き込みが完了しました。」が表示されました。
CSVファイルが新規作成されているかカレントディレクトリを確認してみると、「geocoder.csv」というCSVファイルが作成されていました。
「geocoder.csv」というCSVファイルを確認してみると、Geocoderというライブラリを利用して引き出した情報がCSVファイルへ書き込みされました。
■疑問点
初心者の私がGeocoderライブラリをインストールした際に感じた疑問であるが、pipを経由してGeocoderライブラリをインストールする際に、
WARNING: The script geocode.exe is installed in ‘C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\Scripts’ which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use –no-warn-script-location.
WARNINGが表示された。WARNINGが表示されたもののGeocoderは問題なく動いている。
WARNINGが発生したことに関しての問題解決の参考URL:


コメント