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