趣味で計算流砂水理 Computational Sediment Hydraulics for Fun Learning

数値計算とか河川工学とかプログラミングのことを書いています

MENU

備忘録:QGISのPythonコンソールで印刷レイアウト内のマップアイテムの情報を取得

スポンサーリンク

 

 

 

QGISでレイアウトを作りすぎて管理しきれなくなり、地図帳にまとめるときに作ったPythonスクリプトです。 いろいろ応用が効くので、今後QGISPythonコンソールを使うときのために上げておきます。

Copilotに大分助けられました。

from qgis.core import QgsProject
from qgis.gui import QgsLayoutItemMap

# QGISのプロジェクトを取得
project = QgsProject.instance()

# プロジェクト内のすべての印刷レイアウトを取得
layouts = project.layoutManager().layouts()

# 出力ファイルを開く(書き込みモード)
with open('map_items_info.txt', 'w') as file:
    # 各レイアウトをループ
    for layout in layouts:
        # レイアウト内のすべてのアイテムを取得
        items = layout.items()
        
        # 各アイテムをループ
        for item in items:
            # アイテムがマップアイテムかどうかを確認
            if isinstance(item, QgsLayoutItemMap):
                # マップアイテムの回転角度と中心座標を取得
                rotation = item.mapRotation()
                center = item.extent().center()
                
                # ファイルに書き込む
                file.write(f"Layout: {layout.name()}, Map Rotation: {rotation}, Map Center: {center}\n")
                # コンソールに出力
                print(f"Layout: {layout.name()}, Map Rotation: {rotation}, Map Center: {center}")