dayjournal memo

Total 974 articles!!

Try #089 – Amazon AthenaでAmazon S3のデータを空間検索してQGISで可視化してみた

Yasunori Kirimoto's avatar

img




Amazon AthenaでAmazon S3のデータを空間検索してQGISで可視化してみました



詳細として下記について説明します。

  • 事前準備
  • クエリ保存先を設定
  • テーブル作成
  • 空間検索


事前準備

Amazon Athenaで利用するGISデータを準備します。今回は事前にQGISで4種類のサンプルデータを作成しました。


ポイント・ライン・ポリゴンのGISデータをそれぞれCSV(TSV形式)で準備しました。

img


追加で100万ポイントのGISデータをCSV(TSV形式)で準備しました。

img


4種類のCSV(TSV形式)を任意の名称でS3に保存しました。

img


今回のサンプルデータをGitHubに登録したのでぜひご利用ください。
sample data


これで事前のGISデータの準備は完了です!S3バケット名にgeojsonという名称が入っていますが今回はCSV(TSV形式)を利用します。元々はGeoJSON形式で手軽に利用しようとしたのですが、現状ではGeoJSON形式は非対応(Hive JSON SerDeという形式はあるみたいです)なので今回はCSV(TSV形式)の中にWKTを定義しています。



クエリ保存先を設定

Amazon Athenaでクエリ保存先を設定する方法です。


事前に任意の名称でクエリ保存先のS3バケットを準備します。

img


AWSマネジメントコンソール → Athenaをクリック。

img


「クエリエディタを詳しく確認する」をクリック。

img


「設定を表示」をクリック。

img


「管理」をクリック。

img


クエリ保存先のS3バケットを指定 → 「保存」をクリック。

img


クエリの保存先が設定される。

img


これでクエリ保存先の設定は完了です!



テーブル作成

Amazon Athenaでテーブルを作成する方法です。


Athenaのエディタ → テーブルとビュー作成 → 「S3バケットデータ」をクリック。

img


テーブル名・データベース選択・対象のS3バケット指定・データ形式・カラム設定。プレビュー確認 → 「テーブルを作成」をクリック。

img


今回は4つの任意のテーブルを作成しました。対象のテーブル → 「テーブルをプレビュー」をクリック。

img


取得したレコードが表示されます。

img


これでテーブルの作成は完了です!



空間検索

最後に、Amazon Athenaで空間検索をする方法を紹介します。


ポリゴンから重心のポイントを取得してみます。結果データをダウンロードします。

SELECT "geojson-database"."geojson-polygon-table"."name", ST_Centroid("geojson-database"."geojson-polygon-table"."wkt") FROM "geojson-database"."geojson-polygon-table";

img


ダウンロードしたデータをQGISで可視化すると処理結果データを表示確認できます。

img


ラインから始点のポイントを取得してみます。結果データをダウンロードします。

SELECT "geojson-database"."geojson-line-table"."name", ST_StartPoint(ST_GeometryFromText("geojson-database"."geojson-line-table"."wkt")) FROM "geojson-database"."geojson-line-table";

img


ダウンロードしたデータをQGISで可視化すると処理結果データを表示確認できます。

img


ポリゴン内に含まれるポイントのみを取得してみます。結果データをダウンロードします。

SELECT "geojson-database"."geojson-point-table"."name", "geojson-database"."geojson-point-table"."wkt" FROM "geojson-database"."geojson-point-table", "geojson-database"."geojson-polygon-table" WHERE ST_Within("geojson-database"."geojson-point-table"."wkt", "geojson-database"."geojson-polygon-table"."wkt");

img


ダウンロードしたデータをQGISで可視化すると処理結果データを表示確認できます。

img


100万件のポリゴン内に含まれるポイントのみを取得してみます。大量GISデータの検索でも高速にレスポンスされました。結果データをダウンロードします。

SELECT "geojson-database"."geojson-randompoint-table"."name", "geojson-database"."geojson-randompoint-table"."wkt" FROM "geojson-database"."geojson-randompoint-table", "geojson-database"."geojson-polygon-table" WHERE ST_Within("geojson-database"."geojson-randompoint-table"."wkt", "geojson-database"."geojson-polygon-table"."wkt");

img


ダウンロードしたデータをQGISで可視化すると処理結果データを表示確認できます。

img

img


Amazon Athenaを利用することでS3に登録したデータを空間検索することが可能になります!



Amazon AthenaとAmazon S3とQGISについて、他にも記事を書いています。よろしければぜひ。
tags - Amazon Athena
tags - Amazon S3
tags - QGIS



book

Q&A