2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Db2地理空間分析: DBeaverでDb2の地理空間情報を表示してみる

Last updated at Posted at 2022-10-12

Db2地理空間分析シリーズ

当記事は「6. DBeaverでDb2の地理空間情報を表示してみる」です。

  1. Db2の地理空間分析機能
  2. 地理空間分析機能を有効にする
  3. JGD2011座標系の設定
  4. SHAPEファイルのインポート
  5. 緯度・経度情報をインポート
  6. DBeaverでDb2の地理空間情報を表示してみる
  7. 空間処理変数を使ってみる

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を実行します

image.png

4.2 結果パネルに表示された空間情報列のformatを変更

空間情報列のformatをGeometryにセットします。
ここではLOC列が空間情報列なので、この列のformatをGeometryにセットします。

LOC列の列名を右クリックし、
View/FormatSet "LOC" formatGeometryにセットしてください
(V22.2.3でView/FormatSet "LOC" transformになっています)
image.png

以下のようなダイアログが出てくるので、「OK」をクリックします
image.png

5. Spatialビューの表示

結果パネルの左側「Spatial」をクリックします
image.png

地図上にデータがマッピングされました:
image.png

拡大表示や結果パネルの最大化も可能ですので、やってみてください。
image.png

地図上のマッピングされたデータのエリアをクリックすると属性情報が吹き出しで表示されます。
image.png

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サイズを変更する必要があります。

日本全体(ちょっと狭いですが):
image.png

東京付近を拡大し、1個点をクリック:
image.png

なお、選択した情報のみ見たい場合は行(またはセル)を選択後「値ビューアー」で見ることも可能です。
image.png

以上です。

2
0
1

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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?