Amazon AthenaでAmazon S3のデータを空間検索してQGISで可視化してみました
詳細として下記について説明します。
事前準備
Amazon Athenaで利用するGISデータを準備します。今回は事前にQGISで4種類のサンプルデータを作成しました。
ポイント・ライン・ポリゴンのGISデータをそれぞれCSV(TSV形式)で準備しました。
追加で100万ポイントのGISデータをCSV(TSV形式)で準備しました。
4種類のCSV(TSV形式)を任意の名称でS3に保存しました。
今回のサンプルデータをGitHubに登録したのでぜひご利用ください。
これで事前のGISデータの準備は完了です!
S3バケット名にgeojsonという名称が入っていますが今回はCSV(TSV形式)を利用します。元々はGeoJSON形式で手軽に利用しようとしたのですが、現状ではGeoJSON形式は非対応(Hive JSON SerDeという形式はあるみたいです)なので今回はCSV(TSV形式)の中にWKTを定義しています。
クエリ保存先を設定
Amazon Athenaでクエリ保存先を設定する方法です。
これでクエリ保存先の設定は完了です!
テーブル作成
Amazon Athenaでテーブルを作成する方法です。
Athenaのエディタ → テーブルとビュー作成 → 「S3バケットデータ」をクリック。
テーブル名・データベース選択・対象のS3バケット指定・データ形式・カラム設定。プレビュー確認 → 「テーブルを作成」をクリック。
今回は4つの任意のテーブルを作成しました。対象のテーブル → 「テーブルをプレビュー」をクリック。
これでテーブルの作成は完了です!
空間検索
最後に、Amazon Athenaで空間検索をする方法を紹介します。
ポリゴンから重心のポイントを取得してみます。結果データをダウンロードします。
SELECT "geojson-database"."geojson-polygon-table"."name",
ST_Centroid(ST_GeometryFromText("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(ST_GeometryFromText("geojson-database"."geojson-point-table"."wkt"), ST_GeometryFromText("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(ST_GeometryFromText("geojson-database"."geojson-randompoint-table"."wkt"), ST_GeometryFromText("geojson-database"."geojson-polygon-table"."wkt"));
ダウンロードしたデータをQGISで可視化すると処理結果データを表示確認できます。
Amazon Athenaを利用することでS3に登録したデータを空間検索することが可能になります!
Amazon AthenaとAmazon S3とQGISについて、他にも記事を書いています。よろしければぜひ
tags - Amazon Athena
tags - Amazon S3
tags - QGIS
やってみたシリーズ
tags - Try