NEWS
IBM i 技術解説 IBM i 技術解説
2025.10.16
SHARE
  • twitter
  • facebook
  • hatena
  • linkedin

地理空間分析入門:AI(Watson)によるIBM i 上のデータ活用の基礎

地理空間分析入門:AI(Watson)によるIBM i 上のデータ活用の基礎

近年、ChatGPT の登場をきっかけに AI への注目が急速に高まり、企業のシステムや業務にも活用が進んでいます。IBM i も例外ではなく、AI を取り入れることで、より高度なデータ分析や業務改善が可能になりました。その中でも注目したいのが「地理空間分析機能」です。
AI で地理情報を扱うことで、従来の数値データだけでは得られなかった新たな視点を引き出し、IBM i 上のデータ活用をさらに広げることができます。

IBM i の地理空間分析機能は、地理的な特徴を生成・分析し、それらをデータベースに保存・管理できる機能です。緯度・経度といった位置情報をデータに追加したり、距離や範囲を計算したりすることができ、ビジネス判断や運用の最適化に役立てられます。

この機能は Db2 for i に標準搭載されており、IBM i 7.5 TR1 以降、または IBM i 7.4 TR7 以降で利用できます。PTF 適用により Watson 地理空間サポートが追加されています。

基本的な地理空間分析機能は、DB2 for iの下記のPTFで提供:

  • IBM i 7.5のDB2 for iのグループPTF(SF99950) レベル3
  • IBM i 7.4のDB2 for iのグループPTF(SF99704) レベル23

最新機能(ST_GEOHASHVALUE スカラー関数など*)については下記のPTFで提供

  • IBM i 7.5のDB2 for iのグループPTF(SF99950) レベル4
  • IBM i 7.4のDB2 for iのグループPTF(SF99704) レベル25

地理空間分析機能の大きな特長は、処理をすべて IBM i 内で完結できる点です。

  • クラウドや外部サービスとの接続不要
  • データを IBM i 内から移動させる必要なし
  • 追加料金なし
  • 追加のセキュリティ検討は不要、または最小限で対応可能

地理空間分析機能の活用事例

地理空間分析の活用シーンは様々ですが、ここでは特にイメージしやすい 2 つの例をご紹介します。

① 出店計画の最適化

チェーン店が新しい店舗の出店場所を検討する際に、候補地を中心に半径数キロ圏内にどれだけの顧客が住んでいるか、また競合店舗がどこにあるかを地理空間データとして可視化・分析できます。その結果、売上ポテンシャルの高いエリアを特定し、出店リスクの低い立地を選定するといった、データに基づくビジネス上の意思決定が可能になります。

② リスク評価

たとえば、新しい倉庫や工場の建設候補地を検討する際、候補地の周辺、たとえば半径30km以内の過去の気象データを分析できます。洪水や台風、豪雨などの発生傾向を事前に把握することで、将来的な被災リスクを考慮した立地選定が可能になり、保険料や災害対策コストの削減にもつながります。

Watsonが支えるDb2 for iの高精度な地理空間処理

二次元地図上で点と点を結んだ直線距離は、実は正確な最短距離ではありません。正しい距離や方向を求めるためには、地球の表面、つまり球面上で計算する必要があります。
例えば、平面地図上ではまっすぐに見える経路も、球面上で見ると実際には大きく曲がっていたり、最短経路がまったく別のルートになることがあります。地球は「丸く、連続した、閉じた表面」を持つ球体であり、単純に点と点を直線で結ぶだけでは、正しい距離を求めることはできません。

このような球面上の距離や方向を正確に算出するためには、非常に複雑な数式計算が必要になります。従来は Watson の API にデータを送信して計算を行う仕組みでしたが、現在は Db2 for i に Watson の地理空間分析機能が直接組み込まれ、IBM i 内で処理を完結できるようになっています。これにより、距離測定や位置関係の判定といった計算を、より正確かつ精密に実行できるようになりました。

さらに、この機能は、オープン地理空間コンソーシアム(OGC)の標準および SQL/MM に準拠しており、他の地理空間システムとの高い互換性も確保されています。

▲ 平面地図投影と測地線の比較

地理空間データを構成する「ジオメトリ(形状)」とは

ジオメトリとは、座標(経度・緯度)を用いて地理的な特徴をモデル化したもので、位置・線・領域を表すための基本単位です。
以下の階層的な定義は、OGC(Open Geospatial Consortium) という国際標準に基づいており、IBM i の地理空間分析機能もこの標準に準拠しています。

Db2 for i では、このジオメトリを使って地理情報を正確に表現し、SQL で直接操作・分析することができます。

基本ジオメトリ:点・線・面

地理空間分析の基本となるのが「Point」「LineString」「Polygon」の3種類のジオメトリです。

  • Point(点):
    ひとつの地点を表します。住宅や店舗、ランドマークなどの位置を、経度・緯度で定義します。
  • LineString(線):
    2点以上を結ぶ線を表します。道路、川、送電線、パイプラインなどを表現するのに利用されます。
  • Polygon(面):
    多角形の内部領域を表します。公園、行政区、野生動物の生息地など、範囲を持つ地理的エリアの表現に使われます。

複合ジオメトリ:より複雑な地理構造を表現

複数の基本ジオメトリを組み合わせて表現するのがジオメトリ・コレクション(Geometry Collection)です。これにより、現実世界のより複雑な地理的特徴を扱うことができます。

  • MultiPoint(複数点):
    複数の拠点の位置をまとめて表します。
    例:チェーン店舗の所在地リスト
  • MultiLineString(複数線):
    複数の折れ線をまとめて表します。
    例:高速道路ネットワークや上下水道システム
  • MultiPolygon(複数面):
    複数のポリゴンをまとめて表します。
    例:地域内の農地や行政区など

▲ ジオメトリの階層構造

地理空間データを操作する「地理空間処理関数」

地理空間データの保存や処理は、Db2 for i に組み込まれている地理空間処理関数を使って行います。

主な地理空間処理関数の例

  • ST_Point:
    経度と緯度を指定して、地図上にピンを立てるような役割を持つ関数です。
      例:ST_Point(139.767061, 35.68114)は、東京駅の位置を示します。
  • ST_Distance:
    二つのピンの間の距離を測定する関数です。
    例:ST_Distance( ST_Point(X1, Y1), ST_Point(X2, Y2)で、2店舗間の最短距離を算出します。
  • ST_AsText:
    地理空間データ型(Geometry 型)を、人が読める文字列形式(WKT:Well-Known Text)に変換します。
    例:ST_AsText(LOCATION) → “POINT(139.767061, 35.68114)” のように表示されます。
ジオメトリ構築関数 • ST_Geometry
• ST_Point
• ST_LineString
• ST_Polygon
• ST_GeomCollection
• ST_MultiPoint
• ST_MultiLinestring
• ST_MultiPolygon
• ST_WKTToSQL
• ST_WKBToSQL
ジオメトリ比較関数 • ST_Contains
• ST_Covers
• ST_Crosses
• ST_Difference
• ST_Disjoint
• ST_Distance
• ST_Equals
• ST_Intersects
• ST_Overlaps
• ST_Touches
• ST_Within
ジオメトリ特性関数 • ST_Area
• ST_GeometryType
• ST_IsSimple
• ST_IsValid
• ST_MaxX
• ST_MaxY
• ST_MinX
• ST_MinY
• ST_NumPoints
• ST_SrsID
• ST_SrsName
ジオメトリ変換関数 • ST_AsText
• ST_AsBinary
• ST_ToPoint
• ST_ToLineString
• ST_ToPolygon
• ST_ToMultiPoint
• ST_ToMultiLine
• ST_ToMultiPolygon
新規ジオメトリ構築関数 • ST_Buffer
• ST_Difference
• ST_Intersection
• ST_SymDifference
• ST_Union
ジオメトリ特性関数 • ST_FuzzyGeohashCover
• ST_FuzzyGeohashCoverExtend
• ST_Geohash
• ST_GeohashCover
• ST_GeohashCoverExtend
▲ 地理空間処理関数

地理空間処理関数の使用例

1. 地理空間分析用テーブルの作成

ここでは、実際に SQL を使って地理空間データを保存する方法をご紹介します。
例として、以下のような顧客情報を格納するテーブル「TESTLIB.customers」に地理空間データを保存するケースを見ていきましょう。

地理空間データを格納するには、テーブル内に「位置情報(LOCATION)」を表す列を定義します。方法は大きく2つあります。

① 新規テーブルを作成する場合

新規テーブルを作成する際は、CREATE TABLE 文を使用し、顧客情報とともにLOCATION 列を定義します。この列のデータ型には、QSYS2.ST_POINTを指定します。

CREATE TABLE TESTLIB.customers (
  id INT,
  LASTNAME VARCHAR(30),
  FIRSTNAME VARCHAR(30),
  ADDRESS VARCHAR(100),
  CITY VARCHAR(50),
  POSTAL_CODE VARCHAR(5),
  STATE CHAR(2),
  LOCATION QSYS2.ST_POINT
);

このように定義することで、各顧客の住所データに加え、緯度・経度を格納できる位置情報付きテーブルを作成できます。

② 既存テーブルに地理空間カラムを追加する場合

既に存在するテーブルに位置情報を追加する場合は、ALTER TABLE文を使用します。新たに LOCATION 列(QSYS2.ST_POINT 型) を追加するだけで、既存テーブルを地理空間対応に拡張できます。

ALTER TABLE TESTLIB.customers
ADD COLUMN LOCATION QSYS2.ST_POINT;

2. ジオメトリ登録から距離測定まで

①地点情報を格納するテーブルの作成

ポイント・カラムを含むテーブルを作成します。point 列のデータ型は QSYS2.ST_POINTです。

CREATE TABLE FUCENLI.sample_points2 (
  location_name VARCHAR(50),
  point QSYS2.ST_POINT
);

代表的なランドマーク3つ、東京スカイツリー、東京タワー、日比谷公会堂の位置を、経度・緯度を使って ST_Point で登録します。

INSERT INTO FUCENLI.sample_points2 VALUES
('東京スカイツリー', QSYS2.ST_Point(139.8107, 35.7100)),
('東京タワー', QSYS2.ST_Point(139.7454, 35.6585)),
('日比谷公会堂', QSYS2.ST_Point(139.7555, 35.6715));

② 公園の境界を格納するテーブルの作成

公園など「範囲を持つ地理情報(面)」を扱うため、ST_POLYGON 型の列を持つテーブルを作成します。

CREATE TABLE FUCENLI.sample_parks2 (
  park_name VARCHAR(50),
  park_geometry QSYS2.ST_POLYGON
);

このテーブルには、公園の境界を表すポリゴンを登録します。
例として、日比谷公園と浜離宮庭園を、それぞれ頂点の座標列で定義します。

INSERT INTO sample_parks2 (park_name, park_geometry) VALUES
('日比谷公園', QSYS2.ST_POLYGON('POLYGON((139.7559 35.6764, 139.7532 35.6721,
139.7559 35.6710, 139.7572 35.6730, 139.7591 35.6750, 139.7559 35.6764))')),
('浜離宮庭園', QSYS2.ST_POLYGON('POLYGON((139.7631 35.6632, 139.7597 35.6591,
139.7629 35.6572, 139.7669 35.6591, 139.7676 35.6597, 139.7631 35.6632))'));

これで、点(FUCENLI.sample_points2)と面(FUCENLI.sample_parks2)を持つ地理空間データが登録されました。

▲ FUCENLI.sample_points2

▲ FUCENLI.sample_parks2

③ 距離の計算

最後に、地点(Point)から公園(Polygon)までの距離を計算します。
ここでは、QSYS2.ST_DISTANCE 関数を使用します。
例:浜離宮庭園までの距離を求める

SELECT 
  location_name,
  QSYS2.ST_DISTANCE(point, park_geometry) AS distance_meters
FROM sample_points2, sample_parks2
WHERE park_name = '浜離宮庭園'
ORDER BY distance_meters;

▲ 浜離宮庭園までの距離

結果を見ると、最も近いのは 日比谷公会堂(約1.1km)、最も遠いのは 東京スカイツリー(約6.7km)という距離が得られます。
同様に「日比谷公園」までの距離を計算すると、日比谷公会堂は同じ敷地内にあるため距離は 0m、東京タワーは約 1.6km、スカイツリーは約 6km という結果になります。

SELECT 
  location_name,
  QSYS2.ST_DISTANCE(point, park_geometry) AS distance_meters
FROM sample_points2, sample_parks2
WHERE park_name = '日比谷公園'
ORDER BY distance_meters;

▲ 日比谷公園までの距離

3. ターゲティングメール配信

ここまでで、地理空間データの扱い方や処理関数の使い方を紹介してきました。では、実際にこの機能をどのように業務に活かすことができるのでしょうか。
たとえば、新店舗の開店や改装時に、近隣顧客へキャンペーンメールを配信したいというケースがあります。このようなマーケティング活動においても、IBM i の地理空間分析機能を活用できます。

① 顧客データへの位置情報追加

住所カラムが存在している顧客マスターファイルに、「経度・緯度」を追加することで、顧客データを位置情報分析に活用できるようになります。
住所から経度・緯度を取得する際には、無償・有償のWebサービスを利用できます。以下は代表的なサービスの例です:

これらのサービスを利用して取得した座標データを、ST_POINT 関数を利用して、IBM i のデータベースに格納します。これにより、各顧客の住所情報に正確な位置情報(緯度・経度)を関連付けることができます。

② 新店舗から半径1km以内に居住する顧客を抽出

ST_Distance関数を活用して、店舗を中心とした近隣顧客を抽出します。以下は、店舗の位置を「経度139.6500・緯度35.7000」とし、1km以内に居住する顧客を抽出するSQL例です。

SELECT customer_id, name, email
FROM CUSTOMER_MASTER
WHERE QSYS2.ST_Distance(location, 
      QSYS2.ST_Point(139.6500, 35.7000)) <= 1000;

このSQLを実行すると、指定した店舗の周囲1km以内に居住する顧客リストを取得できます。この結果をもとに、ターゲティングメールやキャンペーン通知を自動送信すれば、地理的に近い顧客へ的確にアプローチできます。

▲ メール配信範囲のイメージ図

Tips:SQL文の実行方法とSQLサンプル

地理空間分析を実際に試す際は、IBM i Access Client Solutions(ACS)の「SQLスクリプトの実行」機能を使うのがおすすめです
ACSのメニューから、[データベース]→[SQLスクリプト] をクリックすると、SQLコマンドを直接入力・実行できるエディタ画面が開きます。この画面では、地理空間関数を含むSQLをすぐに実行でき、結果をその場で確認できるのが大きなメリットです。

▲ ACS画面

▲ SQLスクリプト実行画面

さらに、ACSには地理空間分析用のSQLサンプルも用意されています。 メニューの[編集]→[例]→[例から挿入]と進むと、「Geospatial Analytics」カテゴリが表示されます。

▲ SQLスクリプトの実行

例えばこのサンプルでは、国立公園の名前と位置を ST_POINT 関数で登録し、そのデータをSQLで呼び出す例がそのまま書かれています。
SQL構文の使い方や記述の構造を確認できるため、初めて地理空間関数を扱う方でも安心して試すことができます。

▲ Geospatial Analyticsサンプル

まとめ

IBM i の Db2 for i に組み込まれた Watson 地理空間機能を利用することで、これまでの数値や文字データだけでは見えなかった“場所”の情報を活かした分析が可能になります。出店計画やリスク評価、ターゲティングメール配信など、ビジネスに新たな視点をもたらす強力なツールとして活用できます。
次回の「実践編」では、今回紹介したSQL文や関数を実際に使用し、サンプルデータを使って分析を実行していきます。さらに、分析結果を地図上にマッピングして可視化する方法もご紹介します。IBM i 上で得られる地理空間データを、“目で見て理解できる形”に変えるステップをお楽しみに。

筆者

日本アイ・ビー・エム株式会社
IBM Power Technical Sales 李 馥岑

Qiitaアカウント:@fu_desu

いいねと思ったらシェア
twitter
facebook
hatena
linkedin
関連記事
IBM PowerSCを用いてIBM i のセキュリティーを強化しましょう
IBM PowerSCを用いてIBM i のセキュリティーを強化しましょう
IBM i 用の新しいODBCドライバー
IBM i 用の新しいODBCドライバー
使ってみよう!Rational Developer for i
使ってみよう!Rational Developer for i
あなたにオススメの連載
Db2 for i & SQL活用 虎の巻
15記事
Db2 for i & SQL活用 虎の巻
IBM i の”新”必須言語 〜FFRPG入門〜
13記事
IBM i の”新”必須言語 〜FFRPG入門〜
できるIBM i 温故知新編
9記事
できるIBM i 温故知新編