【第16回】GISがもっと賢くなる!iDesktopXのAIアシスタント機能

 こんにちは!GIS導入支援コンサルタントのippuku_timeです。

「5分で分かるSuperMap iDesktopX製品・機能紹介シリーズ」、第16回です。前回は、分析結果を美しい図面に仕上げる「レイアウト・印刷機能」について学びました。今回は、GISの操作方法そのものを変革する可能性を秘めた、未来的な機能「AIアシスタント」をご紹介します。まるで専属のコンサルタントと対話するように、自然な言葉でGISを操作する新時代を体験してみましょう。


【第16回】GISがもっと賢くなる!iDesktopXのAIアシスタント機能


1. AIアシスタントとは?

iDesktopXに搭載されたAIアシスタントは、近年注目を集めている大規模言語モデル(LLM)を活用した、対話型の操作支援機能です。これまでのように、特定のボタンを探したり、複雑なパラメータを設定したりすることなく、チャットウィンドウに「〜をしてください」と日本語で入力するだけで、AIがその意図を汲み取り、様々なGIS操作を自動的に実行してくれます。

これにより、GISの学習コストが大幅に下がり、初心者でも高度な機能にアクセスしやすくなるほか、熟練者にとっても定型的な作業を高速化できるという大きなメリットがあります。iDesktopXは、OpenAI社のGPTモデル、Google社のGeminiモデル、Anthropic社のClaudeモデルといった世界最先端のモデルをはじめ、複数の大規模言語モデルに接続可能です。

図 自然言語で指示するとAIアシスタントがGIS操作を実行するイメージ


2. AIアシスタントの3つのコア機能

現在のAIアシスタントは、主に3つのタスク領域でその能力を発揮します。

(1) インテリジェントQ&A

GISの操作に関する質問応答や、簡単なコマンド実行を行います。

① 利用シーン:

* 「港区のワークスペースを開いて」と入力すると、該当するファイルを開いてくれます。

* 「この地図の座標系は何?」と質問すると、現在の地図の座標系情報を調べて回答してくれます。

* 「SHPファイルをインポート」と指示すれば、ファイル選択ダイアログを開いてくれます。

(2) インテリジェントマッピング

自然言語での指示に基づき、主題図を自動で作成・修正します。

① 利用シーン:

* 港区の建物レイヤーを選択した状態で、「建物の高さ(Heightフィールド)を使って段階区分主題図を作成して」と入力すると、自動的に高さで色分けされた地図が完成します。

* 作成された主題図に対して、「配色を青系のグラデーションに変更して」といった追加の指示で、スタイルを微調整することも可能です。

(3) インテリジェントモデリング

複数の処理ツールを組み合わせたワークフロー(モデル)の構築を支援します。

① 利用シーン:

* 「港区の浸水想定区域と建物データを重ね合わせて、浸水する可能性のある建物を抽出するモデルを作成したい」と入力すると、AIが必要なツール(オーバーレイ解析など)を自動的にキャンバスに配置し、処理フローの雛形を構築してくれます。


3. AIアシスタントの使い方

AIアシスタントの使い方は非常にシンプルです。

(1) パネルの表示: 「表示」タブ -> 「表示」グループ -> 「AIアシスタント」にチェックを入れ、画面右側にパネルを表示します。

(2) タスクの選択: パネル上部で、「インテリジェントQ&A」「インテリジェントマッピング」「インテリジェントモデリング」の中から目的のタスクを選択します。

(3) モデルの設定: 設定画面で、使用したい大規模言語モデルを選択し、ご自身で取得したAPIキーを設定します。

(4) 指示の入力: パネル下部のチャットボックスに、実行したい操作を自然な日本語で入力し、送信します。


まとめ

今回は、GISの未来の姿を垣間見ることができる「AIアシスタント」機能についてご紹介しました。自然言語で対話するだけで、データの検索から高度な主題図作成、さらには解析モデルの構築までが可能になるこの機能は、GISの操作を「どうやるか(How)」の知識から、「何をしたいか(What)」の思考へと解放してくれます。これにより、GIS活用の裾野が大きく広がり、誰もが地理空間情報の力を引き出せる時代が到来するでしょう。

次回は、**第17回「定型業務はすべておまかせ!プロセスオートメーション」**です。AIアシスタントのインテリジェントモデリングとも関連が深い、一連のGIS処理を自動化するワークフローの構築について、より詳しく解説します。お楽しみに!


付録:サンプルコード(Python)

AIアシスタントが自然言語の指示で実行してくれる「インテリジェントマッピング」ですが、その処理をPythonスクリプトで記述すると以下のようになります。AIアシスタントは、このような定型的なコーディング作業を自動化してくれる強力なパートナーです。

Python


# -*- coding: utf-8 -*-

from PySuperMap import *

def create_thematic_map_by_building_height():
    """
    建物の高さに基づいて段階区分主題図をプログラムで作成するサンプル
    (AIアシスタントなら「建物の高さで段階区分主題図を作成」の一言で実行可能)
    """
    try:
        # ワークスペースとアクティブなマップを取得
        workspace = Workspace()
        map_view = workspace.get_active_map_view()
        if map_view is None:
            print("アクティブな地図が開かれていません。")
            return
        map_obj = map_view.get_map()

        # 主題図を作成するレイヤーを取得 (ここでは "Buildings_Minato" ポリゴンレイヤーを想定)
        layer_name = "Buildings_Minato"
        layer = map_obj.get_layers().get_item(layer_name)
        if layer is None:
            print(f"レイヤー '{layer_name}' が見つかりません。")
            return

        print(f"レイヤー '{layer_name}' の主題図を作成します...")

        # 1. 段階区分主題図オブジェクトを作成
        thematic_map = ThematicMap.create_range_map(layer.get_dataset())
       
        # 2. 表現式(色分けの基準となるフィールド)を設定
        # ここでは "height" (建物の高さ) フィールドを想定
        thematic_map.set_expression("height")
       
        # 3. 段階区分の方法と数を設定
        thematic_map.set_range_mode(RangeMode.EQUALINTERVAL) # 等間隔分割
        thematic_map.set_range_count(7) # 7段階に分割
       
        # 4. スタイル設定(カラーランプ)
        start_color = Color(247, 251, 255) # 明るい青
        end_color = Color(8, 48, 107)     # 暗い青
        color_gradient = ColorGradient(start_color, end_color)
       
        # 各段階のスタイルをループで設定
        for i in range(thematic_map.get_count()):
            item = thematic_map.get_item(i)
            current_color = color_gradient.get_color(i / (thematic_map.get_count() - 1))
           
            item_style = GeoStyle()
            item_style.set_fill_fore_color(current_color)
            item_style.set_line_width(0) # 境界線なし
            item.set_style(item_style)
       
        # 5. 作成した主題図をレイヤーとして地図に追加
        thematic_layer = map_obj.get_layers().add_thematic_map(thematic_map)
        if thematic_layer is not None:
            print("段階区分主題図が作成されました。")
       
        # 地図をリフレッシュ
        map_obj.refresh()

    except Exception as e:
        print(f"エラーが発生しました: {e}")

if __name__ == '__main__':
    create_thematic_map_by_building_height()

コメント

このブログの人気の投稿

【11月リリース予定】SuperMap iServer 2025 プレビュー:WebGIS体験を刷新する新機能とは?

「GIS」っていまだに「地理情報システム」の略?時代の変化と共に、その本当の意味を再定義してみた

「国土数値情報」を考える:それは日本のGISを支える“共通の土台”である