LoginSignup
0
0

More than 1 year has passed since last update.

AWS Lambda(Python)にてジオコーディングの一つであるGeoHash(ジオハッシュ)を扱う

Posted at

本記事の内容

  • AWSが提供するLambda(Python)にて、経緯度に基づくジオコーディング方法の一つであるGeoHash(ジオハッシュ)を扱う方法を記載した記事です。
  • PythonベースのLambdaにてGeohashを扱う記事があまりなかったため、ライブラリーをLambdaに組み込み利用する方法をまとめました。

実施環境

  • Windows 10
  • Chrome
  • AWS

説明の流れ

  1. ジオハッシュライブラリーのダウンロード
  2. Lambdaデプロイ用のzipファイル作成
  3. Lambdaでの動作確認

1. ジオハッシュライブラリーのダウンロード

PythonのGeoHashライブラリーは、ここからダウンロードする。

image.png

ダウンロードしたファイル「python-geohash-0.8.5.tar.gz」を解凍すると以下のようなファイルが入っていた。

image.png

READMEファイル内の赤字を読むと、「geohash.py」をプログラムにコピーすることでGeohashが利用できることが分かる。
image.png

2. Lambdaデプロイ用のzipファイル作成

Lambdaへのプログラムのデプロイは、AWSのマネジメントコンソールを利用することにしたためZipファイル化しておく必要がある。

以下のようLambdaで実行するプログラム(lambda_function.py)とgeohashのライプラリー(geohash.py)を横並びに置いた状態で圧縮しZipファイルにする。
image.png

以下のlambda_function.zipファイルをアップロードする。
image.png

実際のプログラムは以下の内容とする。

lambda_function.py
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
image.png

3. Lambdaでの動作確認

実際にLambdaでテスト実行すると以下のような結果が出力される。
image.png

9桁の値「xn76urxk7」が東京駅の緯度経度を精度9でエンコードしたGeoHashの値です。

この値を活用することでGeoHashによる位置の比較ができます。
Geohashの使い方は「位置情報データの扱い方(ジオハッシュとか)」や「位置情報を保存しよう(後編)」が参考になりますので、合わせてご確認ください。

本記事は以上です。
何かの手助けになれば嬉しいです。

参考文献

本記事の作成に当たり、以下の情報も参考にさせて頂きました。ありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0