Db2地理空間分析
シリーズ
当記事は「6. DBeaverでDb2の地理空間情報を表示してみる」です。
- Db2の地理空間分析機能
- 地理空間分析機能を有効にする
- JGD2011座標系の設定
- SHAPEファイルのインポート
- 緯度・経度情報をインポート
- DBeaverでDb2の地理空間情報を表示してみる
- 空間処理変数を使ってみる
1. DBeaver
OSSのDB Tool DBeaverはDb2を含む各種データベースに対してもSQLを発行したり、テーブルの一覧を出したり、いろいろできる便利なツールです。
今回はこのDBeaverを使ってDb2に空間データタイプの列に入れたデータを地図で表示する方法を説明します。
なお、当記事ではバージョン22.2.1.202209251341を使用しました。
2. 前提
前提1: データの準備
以下でDb2のテーブルに入れたものを使用します:
前提2: DBeaverでDb2への接続作成
前提1で準備したデータの入っているDb2への接続を DBeaverで作成しておきます。
設定方法はDBeaverからDb2 on Cloudにアクセスするを参考にしてください。
SSL接続ではない場合は、ドライバのプロパティのsslConnection
の設定は不要です。
3. SQL準備
空間データタイプの列はバイナリーで情報が入っています。
これを人の読めるWKT形式に変換して、VARCHARにCASTするとDBeaverで表示可能です。
WKT形式に変換
-
ST_AsText 関数 を使います
例えば、4. SHAPEファイルのインポートで作成したCITY_SHAPE
テーブルのGEO
列はST_MultiPolygon
のデータタイプで定義された空間データタイプの属性を持つ列です。これをWKT形式に変換します。
ST_AsText(GEO)
となります。
さらにVARCHARにCASTします。VARCHARのサイズはWKT形式に変換したときに全ての文字列が入る必要があります。Polygonの場合は長めにしておきます。以下は30000byteとしています。
CAST(ST_AsText(GEO) AS VARCHAR(30000))
このように変換して、SELECTで取得するようにSQLを書きます。
例えば、千代田区と中央区と港区の市区町村境界を取得するSQLの例は以下のようになります:
SELECT OBJECTID ,N03_001 ,N03_002 ,N03_003, N03_004, N03_007,
CAST(ST_AsText(GEO) AS VARCHAR(30000)) LOC
FROM CITY_SHAPE WHERE N03_004 IN ('中央区', '千代田区', '港区');
CAST(ST_AsText(GEO) AS VARCHAR(30000))
だけSELECTしても良いのですが、属性情報も一緒にSELECTすると、地図上でマウスをクリックするとその情報が表示されるようになるので、表示したい情報も一緒にSELECTします。
4. SQLの実行と結果列のformat変更
4.1 SQLを実行します
4.2 結果パネルに表示された空間情報列のformatを変更
空間情報列のformatをGeometry
にセットします。
ここではLOC列が空間情報列なので、この列のformatをGeometry
にセットします。
LOC列の列名を右クリックし、
View/Format
→ Set "LOC" format
をGeometry
にセットしてください
(V22.2.3でView/Format
→ Set "LOC" transform
になっています)
以下のようなダイアログが出てくるので、「OK」をクリックします
5. Spatialビューの表示
拡大表示や結果パネルの最大化も可能ですので、やってみてください。
地図上のマッピングされたデータのエリアをクリックすると属性情報が吹き出しで表示されます。
6. 同様にPointも表示してみる
5. 緯度・経度情報をインポートで作成したSHAREBIKE_STATION
テーブルのGEO
列はGEO_POINT
のデータタイプで定義された空間データタイプの属性を持つ列です。これをWKT形式に変換し,
VARCHARでCASTしたSQLを作ります。
SELECT STATION_ID, REGION_ID, CAPACITY, NAME, ADDRESS, URL, COMPANY,
CAST( ST_AsText(GEO_POINT)AS VARCHAR(50) ) AS LOC
FROM SHAREBIKE_STATION;
DBeaverで実行して、LOCのformatをGeometry
にセットし、Spatial ビューの表示すれば以下のように表示されます.
ただし、DBeaver のデフォルトFETCHサイズは200ですので、全レコードを表示させたい場合はこのFETCHサイズを変更する必要があります。
なお、選択した情報のみ見たい場合は行(またはセル)を選択後「値ビューアー」で見ることも可能です。
以上です。