Chapter.2-1の続きです。
AI Ready and Integrated
サマリーではIBM i 7.4 TR7~提供されている、Db2 for i 地理空間分析と、今後機能拡張予定のWatsonを活用した機能拡張、が挙げられています。
Db2 for i 地理空間分析のメリット
Db2 for i 地理空間分析については、データ移送無用・データ発生源(Db2 for i)で完結などのセキュリティ、追加ライセンス費用無し、標準的なSQLによる操作が可能、などをメリットとして挙げています。
ユースケース例
最寄りのサービス拠点の検索 : 現在のGPS位置情報に基づいて最寄りのコーヒーショップの検索
ルートと距離の追跡 : 車での移動距離の測定
サービス拠点の更新 :
・移転した店舗の新しい住所の検索
・顧客と店舗の関係分析
・店舗と顧客の所在地を特定し、それらの地理的関係を分析します。
敷地計画とリスク評価
・施設または倉庫の候補地(例:半径30マイル以内)周辺の過去の気象パターンと傾向を分析します。
資産追跡と物流の最適化
・トラック、船舶、コンテナ、その他の移動資産のリアルタイムの位置を監視し、目的地を追跡します。
##サンプルSQL1 : 複数の目的地との距離を計算する。
自分自身の位置と、遠方の4つの拠点間のそれぞれの距離を計算する
Example 2-1 データ準備ステップ
実行結果例は以下です。ロチェスター市から別な4都市(ミネアポリス、ポケプシー、オースチン、IBM Watson West研究所)までの距離を計算しています。
サンプルコードはこちら
/*----------------------------------------------------------*/
/* Example 1: */
/* Find the distance between two different locations. */
/* For this example, we will find the distance between */
/* IBM Rochester and other IBM locations */
/*-----------------------------------------------------------*/
create schema coolstuff;
set schema coolstuff;
set path coolstuff, system path;
-- Create a table that contains IBM US Locations using the ST_POINT data type
CREATE TABLE IBM_US_LOCATIONS(LOCATION_NAME VARCHAR(50),
STREET VARCHAR(50),
CITY VARCHAR(25),
STATE CHAR(2),
ZIP VARCHAR(10),
COORDINATE QSYS2.ST_POINT);
-- Insert into the table using the ST_POINT function
INSERT INTO IBM_US_LOCATIONS VALUES
('IBM Rochester','2800 37th Street
NW','Rochester','MN','55901-4441',ST_POINT('point(-92.48151 44.06161)')),
('IBM Minneapolis','650 3rd Ave
S','Minneapolis','MN','55402',ST_POINT('point(-93.26778 44.97561)')),
('IBM Poughkeepsie','2455 South
Rd','Poughkeepsie','NY','12601-5400',ST_POINT('point(-73.93139 41.65904)')),
('IBM Austin','11400 Burnet
Rd','Austin','TX','78758-3493',ST_POINT('point(-97.71889 30.39975)')),
('IBM Watson West','505 Howard Street','San
Francisco','CA','94111',ST_POINT('point(-122.39623 37.7884)'));
・スキーマ coolstuff は任意のライブラリー名
・IBM_US_LOCATIONSというテーブル(PF)を作成
・上記のカラムは下記
LOCATION_NAME VARCHAR(50),
STREET VARCHAR(50),
CITY VARCHAR(25),
STATE CHAR(2),
ZIP VARCHAR(10),
COORDINATE QSYS2.ST_POINT)
・上記のカラムで、ST_POINT は地理空間データのある地点のポイント(点)を示すデータ型です。
・INSERT INTO IBM_US_LOCATIONS VALUESステートメントで、上記5つの地点のポイントをセットしています。
私の環境では coolstaffG というライブラリー(スキーマ)を作って実行してみました。
Example 2-2 ST_POINT変数に基点となるポイントの座標をセット
ST_POINTのグローバル変数を作成し、ST_POINT関数を使用して基準となる地点(今回はロチェスターの位置情報)のポイントを設定します。
CREATE VARIABLE ROCHESTER_LOCATION QSYS2.ST_POINT;
SET ROCHESTER_LOCATION = ST_POINT(-92.48151, 44.06161);
Example 2-3
以上でロチェスターからの直線距離を算出する準備が出来たので、SQLを実行してみます。
-- Determine the distance from IBM Rochester to other IBM locations as the crow
flies in miles
SELECT ROUND(ST_DISTANCE(COORDINATE, ROCHESTER_LOCATION)/1609.34, 2) AS
DISTANCE_MILES,
LOCATION_NAME
FROM IBM_US_LOCATIONS;
このチャプターにはこの他に、より実践的なサンプルが2つ記載されていますのでご確認ください~。
Db2 地理空間分析の分かりやすい参考情報
記事はDb2 LUWを想定して書かれていますが、インフラ的な記載を除けば、地理空間分析機能の説明、サンプルコードはDb2 for i でもそのまま参照できると思います。
サンプルが国内の地図を使用している等、こちらのサンプルの方が分かりやすいかもしれません。