【第15回】図面としての地図作り!iDesktopXのレイアウト・組版・印刷機能

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

「5分で分かるSuperMap iDesktopX製品・機能紹介シリーズ」、第15回です。前回はWeb地図の高速表示を支える「地図タイル」技術について学びました。今回は、GISデータの最終的なアウトプットの一つである、印刷や報告書用の「図面としての地図」を作成する機能に焦点を当てます。分析や可視化のためだけでなく、見る人に正確な情報を伝えるためのレイアウト、組版、印刷機能について解説します。


【第15回】図面としての地図作り!iDesktopXのレイアウト・組版・印刷機能


GISプロジェクトの成果は、多くの場合、紙媒体やPDF形式の地図として提出されます。そのためには、データそのものだけでなく、図名、凡例、縮尺、方位記号といった「整飾」要素を適切に配置し、誰が見ても分かりやすい図面に仕上げる必要があります。iDesktopXは、このための包括的なレイアウト機能を提供します。

図 iDesktopXのレイアウト機能で作成されたプロフェッショナルな地図帳のイメージ


1. レイアウトの基本:地図要素の配置

iDesktopXには、地図とは別に「レイアウトウィンドウ」という専用の作業空間があります。このキャンバス上に、様々な地図要素を自由に配置していきます。

(1) 地図の配置:

まず、メインとなる地図をレイアウト上に配置します。一つのレイアウトに、広域図と詳細図のように複数の地図を配置することも可能です。

(2) 整飾要素の描画:

「オブジェクト描画」タブから、地図に不可欠な要素を簡単に追加できます。

① 凡例: 地図で使用されているシンボルが何を表しているかを説明します。レイアウトに追加すると、地図の内容に応じて自動的に生成されます。

② 縮尺: 数値縮尺(1:25,000など)と、グラフィカルなスケールバーの両方を作成できます。

③ 方位記号: 地図の北方向を示します。多彩なデザインのテンプレートから選択できます。

④ 図名・テキスト: 地図のタイトルや注記などを自由に追加し、フォントやスタイルを編集できます。


2. レイアウトテンプレートで作業を効率化

毎回ゼロからレイアウトを作成するのは大変です。iDesktopXには、あらかじめ図郭や整飾要素が配置された「レイアウトテンプレート」が多数用意されています。土地利用計画図用、地籍調査表用など、用途に応じたテンプレートを選択し、自分の地図をはめ込むだけで、規格の整った地図を迅速に作成できます。もちろん、自分で作成したレイアウトを新しいテンプレートとして保存することも可能です。


3. 大量出力の決定版「マップシリーズ」

マップシリーズ」は、iDesktopXのレイアウト機能の中でも特に強力な機能の一つです。これは、同じレイアウト形式を使い、地図の範囲だけを次々と変えながら、多数のページからなる「地図帳(マップブック)」を自動生成する機能です。

(1) 利用シーン:

① 市区町村ごとのハザードマップ: 東京都港区のレイアウトを一つ作成し、「インデックスレイヤー」として港区の全町丁目のポリゴンを指定します。すると、「赤坂一丁目図」「六本木三丁目図」…といったように、全町丁目分の地図が自動的に生成されます。

② 路線図: 鉄道や道路の路線に沿って、一定区間ごとの詳細図を連続して作成します。

(2) ダイナミックテキスト:

マップシリーズと合わせて使うと便利なのが「ダイナミックテキスト」です。これは、ページごとに内容が自動的に変わるテキストで、「現在のページ:赤坂一丁目」のように、表示されている地図の属性情報を自動で引用して表示させることができます。


4. レイアウトの出力

完成したレイアウトは、様々な形式で出力できます。

(1) 画像として出力: PNG, JPEG, PDFなどの一般的な形式で、高解像度の画像ファイルとしてエクスポートします。報告書への貼り付けや、メールでの共有に便利です。

(2) 印刷: プリンターや大判プロッターに直接出力します。印刷プレビューで仕上がりを確認しながら、用紙サイズや向きなどを細かく設定できます。


まとめ

今回は、GISデータの最終成果物を作成するための「レイアウト・組版・印刷」機能についてご紹介しました。単に地図を表示するだけでなく、凡例や図郭といった整飾要素を加え、プロフェッショナルな図面に仕上げるプロセスを理解いただけたかと思います。特に、大量の地図を効率的に作成できる「マップシリーズ」は、定型的な図面作成業務を劇的に効率化する強力なツールです。

次回は、**第16回「GISがもっと賢くなる!AIアシスタント登場」**です。自然言語での対話を通じて、GISの操作をAIがサポートしてくれる未来的な機能について解説します。お楽しみに!


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


iDesktopXのPython IDEを使い、現在のワークスペースにあるすべての地図に対して、自動的にレイアウトを作成し、PDFとしてエクスポートするサンプルコードです。大量の地図を一度に出力したい場合に便利です。

Python


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

from PySuperMap import *
from PySuperMap.Layout import *
import os

def auto_layout_and_export_sample():
    """
    ワークスペース内の全マップに対して自動でレイアウトを作成し、PDFに出力するサンプル
    """
    try:
        # ワークスペースを取得
        workspace = Workspace()
        maps = workspace.get_maps()
        if maps.get_count() == 0:
            print("ワークスペースに地図がありません。")
            return

        # 出力先フォルダを指定
        # パスはご自身の環境に合わせて変更してください
        output_folder = r"D:\gis_data\pdf_layouts"
        if not os.path.exists(output_folder):
            os.makedirs(output_folder)

        print(f"{maps.get_count()}個の地図を処理します...")

        # ワークスペース内のすべての地図をループ処理
        for i in range(maps.get_count()):
            map_name = maps.get_item(i)
            print(f"処理中: {map_name}")

            # 1. 新しい空白のレイアウトを作成
            layout = Layout()
            layout.set_name(f"Layout_{map_name}")
            # 用紙サイズをA4縦に設定
            layout.set_paper_size(PaperSize.A4)
            layout.set_orientation(PaperOrientation.PORTRAIT)

            # 2. 地図要素をレイアウトに追加
            # レイアウトの中心に地図を配置
            map_element = GeoMap()
            map_element.set_map_name(map_name)
            # 用紙サイズに合わせて地図の範囲を自動調整
            bounds = layout.get_paper_bounds()
            # 少しマージンをとる
            bounds.inflate(-20, -20)
            map_element.set_bounds(bounds)
            layout.get_elements().add(map_element)

            # 3. タイトル(ダイナミックテキスト)を追加
            title_element = GeoText()
            title_element.set_text(f"図名: {map_name}")
            title_element.set_location(Point2D(bounds.get_left(), bounds.get_top() + 10))
            # フォントサイズなどを設定
            text_style = TextPart()
            text_style.set_font_height(8)
            title_element.set_text_style(text_style)
            layout.get_elements().add(title_element)

            # 4. レイアウトをPDFとしてエクスポート
            output_pdf_path = os.path.join(output_folder, f"{map_name}.pdf")
            is_success = layout.export_to_pdf(output_pdf_path)

            if is_success:
                print(f" -> '{output_pdf_path}' にエクスポートしました。")
            else:
                print(f" -> PDFのエクスポートに失敗しました。")
           
            # 作成したレイアウトを閉じる
            layout.close()
           
        print("すべての処理が完了しました。")

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

if __name__ == '__main__':
    auto_layout_and_export_sample()

コメント

このブログの人気の投稿

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

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

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