「アクション機能」を使うと、いろいろと便利なことを実現できます。

今回の記事ではQGISの「アクション機能」を紹介します。
アクション機能の設定サンプルとして、「地物の属性情報を使って簡単にGoogle検索ができるという機能の設定方法」、「ポップアップ内に、表形式で属性情報を表示する方法」を説明します。

QGISのアクション機能とは?

QGISのアクション機能は、地図上の地物に対して、独自の操作や外部リンクを追加するための便利な機能です。
この機能によって、地物をクリックするだけで、その属性データを元にウェブ検索を行ったり、外部アプリケーションの起動が可能になります。

アクション機能は、カスタマイズ性が高く、様々な用途に応じて設定を行うことができるため、上手く活用すると、データ分析やプレゼンテーションをより効果的に行うことができます。

サンプルとして使用するデータの説明

この記事では、国土数値情報の医療機関データを説明用に使用します。
このデータは医療機関の位置を示すポイントデータで、「施設名称」、「所在地」、「病床数」といった情報が記録されたフィールドが含まれます。

このデータを使って「P04_002フィールドに記録されている医療機関の名称を使って簡単にGoogle検索ができるアクション」を設定してみます。

サンプルデータをQGISに取り込む

はじめに以下の手順でサンプルデータをQGISに取り込みます。

QGISを開きメニューバーの「レイヤ」から「レイヤを追加」を選択し、出てくるメニューの中から「ベクタレイヤを追加」を選択します。

trygis034 01 min
メニューから「ベクタレイヤを追加」を選択する

すると「データソースマネージャ|ベクタ」というウインドウが表示されます。

trygis034 02 min
「データソースマネージャ|ベクタ」ウインドウが表示された

ベクタデータセットと書かれている欄の右端にある「・・・」をクリックします。

するとファイルを選択する画面が表示されるので展開したフォルダに移動し、取り込むファイルを選択し、「開く」をクリックしましょう。

シェープファイルの場合、ファイル名の最後が「.shp」で終わるファイルを選択します。

trygis034 03 min
データを展開したフォルダ内の拡張子が「.shp」となっているファイルを選択する

ファイルを選択すると「データソースマネージャ|ベクタ」ウインドウに戻るので、ウインドウの下の方にある「追加」をクリックし、続けて「閉じる」をクリックします。

これで、QGISにサンプルのポイントデータが取り込まれました。

trygis034 04 min
医療機関位置のデータが表示された

続いて、アクションを設定する手順を説明します。

アクションの設定方法

取り込んだサンプルデータのレイヤ名の上で右クリックし、出てきたメニューから「プロパティ」を選択します。

trygis034 05 min
「プロパティ」を選択する

「レイヤプロパティ」ウインドウが表示されるので左のメニューから「アクション」を選択します。

trygis034 06 min
「アクション」を選択する

ウインドウの中央下にある「+」ボタンをクリックします。

trygis034 07 min
ウインドウの中央下にある「+」ボタンをクリックする

すると、「新規アクションを追加」ウィンドウが表示されます。

必ず設定が必要な項目は以下の通りです。

  • 説明
  • スコープ
  • アクションテキスト
trygis034 08 min
必ず設定が必要な項目はこの4つ

今回のアクションの場合、以下のように設定します。


「URLを開く」を選択する。

説明
アクションの内容を示すわかりやすい言葉を入れます。今回は「施設名検索」と入力します。

スコープ
アクションが適用される範囲を選択できます。今回は「地物」を選択します。それぞれの説明はこのあと補足します。

「スコープ」欄について

「どこで」アクションが有効となるかを定義することができます。

  1. レイヤ :アクションは属性テーブルのツールバー内のアクションボタンで利用可能です。この型のアクションは、単一の地物ではなくレイヤ全体を対象としていることに注意してください。
  2. フォーム:ドラッグ&ドロップデザイナーモードで作成されたフォームで利用可能です。
  3. キャンバス :アクションはツールバーのメインアクションボタンで利用可能です。
  4. フィールド :アクションは属性テーブル内のセルで右クリックした場合や地物フォーム内、あるいはメインツールバーのデフォルトアクションボタンで利用可能です。
  5. 地物 :アクションは属性テーブル内のセルで右クリックした場合に利用可能です。

出典:QGIS Documentationを元に作成

アクションテキスト
アクションの内容を記載します。今回は、以下のように記載します。意味はこのあと補足します。

https://www.google.com/search?q=[%P04_002%]
アクションテキスト欄の入力内容について

アクション内容を示すコードなどを記載します。

アクションの型が「URLを開く」の場合、ここに入力したURLを開くというアクションが実行されます。
今回は以下のように入力しました。

https://www.google.com/search?q=[%P04_002%]

なので、このURLが開くというアクションが実行されます。


[%P04_002%]のところには、P04_002フィールドの属性情報が入ります。
P04_002フィールドには、「施設名称」の情報が記録されているフィールド名です。
つまり、施設名称でGoogle検索をした結果ページのURLを開くというアクションになります。

URLを他のサイトの検索結果のフォーマットに変更すれば、いろいろと応用できます。

例えば、以下のようにすれば、Bingで検索できます。

https://www.bing.com/search?q=[%P04_002%]

以下の場合、Googleマップで検索します。

https://www.google.co.jp/maps/search/[%P04_002%]

選んだアクションの型によって書く内容は様々です。

その他の記載方法については、多岐にわたるので、QGISのドキュメントページなどで確認してみてください。

trygis034 09 min
Google検索するアクションの設定を行った

ここまで入力できたら「OK」ボタンをクリックするとアクションが保存され、プロパティウィンドウにもどります。

「OK」をクリックし、地図にもどります。

これで、医療機関のポイントデータにアクションが設定されました。

次に、アクションを実行する方法を説明します。

その他の設定欄について

「アイコン」欄では、アクションに関連付けるアイコンを選択できます。アイコンは、アクションボタンに表示され、視覚的にアクションを識別しやすくします。適切なアイコンを選択してください。ここで使用できるファイル形式は、PNG、JPG、SVGなどの一般的な画像ファイルです。画像サイズは16×16ピクセルが最適ですが、32×32ピクセルのアイコンも使用可能です。アクションボタンとは、設定したアクションを実行するためにクリックするボタンのことで、地図キャンバス上に表示されます。

「短い名前」欄では、アクションの短い名前を入力します。入力していた場合、「地物アクションの実行」ボタンの選択メニューなどで使用されます。入力が無ければ「説明」欄の内容が利用されます。あまり必要に感じません。

アクションの実行方法

「アクションの実行方法」の手順を説明します。

始めに「地物情報を表示」アイコンをクリックします。

trygis034 10 min
ツールバーの「地物情報を表示」アイコンをクリックする

カーソルが変化するので、アクションを実行したい地物の上で右クリックします。

すると、右クリックメニューが表示され、メニュー内に設定したアクション名(今回は、”施設名検索”)が表示されています。

trygis034 11 min
右クリックメニュー内に設定したアクション名が表示されている

アクション名をクリックするとアクションの実行です。

今回の場合、デフォルトのウェブブラウザが開き、選択した医療機関の名称でGoogle検索が実行されます。

trygis034 12 min
ウェブブラウザが開き、P04_002の内容でGoogle検索した結果が表示された

このような感じで、アクション機能を使うと地物の情報を簡単にGoogle検索することができます。

また、地物が密集していたり、同じ地点に複数のポイントが重なっている場合には、以下のように、右クリックメニューに地物を選択するメニューが追加されます。

trygis034 13 min
地物が密集している場合などには、地物を選択するメニューが追加で表示される

アクションの実行方法は他にもあります。

アクションの実行方法は他にもある

以下のように設定すると、ワンクリックでアクションを実行できます。

アクションの設定ウインドウのスコープ欄でキャンパスを選択します。

trygis034 14 min
スコープ欄で「キャンパス」を選択する

地図にもどり、「地物アクションの設定」アイコンのメニューを開き、設定したアクション名を選択します。

trygis034 15 min
「地物アクションの設定」メニューから、設定したアクション名を選択する

すると、大きな十字のカーソルに変わります。

trygis034 16 min
カーソルの形状が変化した

この状態で、ポイントをクリックすると、ウェブブラウザが開き、選択した医療施設の名称を用いてGoogle検索が実行されます。

trygis034 17 min
ウェブブラウザが開き、P04_002の内容でGoogle検索した結果が表示された

また、地点が密集していたり、同じ地点に複数のポイントが重なっている場合には、すぐに検索が行われることはなく、以下のように右クリックメニューが表示され、地物を選択する手順が発生します。

trygis034 18 min
地物が密集している場合などには、地物を選択するメニューが追加で表示される

この方法では、直ぐにアクションを実行できるので便利です。
しかし、いきなりアクションが実行されるので、どのポイントをクリックしたかわかりづらい場合があるので注意が必要です。

その他の設定例(Pythonを使った方法)

PythonやHTML、CSSを使うと、さらにいろいろなことができます。
参考としてPythonを使い属性情報を表形式でポップアップする方法を紹介します。

今回使用した医療機関データの「P04_002」、「P04_003」、「P04_004」、「P04_008」のフィールドの属性情報を、表形式で表示する内容になっています。
それぞれ「施設名称」、「所在地」、「診療科目」、「病床数」のデータです。


「Python」を選択する。

説明
アクションがわかりやすい言葉を入れます。今回は「ポップアップ」と入力します。

スコープ
アクションが適用される範囲を選択できます。今回は好みのアクションの挙動に合わせて「地物」か「キャンパス」を選択します。両方にチェックを入れても大丈夫です。

アクションテキスト

Pythonのコードを入力します。

以下、サンプルです。

from qgis.PyQt.QtWidgets import QDialog, QVBoxLayout, QTextBrowser
from qgis.core import QgsExpressionContext, QgsExpressionContextUtils

def create_popup(p04_002, p04_003, p04_004, p04_008):
    dialog = QDialog()
    dialog.setWindowTitle("Custom Popup")

    layout = QVBoxLayout()

    text_browser = QTextBrowser()
    html_content = f"""
    <!DOCTYPE html>
    <html>
    <head>
        <style>
            body {{
                font-family: Arial, sans-serif;
            }}
            table {{
                border-collapse: collapse;
                width: 100%;
            }}
            th, td {{
                border: 1px solid black;
                padding: 8px;
                text-align: left;
            }}
            th {{
                background-color: lightblue;
                width: 30%;
            }}
            td {{
                width: 70%;
                word-wrap: break-word;
            }}
        </style>
    </head>
    <body>
        <table>
            <tr>
                <th>施設名称</th>
                <td>{p04_002}</td>
            </tr>
            <tr>
                <th>所在地</th>
                <td>{p04_003}</td>
            </tr>
            <tr>
                <th>診療科目</th>
                <td>{p04_004}</td>
            </tr>
            <tr>
                <th>病床数</th>
                <td>{p04_008}</td>
            </tr>
        </table>
    </body>
    </html>
    """
    text_browser.setHtml(html_content)
    layout.addWidget(text_browser)

    dialog.setLayout(layout)
    dialog.exec()

p04_002 = "[%P04_002%]"
p04_003 = "[%P04_003%]"
p04_004 = "[%P04_004%]"
p04_008 = "[%P04_008%]"

create_popup(p04_002, p04_003, p04_004, p04_008)
trygis034 19 min
Pythonを利用して属性情報をポップアップするアクションの設定を行った

上で記載した手順で、アクションを実施すると以下のように指示した通りのポップアップが表示されます。

trygis034 20 min 1
選択した地物の近くにポップアップが表示されて、属性情報が表形式表示された

PythonやHTML、CSSの書き方がわかれば、いろいろとカスタマイズすることが可能です。
よくわからない場合は、ChatGPTを使うと提案してくれるので便利です。

使用したデータ