ishii-akihiro’s blog

いろいろ試したことやバグ対応の作業履歴を残していきます。

pythonライブラリでジオコーディング

概要

geopy という python のライブラリを見つけたので、
試しにジオコーディングしてみます。

ドキュメントはこちら。
Welcome to GeoPy’s documentation! — GeoPy 1.17.0 documentation

手順の概要

  1. Excel からジオコーディング対象の場所リストを読み込む
  2. geopyでジオコーディングして緯度経度を取得する
  3. Excel に出力する

環境

  • python 3.6.5
  • Jupyter Notebook

手順

1. コマンドプロンプトで geopy をインストール

pip install geopy

ちなみに、Jupyter Notebook からでも、
先頭に!をつければpip installできます。 qiita.com

2. 場所リストを入力したExcelを用意

普通は住所からジオコーディングしますが、
地図上で検索できるなら施設名称でもいけそうです。
今回は、観光スポットを10箇所記載したExcelファイルを用意しました。

  • 観光スポット一覧.xlsx
    f:id:ishii-akihiro:20180914200029p:plain

ちなみに、観光スポットはぐるたびを参考にしました。
全国の名所・観光スポット 人気ランキング│観光・旅行ガイド - ぐるたび

3. python で処理を実行

途中結果を Jupyter で確認しつつ、
ジオコーディングして結果をout.xlsxに出力します。

ジオコーディングに使うロケータはいくつか選べるようですが、
ここではオープンストリートマップのNominatimを使いました。

https://wiki.openstreetmap.org/wiki/JA:Nominatim

4. 出力結果の確認

「熱海温泉」はぼんやりしすぎで位置は特定できませんでしたが、
ほかは結果が取得できました。
f:id:ishii-akihiro:20180914200732p:plain

あとがき

Nominatim のほかに Google V3 も試しましたが、
ジオコーディングを短時間に2回以上で行うとエラーになります。
ライセンスとか設定する必要があるんですかね(適当)。
Nominatim では10件流せましたが、何回までできるかは調べていません。

地図上に示せれば、旅行計画に役立ちそうですね。