
Amazon AthenaでAmazon S3のデータを空間検索してQGISで可視化してみました
詳細として下記について説明します。
- 事前準備
- クエリ保存先を設定
- テーブル作成
- 空間検索
事前準備
Amazon Athenaで利用するGISデータを準備します。今回は事前にQGISで4種類のサンプルデータを作成しました。
ポイント・ライン・ポリゴンのGISデータをそれぞれCSV(TSV形式)で準備しました。

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

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

今回のサンプルデータをGitHubに登録したのでぜひご利用ください。
sample data
これで事前のGISデータの準備は完了です!S3バケット名にgeojsonという名称が入っていますが今回はCSV(TSV形式)を利用します。元々はGeoJSON形式で手軽に利用しようとしたのですが、現状ではGeoJSON形式は非対応(Hive JSON SerDeという形式はあるみたいです)なので今回はCSV(TSV形式)の中にWKTを定義しています。
クエリ保存先を設定
Amazon Athenaでクエリ保存先を設定する方法です。
事前に任意の名称でクエリ保存先のS3バケットを準備します。

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

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

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

「管理」をクリック。

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

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

これでクエリ保存先の設定は完了です!
テーブル作成
Amazon Athenaでテーブルを作成する方法です。
Athenaのエディタ → テーブルとビュー作成 → 「S3バケットデータ」をクリック。

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

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

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

これでテーブルの作成は完了です!
空間検索
最後に、Amazon Athenaで空間検索をする方法を紹介します。
ポリゴンから重心のポイントを取得してみます。結果データをダウンロードします。
SELECT "geojson-database"."geojson-polygon-table"."name", ST_Centroid("geojson-database"."geojson-polygon-table"."wkt") FROM "geojson-database"."geojson-polygon-table";
ダウンロードしたデータをQGISで可視化すると処理結果データを表示確認できます。

ラインから始点のポイントを取得してみます。結果データをダウンロードします。
SELECT "geojson-database"."geojson-line-table"."name", ST_StartPoint(ST_GeometryFromText("geojson-database"."geojson-line-table"."wkt")) FROM "geojson-database"."geojson-line-table";
ダウンロードしたデータをQGISで可視化すると処理結果データを表示確認できます。

ポリゴン内に含まれるポイントのみを取得してみます。結果データをダウンロードします。
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");
ダウンロードしたデータをQGISで可視化すると処理結果データを表示確認できます。

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");
ダウンロードしたデータをQGISで可視化すると処理結果データを表示確認できます。


Amazon Athenaを利用することでS3に登録したデータを空間検索することが可能になります!
Amazon AthenaとAmazon S3とQGISについて、他にも記事を書いています。よろしければぜひ。
tags - Amazon Athena
tags - Amazon S3
tags - QGIS
- 参考文献
 Amazon Athena
 Amazon S3
 QGIS
 
         
                
