Db2地理空間分析: JGD2011座標系の設定

`Db2地理空間分析`シリーズ


当記事は「3. JGD2011座標系の設定」です。

1. [Db2の地理空間分析機能](https://qiita.com/nishikyon/items/2f8bc4858e2d54bf9b1a)
1. [地理空間分析機能を有効にする](https://qiita.com/nishikyon/items/4cd0430e4ebb7d541a82)
1. [**JGD2011座標系の設定**](https://qiita.com/nishikyon/items/fc97391f02b4e9e4bb9c)
1. [SHAPEファイルのインポート](https://qiita.com/nishikyon/items/fd6d166fdbf6523930d4)
1. [緯度・経度情報をインポート](https://qiita.com/nishikyon/items/cf90796a13fa7d2cf769)
1. [DBeaverでDb2の地理空間情報を表示してみる](https://qiita.com/nishikyon/items/60e23324b1ec1f65deb5)
1. [空間処理変数を使ってみる](https://qiita.com/nishikyon/items/7eeb7ee541e7d4f76a7f)

- - -
# 1. JGD2011座標系
Db2 Spatial Analysisには事前によく使いそうな空間参照系の定義が
ビュー`SYSGEO.ST_SPATIAL_REFERENCE_SYSTEMS`
にあり、ここにあるもののみが、空間参照系として指定できます。
ここにない場合は、
ビュー`SYSGEO.ST_COORDINATE_SYSTEMS`
に5000 を超える座標系が用意されており、そのいずれかに基づいて新しい空間参照系を作成可能です。

`Db2地理空間分析`シリーズ 「4. SHAPEファイルのインポート」で[国土交通省国土数値情報ダウンロードサービス](https://nlftp.mlit.go.jp/ksj/index.html)から東京都の行政区域データ　のSHAPEファイルをダウンロードしてインポートするのですが、このSHAPEファイルで使用されている空間参照系が`JGD2011`です。

このデータをそのまま(変換せずに)インポートするには、　`JGD2011`の空間参照系が`SYSGEO.ST_SPATIAL_REFERENCE_SYSTEMS`に定義されている必要がありますが、この空間参照系の定義はデフォルトで入っていません。

よって、「4. SHAPEファイルのインポート」　の前準備として、`JGD2011`の空間参照系を設定します。
またはSHAPEファイルの座標系を現在`SYSGEO.ST_SPATIAL_REFERENCE_SYSTEMS`に定義されている座標系に変換してもOKです(geopandasで簡単にできますが、ここでは説明しません)。

`JGD2011`の空間参照系を設定はDb2 Spatial Analysisに必須ではありませんが、今後の`Db2地理空間分析`シリーズではここで作成した`JGD2011`の空間参照系を使っていきますので、そのままコードを実行したい方はここで`JGD2011`の空間参照系を設定を行ってください。


`JGD2011`について詳しく知りたい方は以下を参照してみてください:
https://www.gsi.go.jp/sokuchikijun/datum-main.html

# 2. JGD2011座標系の設定
`JGD2011`は`SYSGEO.ST_COORDINATE_SYSTEMS`には定義されています。
[ESPGコードは6668](https://epsg.io/6668)なので、以下で確認します。
```sql
SELECT * FROM SYSGEO.ST_COORDINATE_SYSTEMS 
WHERE ORGANIZATION='EPSG' AND ORGANIZATION_COORDSYS_ID = 6668;
```
結果:
```
COORDSYS_NAME COORDSYS_TYPE DEFINITION                                                                                                                                        ORGANIZATION ORGANIZATION_COORDSYS_ID DESCRIPTION                              
------------- ------------- ------------------------------------------------------------------------------------------------------------------------------------------------- ------------ ------------------------ -----------------------------------------
GCS_JGD_2011  GEOGRAPHIC    GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] EPSG                             6668 JGD 2011 touhokutaiheiyouoki - was 104020
```
これを使ってJGD2011座標系の設定します。

**いろいろたくさん書きましたが、要は以下のコマンドを使用するDbに対して発行して、JGD2011座標系の設定を行ってください。**
各パラメーターの設定はDb2ドキュメント[空間参照系の作成](https://www.ibm.com/docs/ja/db2/11.5?topic=analytics-creating-spatial-reference-system)を参照してください。SRS_IDは`2011`で登録しています。今後はこの`2011`をSRS_IDとして指定していきます。もちろんパラメーターはご自身の環境に合わせて変更可能です。
```sql
CALL ST_CREATE_SRS('GCS_JGD_2011', 2011, -180, -90, 1000000, 0, 1, 0, 1, 'GCS_JGD_2011',  'GCS_JGD_2011')
```
Db2 CLIで対象のDbに接続後、あるいはDb2 Warehouse on CloudのWebコンソールの「SQLの実行」画面より実行してください。


無事設定できたかは`SYSGEO.ST_SPATIAL_REFERENCE_SYSTEMS`を確認してみましょう:

```sql
SELECT * FROM SYSGEO.ST_SPATIAL_REFERENCE_SYSTEMS WHERE COORDSYS_NAME = 'GCS_JGD_2011';
```

結果:
```
SRS_NAME     SRS_ID X_OFFSET X_SCALE   Y_OFFSET Y_SCALE   Z_OFFSET Z_SCALE M_OFFSET M_SCALE MIN_X  MAX_X              MIN_Y MAX_Y              MIN_Z MAX_Z                MIN_M MAX_M                COORDSYS_NAME COORDSYS_TYPE ORGANIZATION ORGANIZATION_COORDSYS_ID DEFINITION                                                                                                                                        DESCRIPTION  DEFINER   
------------ ------ -------- --------- -------- --------- -------- ------- -------- ------- ------ ------------------ ----- ------------------ ----- -------------------- ----- -------------------- ------------- ------------- ------------ ------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------- ------------ ----------
GCS_JGD_2011   2011   -180.0 1000000.0    -90.0 1000000.0      0.0     1.0      0.0     1.0 -180.0 9.00719907474099E9 -90.0 9.00719916474099E9   0.0 9.007199254740989E15   0.0 9.007199254740989E15 GCS_JGD_2011  GEOGRAPHIC    EPSG                             6668 GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] GCS_JGD_2011 XXXXXXXX
```

もし間違って登録して削除したい場合は、以下の以下のコマンドをを使用するDbに対して発行してください：
```sql
CALL ST_DROP_SRS('GCS_JGD_2011')
```
(パラメータはSYSGEO.ST_SPATIAL_REFERENCE_SYSのSRS_NAMEです）

以上です。