【第22回】作成した地図を世界へ!iDesktopXによるWebマップ公開入門

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

「5分で分かるSuperMap iDesktopX製品・機能紹介シリーズ」、第22回です。前回は、3D空間ならではの高度な「3D空間解析」について学びました。今回は、そうして作成・分析した価値ある地理空間情報を、いかにして多くの人々と共有するか、というテーマ、「クラウド共有とWebマップ公開」について解説します。デスクトップで完結するだけでなく、Webを通じて世界へ発信しましょう!


【第22回】作成した地図を世界へ!iDesktopXによるWebマップ公開入門


1. なぜWebで地図を公開するのか?

デスクトップGISで作成した地図や分析結果は非常に強力ですが、その真価は多くの人々と共有されて初めて発揮されます。Webマップとして公開することで、以下のようなメリットが生まれます。

(1) アクセシビリティ: GISソフトウェアがインストールされていないPCや、スマートフォン、タブレットからでも、Webブラウザさえあれば誰でも地図にアクセスできます。

(2) 情報の一元化: 関係者全員が常に最新の同じ地図データを参照できるため、情報の齟齬がなくなり、迅速な意思決定が可能になります。

(3) システム連携: 公開した地図サービス(API)は、他のウェブサイトに埋め込んだり、業務システムと連携させたりと、活用の幅が大きく広がります。

図22-1 デスクトップで作成した地図を、クラウドを通じて様々なデバイスに配信するイメージ


2. 公開の心臓部「SuperMap iServer」

iDesktopXで作成した地図をWeb公開するための心臓部となるのが、SuperMapファミリーのGISサーバー製品「SuperMap iServer」です。iDesktopXが地図を「作成・編集」するためのプロフェッショナルなツールであるのに対し、iServerはその成果物を多くのユーザーに「配信・提供」するためのパワフルなサーバーです。iDesktopXには、このiServerへ簡単にデータを公開するための機能が組み込まれています。


図22-2 iDesktopXとiServerの連携フロー

3. iDesktopXからのワンクリック公開

iDesktopXの「オンライン」タブには、iServerへコンテンツを公開するための専用機能が用意されており、数クリックの簡単な操作で公開プロセスを完了できます。

(1) ワークスペースの公開

最も基本的な公開方法です。iDesktopXで作成したワークスペース(地図、データ、スタイル設定などをすべて含むプロジェクトファイル)を丸ごと公開します。

① 公開されるサービスの種類:

* RESTサービス: Webシステム連携で最も一般的に使われる形式のサービスです。地図画像や地理空間データを配信します。

* OGCサービス: WMS、WFSといった国際標準規格のサービスです。これにより、SuperMap製品以外のGISソフトウェア(QGISなど)からも、公開した地図を読み込むことが可能になります。

(2) 地図タイルの公開

第14回で解説した「地図タイル」は、Web地図のパフォーマンスを最大化するための鍵です。iDesktopXで生成した地図タイルキャッシュ(ローカルファイルまたはMongoDBに保存)を直接iServerに公開することで、非常に高速な地図配信サービスを構築できます。


4. 公開したサービスの活用

サービスが正常に公開されると、iDesktopXの出力ウィンドウにサービスごとのURLが表示されます。このURLを使えば、以下のような様々な活用が可能になります。

(1) Webアプリケーションでの利用: SuperMapが提供するWeb API(iClient)や、Leaflet、OpenLayersといったオープンソースのライブラリを使って、独自のWeb地図アプリケーションを構築できます。

(2) 他のGISソフトウェアでの利用: 公開したWMSやWFSサービスは、他の多くのデスクトップGISソフトウェアで読み込み可能な標準データソースとなります。

(3) iDesktopXでの再利用: 自分が公開したサービスに、iDesktopXからWebデータソースとして接続し、他のデータと重ね合わせてさらに分析を行う、といった使い方も可能です。


まとめ

今回は、iDesktopXとiServerがシームレスに連携することで実現する「クラウド共有とWebマップ公開」についてご紹介しました。デスクトップで作成・分析した高度な地理空間情報を、簡単な操作でWebサービスとして公開し、組織内外の多くの人々と共有する。この一連のワークフローは、地理空間情報の価値を最大化し、その活用を民主化するための強力な手段となります。

次回は、**第23回「他のGISからの乗り換えも安心!データ移行ツール」**です。他のGISソフトウェアで作成した既存のデータを、いかにしてスムーズにSuperMapプラットフォームに移行するか、そのための便利なツールについて解説します。お楽しみに!


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

iDesktopXのPython IDEを使い、iServerで公開されているREST地図サービスに接続し、レイヤー情報を取得するサンプルコードです。地図を公開した後の「利用」フェーズを体験できます。
Python

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

import requests # Webサービスにアクセスするために標準ライブラリ以外のrequestsが必要になる場合があります
import json

def connect_to_iserver_service():
    """
    SuperMap iServerで公開されているRESTサービスに接続し、情報を取得するサンプル
    """
    try:
        # iServerのRESTサービスURLを指定
        # 例:'World'ワークスペースを公開した場合
        base_url = "http://localhost:8090/iserver/services/map-World/rest/maps/World"
       
        print(f"iServerサービスに接続中: {base_url}")

        # 1. 地図の基本情報を取得
        # JSON形式で情報を要求
        params = {'f': 'json'}
        response = requests.get(base_url + ".json", params=params)
       
        # ステータスコード200は成功を意味する
        if response.status_code == 200:
            map_info = response.json()
            print("\n--- 地図情報 ---")
            print(f"地図名: {map_info.get('name')}")
            print(f"座標系: {map_info.get('prjCoordSys', {}).get('name')}")
            print(f"表示範囲 (Bounds): {map_info.get('bounds')}")
        else:
            print(f"地図情報の取得に失敗しました。ステータスコード: {response.status_code}")
            return

        # 2. 地図に含まれるレイヤーの情報を取得
        layers_url = base_url + "/layers.json"
        response_layers = requests.get(layers_url, params=params)
       
        if response_layers.status_code == 200:
            layers_info = response_layers.json()
            print("\n--- レイヤー情報 ---")
            if layers_info:
                for layer in layers_info:
                    print(f"  - レイヤー名: {layer.get('name')}, タイプ: {layer.get('type')}, 可視性: {layer.get('visible')}")
            else:
                print("レイヤーが見つかりません。")
        else:
            print(f"レイヤー情報の取得に失敗しました。ステータスコード: {response_layers.status_code}")

    except requests.exceptions.ConnectionError as e:
        print(f"接続エラー: iServerサービスが起動しているか、URLが正しいか確認してください。")
        print(e)
    except Exception as e:
        print(f"予期せぬエラーが発生しました: {e}")

if __name__ == '__main__':
    # このスクリプトを実行する前に、'requests'ライブラリをインストールしてください
    # pip install requests
    connect_to_iserver_service()

コメント

このブログの人気の投稿

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

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

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