【QGIS3】最近傍地物の選択、ズーム表示、および地物情報のアノテーション

本記事では、QGISの特定のレイヤ内から、入力座標に最も近い地物を選択し、その地物情報をズーム表示した上でテキスト形式でアノテーションする方法を紹介します。

分かりやすい例として、「東京駅」の座標から最も近い「中学校」を自動で選択し、地物情報に含まれる「地区名」や「中学校名」を地図上にアノテーションする方法を取り上げています。

筆者が調査した限りでは、個別のAPIに関する情報は豊富に見つかりますが、APIを組み合わせて実際の事例に取り組んだ事例が少なかったため、本記事をまとめることとしました。

ベース環境


OS: Windows 10 Home (64bit)
CPU: Intel Core i7-9750H
QGIS: QGIS スタンドアロンインストーラ バージョン 3.16 (64ビット)

サンプルデータ(置き換え可能)


ファイル名: A32-16_13.shp、A32P-16_13.shp
出典: 「国土数値情報(中学校区データ)」(国土交通省)(https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A32-v2_0.html)(2021年03月09日取得)

 

広告

 

 

①シェープファイルの読み込み→レイヤ追加


ブラウザ領域のシェープファイルをレイヤ領域にドラッグ&ドロップする

layer_prepare

 

layer_load

 

②Pythonコンソールを開く


python_console

 

check_python_console

広告

③Pythonスクリプトを実行する


③-1. 対象レイヤーを取得する

対象レイヤーは中学校の地物情報が含まれている「A32P-16_13」を例として使用します。

③-2. 対象レイヤーの空間情報を取得する

③-3. 指定座標に最も近い地物情報のインデックス番号を取得する

入力座標は東京駅の座標を例として使用します。

③-4. ③-3で取得したインデックス番号をもつ地物を選択する

③-5. ③-4で選択した地物の属性情報を取得する

③-6. ③-4で選択した地物を中心に周辺領域をズーム表示する

zoom_to_selected_feature

指定された地物が画面上に協調表示されない場合は、レイヤーの順序を入れ替えることで表示される可能性があります。

 

③-7. Html形式でテキスト情報を作成する

③-8. ③-7で作成したテキスト情報を選択した地物情報の座標上にアノテーションする

text_annotation_for_feature

③-9. ついでに、入力座標上にも同様にアノテーションする

③-10. ③-9では入力座標上のアノテーションが見切れているため、入力座標と選択地物を含むように、表示領域を調整する

adjust_zoom_scale

③-11. 表示領域を画像保存する

③-12. 選択地物を選択解除する(後処理)

③-13. アノテーションを削除する(後処理)

remove_annotation

 

参考情報


QGIS API Documentation

広告