LoginSignup
2
1

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

Last updated at Posted at 2022-05-15

img

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


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


事前準備

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

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

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

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

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

これで事前の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(ST_GeometryFromText("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(ST_GeometryFromText("geojson-database"."geojson-point-table"."wkt"), ST_GeometryFromText("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(ST_GeometryFromText("geojson-database"."geojson-randompoint-table"."wkt"), ST_GeometryFromText("geojson-database"."geojson-polygon-table"."wkt"));

img

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

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



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

やってみたシリーズ :grinning:
tags - Try



book

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1