【AWSオンラインセミナーメモ】AWS における位置情報

 最初5~10分ほど聴けていないのですが、位置情報関連ウェビナーのメモです。(まだ動画リンクがないようなので、後日追記したいと思います。)

個人サマリ

位置情報を扱うときは GeoHash 形式を用いるのが王道

 GeoHash 知らなかった情弱でした。学んでいきます。

Geohash(ジオハッシュ)は、Gustavo Niemeyerがgeohash.orgというWebサービスを作成中に発明した経緯度に基づくジオコーディング方法の一つである。パブリックドメインになっている。階層的な空間データ構造であり、空間を分割していくことによって表現する。ジオハッシュは、任意の精度で表現できる、文字列の末尾を削っていくと徐々に精度が落ちる、といった特徴がある。そのため、近隣の2地点を表すコードは、似たような文字列から構成されることが多い。同時に、より多くの文字列が一致すれば、当該2点がより近いことを表す。

ジオハッシュ - Wikipedia より)

サービスごとに GeoHash 形式に対応しているかが異なる

 詳細は、後述のメモをご覧ください。私は、DynamoDB をデータストアとして利用し、コンピューティングは Python on Lambda で位置情報を扱っていたため、現在は GeoHash 形式は利用できないようです。

Open Data on AWS

 様々な位置情報関連データが提供されているようです。これを使って面白いことできないか考えてみたいです。

aws.amazon.com

以下、メモをそのまま貼り付けます。

アプリケーションから使う

  • ジオロケーション:API経由でサーバに位置情報を送信する
  • ジオフェンス:特定の範囲に入った時に通知する
  • 自動運転のサポート

地理情報を活用できる AWS のサービス

Geohash:空間をグリッド上のバケットに細分する緯度経度のgeocodeシステム。Hash 情報として表す?

RDS(Aurora)

  • データストアとして
  • PostgreSQL は PostGIS というプラグインで位置情報クエリを処理可能。
  • MySQL は 5.6 から平面位置情報、5.7 から球面位置情報を扱うことができる。Aurora for MySQL はバージョンによって扱える情報に差異があるので注意。GEOMETRY型。Aurora はパフォーマンスチューニングを実施していて、MySQL 5.7 よりも最大2倍パフォーマンスが改善されている

ElastiCache

  • インメモリキャッシュとして
  • Redis 3.0 以上であれば、GeoHash を扱うことができる
  • フルマネージドで Redis クラスタを組むことができるので、高速&ハイスケールなデータストアを構築できる

Amazon Elasticsearch Service

  • Geo 型のクエリを扱うこともできる
  • Kibana の可視化までマネージドなサービスとして提供されている
  • IoT 用途など、大規模なデータストアとして使う場合は ElastiCache よりもこちらを選択する

DynamoDB

  • データストアとして
  • Java ライブラリから GeoHash を使う(Java 以外からは GeoHash を利用できないので注意)

Amazon Athena

  • S3 上のデータに直接クエリを投げる
  • Geo 系のクエリにも対応しているので、S3に CSV や JSON で集計したデータを配置し、それに対して Lambda や EC2 からクエリを投げる
  • トランザクションの並列度が少なく、大規模なデータを扱うときのアーキテクチャとして採用する

QuickSight

  • BIツールとして
  • 最近、地理情報の可視化ができるようになったので、国コードや ZIP コード、緯度経度をグラフ化することができるようになった

Open Data on AWS

  • AWS が無料で提供しているデータで、S3上に配置されている
  • 地理情報データ、ランドサットの画像データなどがあり、多数の会社・組織にデータを提供してもらっている

その他

 データストアの使い分け(相対評価)の表を提供してくれていて便利そう

アーキテクチャパターン

IoTアプリケーション

  • AWS IoT を用いて、IoT ハードウェアからの情報を収集したり、状態管理したりする
  • AWS IoT のルールエンジンによってバックエンドの処理を振り分ける。Lambda を発火させたり、S3にデータストアしたり。

サーバレスモバイル・アプリケーション

  • Cognito で認証
  • Mobile Analytics を利用
  • Rest API を API Gateway + Lambda + DynamoDB の王道パターンで
  • ファイルストアは S3、Push は SNS で

GISアプリケーション配信(地図タイルの生成)

  • Lambda や EC2 でバッチ的に画像生成し、S3にストア
  • CloudFront で配信する画像のキャッシュ

事例

ナビタイムジャパン社

  • 交通ビックデータを用いて、走行実績を見える化
  • データクエリに Athena を利用している
  • 交通ビッグデータを S3 に配置し、Athena でデータレイクを構築している

モンサント社(農家:作物の栽培管理)

  • いつどこに作物を植えると効率がいいかを、Geo データを使って分析・活用
  • データストアにRDS, S3?

HERE社(自動運転)

  • 車の位置や動きをリアルマッピング(3Dの可視化?)

QA

「IoTアプリケーションのバックエンドでSNSを噛ますのはなぜ?」

  • 非同期的に処理するケース?
  • アプリケーションの要件によって採用できることがあるかも?