岐阜県の公示図書様式-1(A3)広域図と詳細図を作成
岐阜県の公示図書「様式-1(A3)」をQGISとPythonで自動作成する
今回、以前作成した公示図書作成ツールでExcel帳票を出力し、QGISで地点ごとの位置図を一括作成した後、 Pythonで各Excelへ地図画像を自動貼り付けする流れを作成しました。
全体の作業手順
- 公示図書作成ツールで、地点ごとのExcelを作成する
- 作成されたExcelを1つのフォルダへ集める
- QGISで国土地理院ベクトルタイルを背景に設定する
- 対象箇所のポイントデータを準備する
- ポイントデータの「箇所番」フィールドへ箇所番号を入力する
- QGISのPythonコンソールで画像切り出しコードを実行する
- 出力された20万図と2.5万図を、Excelと同じフォルダへ入れる
- Excel画像貼付用のBATを実行する
- 全Excelへ位置図、赤円、基本入力B12の文字を一括反映する
1.公示図書作成ツールでExcelを作成する
最初に、以前作成した公示図書作成ツールを使用し、地点ごとのExcelを作成します。 作成されたExcelを、今回の一括処理用フォルダへ集めます。
GEN020●●_その1.xlsx KEN00●●その1.xlsx KEN020●●その1.xlsx G50●●K_その1.xlsx
画像との照合には、Excelファイル名の最初のアンダーバーより左側を使用します。
GEN020●●01_その1.xlsx → G0●●9001 KEN0250●●●1.xlsx → KEN00●●04
2.QGISで国土地理院ベクトルタイルを設定する
QGISの背景地図には、国土地理院のベクトルタイルを使用します。 QGISのブラウザパネルで「ベクタタイル」を右クリックし、「新しい一般接続」を選択して登録します。
| 項目 | 設定 |
|---|---|
| 名前 | 国土地理院ベクター |
| URL | https://cyberjapandata.gsi.go.jp/xyz/experimental_bvmap/{z}/{x}/{y}.pbf |
| 最小ズーム | 4 |
| 最大ズーム | 16 |
地図の線、注記、色などを確認し、不要なレイヤは非表示にしておきます。 画像切り出しコードは、QGISの地図画面で表示中の背景レイヤをそのまま使用します。
EPSG:6675(JGD2011 / 平面直角座標系第VII系)
に設定しました。
3.対象箇所のポイントデータを準備する
地図の中心とするポイントデータを作成します。
今回のコードでは、ポイントレイヤ名を 表紙作成、
ファイル名に使用するフィールド名を 箇所番 としています。
| 項目 | 設定例 |
|---|---|
| レイヤ名 | 表紙作成 |
| ジオメトリ | ポイント |
| 箇所番号フィールド | 箇所番 |
各ポイントの 箇所番 フィールドへ、Excelと対応する箇所番号を入力します。
GEN0●●001 KEN00●●003 KEN02590●● G50●●1K
ポイントの位置が、そのまま左右の地図画像の中心になります。 渓流出口、対象区域の中心など、業務で決めた基準位置へポイントを置きます。
4.QGISで20万図と2.5万図を一括出力する
QGISのメニューから「プラグイン」→「Pythonコンソール」を開きます。 コンソール上部の「エディタを表示」を押し、配布ファイルをエディタで開いて実行します。
コードを実行すると出力先フォルダを選択する画面が表示されます。 各ポイントについて、次の2枚が出力されます。
GEN00●●001_200k.png GEN020●●001_25k.png
| 画像 | 縮尺 | 用途 |
|---|---|---|
_200k.png |
1:200,000 | 様式-1(A3)の左側 |
_25k.png |
1:25,000 | 様式-1(A3)の右側 |
QGIS:地図画像一括出力コード
5.Excelと地図画像を1つのフォルダへ集める
QGISで出力したPNGを、公示図書作成ツールで作成したExcelと同じフォルダへ入れます。 Excelはすべて閉じておきます。
作業フォルダ ├─ GEN0259001_その1.xlsx ├─ GEN0259001_200k.png ├─ GEN0259001_25k.png ├─ KEN0259004_その1.xlsx ├─ KEN02590040101_200k.png ├─ KEN02590040101_25k.png ├─ Excel地図画像一括貼付_右画像トリミング版.py └─ Excel地図画像一括貼付_右画像トリミング版_実行.bat
画像名に枝番号が付く場合
Excel名と画像名が完全一致しなくても、画像名がExcelの箇所番号で始まっていれば対応します。
Excel KEN0259004_その1.xlsx 画像 KEN02590040101_200k.png KEN02590040101_25k.png
この場合、Excel側の照合キーは KEN0259004 です。
画像名の先頭も KEN0259004 で始まるため、同じ箇所として貼り付けます。
6.Excel画像貼付用コードを実行する
PythonファイルとBATファイルを同じフォルダへ置き、
Excel地図画像一括貼付_右画像トリミング版_実行.bat
をダブルクリックします。
実行後は次の順に操作します。
- ExcelとPNGが入ったフォルダを選択する
- 全Excelの「基本入力」シートB12へ入れる共通文字を入力する
- 実行ボタンを押す
Excelは閉じた状態で問題ありません。 Pythonが各Excelをバックグラウンドで開き、編集、保存、終了まで行います。
自動で行われる処理
| 処理 | 内容 |
|---|---|
| 左側の画像 | 様式-1(A3)のB3:C34へ20万図を貼付 |
| 右側の画像 | 様式-1(A3)のG3:I34へ2.5万図を貼付し、左側を微調整してトリミング |
| 既存図形 | 貼付範囲に重なる古い画像や赤円を先に削除 |
| 赤円 | 左右の地図枠中央へ、直径3cm、赤色、線幅2.25ptの円を追加 |
| 基本入力B12 | 実行時に入力した文字を、全Excelへ反映 |
| バックアップ | 処理前のExcelを日時付きバックアップフォルダへコピー |
Excel:画像一括貼付Pythonコード
実行用BATコード
7.初回だけ必要な設定
Excel操作には pywin32 を使用します。
未導入の場合は、コマンドプロンプトで次を実行します。
一度インストールすれば、次回からはBATをダブルクリックするだけです。
8.完成後に確認する項目
- 左側に1:200,000、右側に1:25,000の画像が入っているか
- 各画像の中心が対象ポイントと一致しているか
- 画像が黒枠からはみ出していないか
- 右側画像の左端が完成例と同じ位置でトリミングされているか
- 赤円が左右の地図枠中央にあるか
- 基本入力シートB12の文字が正しいか
- 枝番号付き画像が別のExcelへ誤って貼られていないか
- 印刷プレビューでA3の1ページに収まっているか
まとめ
公示図書作成ツールでExcel作成 → Excelを1フォルダへ集約 → QGISで国土地理院ベクトルタイルを設定 → ポイントデータの「箇所番」を入力 → Pythonで20万図・2.5万図を一括出力 → PNGをExcelと同じフォルダへ格納 → BATを実行 → 様式-1(A3)を一括完成
手作業で地図を1枚ずつ切り出し、Excelへ位置と大きさを合わせて貼り付ける必要がなくなりました。 地点数が多い公示図書ほど、作業時間の短縮と画像の取り違え防止に効果があります。
※国土地理院データの利用条件、出典表記、測量法に基づく承認の要否については、
成果品の用途と発注者の指示に従って確認してください。
※元Excelの列幅、行高、様式が異なる場合は、画像寸法や右側のトリミング値を調整する必要があります。
具体例:様式-1を3箇所分作るときの入力と出力
説明用にTEST001・TEST002・TEST003の3地点を考えます。QGISで「表紙作成」ポイントレイヤの「箇所番」へそれぞれの番号を入れ、1地点から20万図と2.5万図を1枚ずつ、合計6枚のPNGを作ります。次にTEST001_その1.xlsxのような帳票コピーと対応画像を同じ作業フォルダに置きます。
元記事の伏字入りの例は命名の考え方を示したものです。実際には、Excel名の照合キーと画像名が一致するよう整理してください。たとえばTEST001_その1.xlsxに対しTEST001_200k.pngとTEST001_25k.pngをそろえます。短い番号の前方一致で別箇所の画像が候補になる場合は、処理前に候補を整理します。
実行を2段階に分ける
- ZIPを展開し、qgis_map_export.pyをQGISのPythonコンソールのエディタで開きます。ポイントと表示中の背景を確認し、1地点を選んで実行します。
- 画像の場所・縮尺・文字の欠けを確認し、帳票と同じフォルダへ置きます。
- Excelを閉じ、配布するExcel画像貼付用Pythonを実行します。起動BATもZIPに収録していますが、環境を手動で準備してPythonを直接実行しても構いません。
- 基本入力B12の共通文字、左右画像の対応、赤円、右画像のトリミングを確認してから残りを処理します。
画像貼付だけの処理ではありません。入力文字の変更、既存図形の削除、保存を伴います。ファイル数が合っていても、番号の照合が誤っていれば別箇所の地図が入ります。箇所名と位置を組み合わせて照合してください。
コメント
コメントを投稿