【第23回】他のGISからの乗り換えも安心!iDesktopXのデータ移行ツール

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

「5分で分かるSuperMap iDesktopX製品・機能紹介シリーズ」、第23回です。前回は作成した地図をWebで公開する方法を学びました。今回は、多くの組織が直面する課題、「他のGISソフトウェアからのデータ移行」に焦点を当てます。長年利用してきた他社製GISの貴重なデータ資産を、いかにスムーズにSuperMapプラットフォームへ移行できるのか、その強力なツールをご紹介します。

【第23回】他のGISからの乗り換えも安心!iDesktopXのデータ移行ツール


1. なぜデータ移行が必要か?

GISソフトウェアの乗り換えや、異なる部署で使用しているGISプラットフォームの統合、あるいは他社から受け取ったデータを活用する際など、データ移行は多くの場面で必要となります。しかし、異なるGIS間でのデータモデルやシンボルの違いは、移行作業を複雑で時間のかかるものにしてきました。

iDesktopXは、特に世界中で広く使われているArcGISプラットフォームからの移行を強力にサポートする、専門的なツール群を提供しています。

図 他のGISプラットフォームからSuperMap iDesktopXへのスムーズなデータ移行イメージ

2. ArcGISからのデータ移行

iDesktopXのデータ移行機能は、単にデータを変換するだけでなく、地図の見た目や設定まで含めて、包括的に移行することを目指しています。
(1) データベースの移行
ArcGISが使用する様々なジオデータベース形式から、データを直接SuperMapのデータソースにインポートできます。
① エンタープライズジオデータベース (ArcSDE): SQL ServerやOracle、PostgreSQL上で稼働しているArcSDEに直接接続し、必要なデータをSuperMapデータソースに取り込みます。
② ファイル/パーソナルジオデータベース (GDB/MDB): .gdbや.mdbといったファイルベースのジオデータベースも、簡単な操作でインポート可能です。
(2) 地図ドキュメント(MXD)の完全移行
データ移行で最も困難なのが、データそのものではなく、配色やシンボル、ラベル設定といった「地図の表現」の移行です。iDesktopXは、ArcGISの地図ドキュメントファイル(.mxd)を直接読み込み、これらの表現を可能な限り忠実に再現します。
① シンボルの移行: ArcGISのシンボルや.style形式のシンボルライブラリを、SuperMapのシンボル形式に自動変換します。
② 主題図・ラベルの移行: MXD内で設定された段階区分図や統計グラフ主題図、複雑なラベル設定などを、SuperMapの主題図・ラベル機能で再現します。
③ レイアウトの移行: 印刷用に作成されたレイアウトビューも移行の対象となり、再設定の手間を大幅に削減します。
(3) ArcGIS Proからの移行
最新のArcGIS Proで作成されたプロジェクトファイル(.aprx)にも対応しています。専用の移行ツールを使えば、ArcGIS Proの地図、データ、シンボルをまとめてSuperMapのワークスペースに変換できます。

3. サービスの移行

既にArcGIS ServerでWebサービスを運用している場合でも、スムーズな移行パスが用意されています。

(1) サービスの再公開: 上記の手順でデータと地図をSuperMapプラットフォームに移行した後、SuperMap iServerを使って同等のWebサービスとして再公開します。

(2) サービスの転送: 移行期間中の暫定的な措置として、SuperMap iServerをプロキシ(代理)サーバーとして設定し、既存のArcGISサービスへのリクエストを「転送」させることができます。これにより、クライアント側のアプリケーションの接続先URLを変更するだけで、裏側のシステムを段階的にSuperMapへ移行していくことが可能になります。

まとめ

今回は、iDesktopXが提供する強力なデータ移行機能、特にArcGISプラットフォームからの移行支援についてご紹介しました。データだけでなく、地図のシンボルやラベル、レイアウトといった「表現」まで含めて移行できるツールは、GISソフトウェアの乗り換えに伴うコストとリスクを大幅に低減します。これにより、組織が長年蓄積してきた貴重な地理空間データ資産を無駄にすることなく、新しいプラットフォームで活用し続けることができます。

次回は、**第24回「サクサク動く地図の秘訣!パフォーマンス最適化」**です。大量のデータを快適に表示・操作するためのキャッシュ技術や設定のコツについて解説します。お楽しみに!

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

データ移行で頻繁に行われる作業の一つ、特定のフォルダ内にあるすべてのシェープファイル(.shp)をSuperMapのデータソースに一括でインポートするPythonスクリプトの例です。

Python


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


from PySuperMap import *
from PySuperMap.Data import *
import os

def batch_import_shapefiles_sample():
    """
    指定したフォルダ内の全てのシェープファイルを
    SuperMapのデータソースに一括インポートするサンプル
    """
    try:
        # ワークスペースを取得
        workspace = Workspace()

        # シェープファイルが格納されているフォルダのパス
        # パスはご自身の環境に合わせて変更してください
        shp_folder_path = r"D:\gis_data\shapefiles_to_import"
        if not os.path.isdir(shp_folder_path):
            print(f"フォルダが見つかりません: {shp_folder_path}")
            return
           
        # インポート先のデータソースを取得または作成
        datasource_name = "Imported_Data"
        datasource = workspace.get_datasources().get_item(datasource_name)
        if datasource is None:
            conn_info = DatasourceConnectionInfo()
            conn_info.set_server(os.path.join(shp_folder_path, "Imported_Data.udbx"))
            conn_info.set_engine_type(EngineType.UDBX)
            datasource = workspace.get_datasources().create(conn_info)
            if datasource is None:
                print("インポート先のデータソース作成に失敗しました。")
                return
       
        print(f"'{shp_folder_path}' からデータソース '{datasource_name}' へインポートを開始します...")

        # 1. データインポート設定オブジェクトを作成
        import_setting = ImportSettingSHP()
        import_setting.set_target_datasource(datasource)
        import_setting.set_import_mode(ImportMode.NONE) # 属性構造が異なってもインポート

        # 2. フォルダ内の全ての .shp ファイルをループ処理
        imported_count = 0
        for filename in os.listdir(shp_folder_path):
            if filename.lower().endswith(".shp"):
                source_filepath = os.path.join(shp_folder_path, filename)
                import_setting.set_source_filepath(source_filepath)
               
                print(f"  - '{filename}' をインポート中...")
               
                # データインポートを実行
                data_importer = DataImporter()
                result = data_importer.run(import_setting)
               
                if result.is_succeed():
                    imported_count += 1
                else:
                    print(f"    インポートに失敗しました。")
       
        print(f"\n処理が完了しました。合計 {imported_count} 個のシェープファイルをインポートしました。")

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

if __name__ == '__main__':
    batch_import_shapefiles_sample()

コメント

このブログの人気の投稿

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

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

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