QGIS 自動化進階篇:從視覺標註 (POC2) 到空間分析 (POC3) 的進化歷程

在實現 QGIS 專案「一鍵生成」的路上,我們不僅要讓圖層「開得出來」,更要讓它「具備研究價值」。 這篇文章記錄了我們從 POC2 (樣式與標籤整合) 進化到 POC3 (空間分析與 SDM 紀律) 的完整心路歷程。這兩個階段分別解決了製圖中的「美學溝通」與「科學建模」兩大核心問題。 🎨 POC2:視覺精煉與動態標籤 (Visualization & Labeling) 目的:讓地圖「會說話」,透過自動化配置解決手動製圖中最繁瑣的排版工作。 在 POC1 成功掛載圖層後,我們發現原始的點位與線條在混亂的歷史底圖(如台灣堡圖)上極難辨識。POC2 的核心目標即是透過腳本,賦予地圖專業的視覺外觀。 1. 幾何感知的自動標註 (Geometry-aware placement) 我們實現了腳本對圖層類型的自動識別與對應配置: 點位圖層 (遺址):自動採用 Centroid 配置,讓標籤精確落在遺址中心。 線段圖層 (河流):自動切換為 Around Line (平行排列),並預設帶有 0.5mm 的偏移量。這讓河名能順著水流蜿蜒,展現專業製圖感。 2. 跨平台字型與視覺消隱 (The macOS Fix) 我們在 POC2 中遭遇了字型相容性的重擊。原本預設的字型在 Mac 上會毀掉專案解析。最終,我們強制切換為 PingFang TC (萍方-繁),並自動啟用了 0.7mm 白色光暈 (Text Buffer)。這小小的光暈,是讓地圖文字從花綠底圖中「浮現」出來的關鍵。 🛡️ POC3:空間分析中樞與 SDM 紀律 (Advanced Analysis & SDM) 目的:從「資料顯示」進化為「規律開發」,在不污染原始數據的前提下,自動生成分析模型。 當地圖變漂亮後,下一步就是「看見模式」。POC3 挑戰的是自動產出具有研究深度的分析圖層(如海拔區間與熱點圖)。 1. 恪守 SDM 紀律:絕對不改動原始資料 (Data Hub Snapshot) 開發者常為了分析方便,在原始 SQLite 裡建 View。但對歷史數據來說,原始碼應該是神聖的 (Holy Source)。 我們實作了「局部資料中樞 (Local Data Hub)」:腳本在產出專案的一瞬間,自動建立一個 poc_data_hub.db 快照。所有的 JSON 萃取、高程分區計算都只存在於這份快照中。原始 HGIS 資料庫保持 100% 乾淨,專案檔則是「可打包、可重製、可拋棄」的。 ...

2026-03-07 · 1 min · 176 words · Wuulong

軟體定義地圖:從 SQLite 到一鍵生成的 QGIS 專案自動化 (SDM)

在進行 HGIS(歷史地理資訊系統)研究時,我發現最耗時的往往不是分析數據,而是「準備地圖」。每次要開啟一個新研究,總要重複掛載百年歷史底圖、設定 KML 座標、調整 SQLite 的 SQL 篩選器…。 為了打破這個瓶頸,我發起了一場實驗:能不能像寫程式一樣,用「寫」的出一份 QGIS 專案? 這就是我最近在推動的 軟體定義地圖 (Software-Defined Maps, SDM) 概念。 🏗️ 為什麼要自動化? 如果你手動配置過 QGIS,你一定遇過這些崩潰瞬間: URL 特殊字元破壞專案:WMTS 的 URL 裡一堆 &,手動貼上 XML 常報錯。 座標系統 (CRS) 位移:明明設定了 WGS84,圖層卻飄到非洲西岸海面(座標 0,0)。 重複定義的勞力:每個專案都要重新分組(底圖、水理、點位),這應該交給機器人。 透過 Python + Jinja2 模板,我們可以把地圖專案變成可程式化的零件。 🛠️ 基本作法:Jinja2 零件化 核心思路是將 .qgs 專案檔(實質是 XML)拆解為模板。 我們建立了一個 base_project.qgs.j2,裡面預留了動態注入的內容: 層級化圖層樹:自動生成的分組。 資料源設定:SQL 篩選指令與檔案路徑。 空間參考系統:自動注入對應的 AuthID、Proj4 與 SRID。 最關鍵的「零件庫」是 GIS_KNOWLEDGE.yaml。它充當了 GIS 資源的「DNS 伺服器」,記錄了所有中研院底圖、本機 KML 與資料庫的 Metadata。 🚀 第一階段 POC:曾文溪 HGIS 數位中樞 在這次的 POC 中,我們成功實現了 Zengwen_HGIS_Hub.qgs 的一鍵產出: ...

2026-03-07 · 1 min · 144 words · Wuulong