本記事では、QGISの特定のレイヤ内から、入力座標に最も近い地物を選択し、その地物情報をズーム表示した上でテキスト形式でアノテーションする方法を紹介します。
分かりやすい例として、「東京駅」の座標から最も近い「中学校」を自動で選択し、地物情報に含まれる「地区名」や「中学校名」を地図上にアノテーションする方法を取り上げています。
筆者が調査した限りでは、個別のAPIに関する情報は豊富に見つかりますが、APIを組み合わせて実際の事例に取り組んだ事例が少なかったため、本記事をまとめることとしました。
ベース環境
OS: Windows 10 Home (64bit)
CPU: Intel Core i7-9750H
QGIS: QGIS スタンドアロンインストーラ バージョン 3.16 (64ビット)
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日取得)
出典: 「国土数値情報(中学校区データ)」(国土交通省)(https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A32-v2_0.html)(2021年03月09日取得)
広告
①シェープファイルの読み込み→レイヤ追加
ブラウザ領域のシェープファイルをレイヤ領域にドラッグ&ドロップする
②Pythonコンソールを開く
広告
③Pythonスクリプトを実行する
③-1. 対象レイヤーを取得する
対象レイヤーは中学校の地物情報が含まれている「A32P-16_13」を例として使用します。
③-2. 対象レイヤーの空間情報を取得する
③-3. 指定座標に最も近い地物情報のインデックス番号を取得する
入力座標は東京駅の座標を例として使用します。
③-4. ③-3で取得したインデックス番号をもつ地物を選択する
③-5. ③-4で選択した地物の属性情報を取得する
③-6. ③-4で選択した地物を中心に周辺領域をズーム表示する
指定された地物が画面上に協調表示されない場合は、レイヤーの順序を入れ替えることで表示される可能性があります。
③-7. Html形式でテキスト情報を作成する
③-8. ③-7で作成したテキスト情報を選択した地物情報の座標上にアノテーションする
③-9. ついでに、入力座標上にも同様にアノテーションする
③-10. ③-9では入力座標上のアノテーションが見切れているため、入力座標と選択地物を含むように、表示領域を調整する
③-11. 表示領域を画像保存する
③-12. 選択地物を選択解除する(後処理)
③-13. アノテーションを削除する(後処理)