岐阜県■区域図形Shape変換ツール、公示図書印刷ツールについて2026/07/17現在
最初に分かりにくかったのはALLシェイプの作り方
Excelの初期設定には、次の項目がある。
SFF出力ALLSHP保存先パス
最初は、公示図書用のSHP保存先だと思っていたが、そうではなかった。 ここに指定するのは、管理型調書作成ツールで作成したALLシェイプの保存先である。
管理型調書作成ツールを起動し、次の操作を行う。
ツール
→ 納品データ(Shapefile)の作成
実行すると、Shape_Dataフォルダが作成され、
その中のAllフォルダに次のようなファイルが出力される。
all_UPOINT.shp
all_LPOINT.shp
all_MLINE.shp
all_YZONE.shp
all_RZONE.shp
all_SRMZONE.shp
all_SRSZONE.shp
Excelには、これらのファイルが直接入っているフォルダを指定する必要がある。 ここを間違えると、QGIS上にはJOTANやKATANなどのレイヤだけ作られるが、中身は0件になる。
フィーチャ数 0 のためスキップ
それでも最後には「急傾斜ALLshp作成 完了」と表示されるため、 正常に終わったように見えてしまう。処理完了の表示だけでなく、フィーチャ数も確認した方がよい。
QGISを開くとリンク切れが出る
各箇所に作成されたKEN0259003_その2.qgzなどを開くと、
「利用できないレイヤを処理する」という画面が表示される。
リンク先を確認すると、次のようなテスト環境と思われるパスが残っていた。
C:\岐阜県公示図書ツール_test\基DM変換_SHP\DM_1.shp
C:\岐阜県公示図書ツール_test\ALL_SHP_kyukei\KATAN.shp
この画面では「利用できないレイヤを保持する」を選び、その後にPythonを実行する。 Pythonで実際の業務フォルダへパスを変更する仕組みなので、手動で一つずつリンクを直す必要はない。
建物がすべて灰色になる
Pythonを実行すると区域やDMは表示されたが、建物がすべて灰色のままだった。 本来は普通建物、堅ろう建物などが青や紫、赤で表示される設定になっている。
QGISの分類設定を確認すると、テンプレートでは次のフィールドを参照していた。
分類コ_1
一方、実際のDMデータでは次のフィールド名になっていた。
分類コーA
そのため分類できず、すべて「その他の値」として灰色で表示されていた。 分類フィールドを実際のDMに合わせて変更すると、建物の色は正常に表示された。
標高や地名が表示されない
建物の色は直ったが、標高値や地名などの注記が表示されなかった。 これも同じ原因で、テンプレートと実際のDMで参照しているフィールド名が違っていた。
テンプレート側 実際のDM側
分類コ_1 分類コーA
フォン フォントフ
回転角 回転角度
QGISはテンプレートに保存されたフィールド名で分類やラベル表示を行う。 そのため、パスだけ正しいDMに切り替えても、属性名が違えば表示は直らない。
DMの日本語フィールドが文字化けする
DMのフォルダに.cpgファイルがない場合、
QGISで日本語フィールドが文字化けすることがあった。
分類コーA
↓
���ރR�[A
この状態では、Python側で正しいフィールド名を指定しても一致しない。 対策として、DMのフォルダに次のファイルを作成した。
DM_1.cpg
DM_3.cpg
ファイルの中身は次のとおり。
CP932
注意点は、QGISでDMを読み込む前に.cpgを用意すること。
一度文字化けした状態で読み込んだ場合は、.cpgを作成した後にQGISを閉じ、
プロジェクトを開き直す必要がある。
OneDrive上ではExcelマクロが動かない場合がある
ツール一式をOneDriveやSharePoint上で開くと、Excelが保存場所を通常のWindowsパスではなく、 次のようなURLとして取得する場合がある。
https://~sharepoint.com/~
そのため、次のエラーが発生した。
tempフォルダが存在しません
ツール一式は、次のような通常のドライブパスに置いた方がよい。
C:\公示図書作成ツール
または
Q:\業務フォルダ\公示図書作成ツール
OneDriveを使う場合でも、SharePointのURLではなく、 エクスプローラー上の同期フォルダとして開く必要がある。
Pythonの処理にも確認不足がある
元のPythonではDMのパス変更は行っているが、次の確認はほとんど行っていなかった。
- DMが正常に読み込めたか
- 必要なフィールドがあるか
- 分類フィールドが正しいか
- ラベルの参照先が正しいか
- フィーチャ数が0件ではないか
ファイルがない場合やデータが0件の場合も、処理をスキップして最後まで進むものがある。 そのため「処理完了」と表示されても、実際には正常な成果ができていないことがある。
今回はこちらでPythonを修正し、次の処理を追加した。
- DM読み込み前に.cpgを作成
- DM_1、DM_3の読み込み確認
- 必要フィールドの存在確認
- 建物分類フィールドの修正
- 標高、地名、注記の設定修正
- 異常時は処理を停止
- 処理後に再描画
修正後は、建物の色、標高、地名、文字の回転も正常に表示された。
公示図書を一括出力できるようにした
岐阜県が配布しているツールでは、箇所ごと、様式ごとにQGISプロジェクトを開き、 対応するPythonを読み込んで実行し、レイアウトを印刷する作業を繰り返す。
QGISプロジェクトを開く
→ Pythonを読み込んで実行
→ レイアウトを印刷
→ 次のPythonを読み込んで実行
→ 再び印刷
→ 次の箇所へ移動
数箇所であれば対応できるが、対象数が多くなると、ファイルの開き間違い、 Pythonの選択間違い、印刷漏れなどが起きやすい。 そこで、対象フォルダ内のQGISプロジェクトを自動検索し、 必要な公示図書をまとめて出力するPythonを作成した。
一括出力画面で指定できる内容
- 対象となるQGISプロジェクトの親フォルダ
- PDFの出力先
- A3横などの用紙サイズ
- 地図の縮尺
- PDFの解像度
- 出力する様式
- DocuWorks Printerなどの印刷先
- 印刷部数
- 既存PDFを上書きするかどうか
「PDF作成後、選択したプリンタへも直接印刷する」にチェックを入れると、 PDFを保存した後、そのままDocuWorks Printerや通常のプリンタへ出力できる。 用紙サイズと向きもPython側から設定するため、A3横で指定した場合は、 DocuWorks側にもA3横として送る。
急傾斜と土石流の両方に対応
急傾斜では、次の様式をまとめて出力する。
公示図書 その2
公示図書 その2-1
公示図書 その2-2
公示図書 その2-3
土石流では、次の様式をまとめて出力する。
公示図書 その2
公示図書 その3
出力する様式はチェックで選べるため、必要なものだけを出力することもできる。 処理後には、成功件数、スキップ件数、エラー件数を表示し、 詳細なログファイルも保存する。
レッドゾーンがない箇所もそのまま出力
急傾斜、土石流ともに、イエローゾーンは必須だが、 レッドゾーンは該当しない箇所もある。 そのため、RZONE系のShapefileがない場合はエラーにせず、 「レッドゾーンなし」と判断して、そのレイヤを省略した状態で出力するようにした。
一方、YZONE、DM、管理CSVなど、公示図書の作成に必要な基本データがない場合は、 誤った図面を作らないよう、その箇所だけエラーとして処理し、次の箇所へ進む。
箇所名・渓流名・所在地の取得先
公示図書の表題欄に表示する箇所名、渓流名、所在地は、 Shapefileの図形から取得しているのではなく、 Excelの管理一覧から作成された管理CSVを参照している。
土石流の場合は、調書Excelの「表紙」シートにある次のセルが元になる。
C6 :渓流番号
C9 :渓流名
C10 :所在地
ここが空欄だったり、渓流番号と渓流名が同じセルにまとめて入力されていたりすると、 管理一覧、フォルダ名、SFF属性が一致せず、各渓流フォルダへShapefileが 振り分けられない場合がある。
正常に進めるための手順
1.管理型調書作成ツールでShapefileを作る
ツール
→ 納品データ(Shapefile)の作成
Shape_Data\Allを作成する。
2.Excelの初期設定を行う
DM.shp参照パス
Excel調書参照パス
SFF出力ALLSHP保存先パス
公示データ保存先パス
3段目には、all_UPOINT.shpなどが直接入っているフォルダを指定する。
3.管理一覧とフォルダを作る
①管理一覧および構成作成
4.QGISでALLシェイプを作る
■急傾斜ALLshp作成_ALL_run.py
フィーチャ数が0件になっていないか確認する。
5.公示図書を出力する
標準ツールの手順では、各QGISプロジェクトを開き、 対応するPythonを実行してから印刷する。 今回作成した一括出力版を使う場合は、 ALLシェイプ作成後のQGISから一括出力Pythonを1回実行する。
急傾斜:
■急傾斜_公示図書PDF一括出力.py
土石流:
■土石流_公示図書PDF一括出力.py
表示された画面で対象フォルダ、用紙サイズ、縮尺、出力する様式、 PDF出力先、プリンタを指定し、「一括出力を開始」を押す。
配布されているツールは修正した方がよい
今回確認した限り、県のサイトで配布されている公示図書作成ツールは、 そのまま使うにはいくつか問題がある。
- テスト環境の絶対パスが残っている
- DMの文字コード指定がない
- テンプレートと実際のDMでフィールド名が合っていない
- データが0件でも処理完了になる
- 必要なファイルがなくても処理を継続する
- 異常時のメッセージが分かりにくい
- 箇所・様式ごとにPython実行と印刷を繰り返す必要がある
県のサイトでは標準ツールとして配布されているため、 利用者ごとにPythonやQGISの分類設定を修正する前提では困る。
少なくとも、次の修正を行った版に差し替えた方がよいと思う。
- DMの文字コードを正しく設定する
- 実際のDM属性に合わせてテンプレートを更新する
- テスト用絶対パスを削除する
- 必須データがない場合は処理を停止する
まとめ
今回一番困ったのは、エラーが出ずに最後まで処理が進むことだった。 「処理完了」と表示されても、正常にデータができたとは限らない。
確認した方がよいのは次の点。
- 指定したパスに必要なファイルがあるか
- レイヤのフィーチャ数が0件ではないか
- 日本語のフィールド名が文字化けしていないか
- 分類やラベルの参照先が実データと合っているか
- 建物色、標高、地名が正しく表示されているか
仕組みが分かれば、Pythonで処理内容を確認したり修正できる点は便利だと思う。 ただ、県の標準ツールとして使うのであれば、 利用者がPythonやQGISの属性構成を調べなくても動く状態にしておく必要がある。
現状のツールは、操作手順の問題だけではなく、 配布されているテンプレートと実際のデータ構成が合っていない部分があるため、 ツール側の修正が必要だと思う。
また、個別にPythonを実行して印刷する作業は自動化しやすい部分である。 今回作成した一括出力版では、対象フォルダと出力条件を指定するだけで、 PDF作成とDocuWorks等への印刷をまとめて実行できるようになった。 対象箇所が多い業務では、作業時間の短縮だけでなく、印刷漏れや選択間違いの防止にもつながる。
コメント
コメントを投稿