Db2地理空間分析
シリーズ
当記事は「1. Db2の地理空間分析機能」です。具体的な操作の前の基礎知識の説明です。
- Db2の地理空間分析機能
- 地理空間分析機能を有効にする
- JGD2011座標系の設定
- SHAPEファイルのインポート
- 緯度・経度情報をインポート
- DBeaverでDb2の地理空間情報を表示してみる
- 空間処理変数を使ってみる
1. Db2の地理空間分析機能
Db2の地理空間分析機能はDb2 Spatial Analyticsとして以下にドキュメントがあります:
https://www.ibm.com/docs/ja/db2/11.5?topic=data-db2-spatial-analytics
簡単に説明すると以下ができる機能です:
-
空間データ・タイプで地理空間データを保管
- 最大 4 MB まで保持できる特殊なデータ・タイプ(BLOB)
-
空間処理関数を使用して、テーブルに保管されている空間データ・タイプのデータを分析
対応製品は以下です(2022/08/22現在):
- Db2 (SW版・コンテナ版)
- Db2 Warehouse
- Db2 Warehouse on Cloud
Db2 on Cloud(StandardプランとEnterpriseプラン)は一部機能が使えませんでした。サポートに問い合わせたところ、Db2 Spatial Analyticsはサポートしていないとのことでした。また無料のDb2 on Cloud Liteプランは権限が足りないため、地理空間分析機能を有効にすることができず、地理空間分析機能は使用できません。
なので、無料で試してみたい、という場合は、Db2 Community Edition(SW版またはコンテナ版)を使用するがよいかと思います。コンテナ版についてはこちらのDocker hubから導入可能です。
2. Db2の空間データ・タイプ
ドキュメントURL: https://www.ibm.com/docs/ja/db2/11.5?topic=concepts-spatial-data-types
以下のタイプで列定義が可能です。
- Point(点): ST_Point, ST_MultiPoint
- Line(線): ST_Linestring, ST_MultiLineString
- Polygon(面): ST_Polygon, ST_MultiPolygon
Point, Line, Polygonが複数の場合はST_Multixxxxを使います。
またPoint, Line, Polygon どれでも入れられるのがST_Geometry です。
3. Db2の空間処理関数
ドキュメントURL: https://www.ibm.com/docs/ja/db2/11.5?topic=analytics-spatial-functions
空間処理関数を使用して、形状間の距離やある形状が別の形状に含まれるかどうかの判別などが可能です。 これをSQLのWHERE句として使用することができます。
例1: 日本IBM箱崎事業所(139.7869482 35.6783300)から距離1km以内のLOCATION:
ST_Distance関数 (↓LOCATIONはST_Point属性の列)
WHERE ST_Distance(
ST_Point (139.7869482, 35.6783300), LOCATION, 'KILOMETER') <= 1
例2: 中央区内のLOCATION:
ST_Within関数
(↓LOCATIONはST_Point属性の列、中央区の形状はSHAPEにあるとする)(↓LOCATIONはST_Point属性の列)
WHERE ST_Within (LOCATION, SHAPE)
4. Db2で地理空間分析の利点
専用GISツールなどもありますが、利点は以下のようなとこかと思います。
- いつも使っているテーブルのデータと位置情報を組み合わせた分析がDb2にデータを置いたままできる
- 空間分析のワークロードをDb2サーバー上で実行できる
以上が基礎知識となります。
今後のシリーズで具体的な操作を説明予定です。