本記事の内容
- AWSが提供するLambda(Python)にて、経緯度に基づくジオコーディング方法の一つであるGeoHash(ジオハッシュ)を扱う方法を記載した記事です。
- PythonベースのLambdaにてGeohashを扱う記事があまりなかったため、ライブラリーをLambdaに組み込み利用する方法をまとめました。
実施環境
- Windows 10
- Chrome
- AWS
説明の流れ
- ジオハッシュライブラリーのダウンロード
- Lambdaデプロイ用のzipファイル作成
- Lambdaでの動作確認
1. ジオハッシュライブラリーのダウンロード
PythonのGeoHashライブラリーは、ここからダウンロードする。
ダウンロードしたファイル「python-geohash-0.8.5.tar.gz」を解凍すると以下のようなファイルが入っていた。
READMEファイル内の赤字を読むと、「geohash.py」をプログラムにコピーすることでGeohashが利用できることが分かる。
2. Lambdaデプロイ用のzipファイル作成
Lambdaへのプログラムのデプロイは、AWSのマネジメントコンソールを利用することにしたためZipファイル化しておく必要がある。
以下のようLambdaで実行するプログラム(lambda_function.py)とgeohashのライプラリー(geohash.py)を横並びに置いた状態で圧縮しZipファイルにする。
以下のlambda_function.zipファイルをアップロードする。
実際のプログラムは以下の内容とする。
import geohash
def lambda_handler(event, context):
#東京駅をgeohashの精度9でエンコードする
geo_hash_value = geohash.encode(35.68158476986499, 139.76717844242972,9)
print(geo_hash_value)
return {
'statusCode': 200
}
こちらのサンプルコードでは、東京駅の位置情報をGeoHashにエンコードしている。
東京駅 緯度:35.68158476986499/経度:139.76717844242972
3. Lambdaでの動作確認
実際にLambdaでテスト実行すると以下のような結果が出力される。
9桁の値「xn76urxk7」が東京駅の緯度経度を精度9でエンコードしたGeoHashの値です。
この値を活用することでGeoHashによる位置の比較ができます。
Geohashの使い方は「位置情報データの扱い方(ジオハッシュとか)」や「位置情報を保存しよう(後編)」が参考になりますので、合わせてご確認ください。
本記事は以上です。
何かの手助けになれば嬉しいです。
参考文献
本記事の作成に当たり、以下の情報も参考にさせて頂きました。ありがとうございました。