頭前溪知識圖譜與科技地景

頭前溪流域:知識圖譜與權力維度探索 (Master Plan)

「水權即政權,權力即空間。」 作為 11 個流域探索的最終站,同時也是哈爸的居住地,頭前溪計畫不再只是河道走查。受到 HGIS 系列五:知識圖譜 的啟發,我們將這份 8 日模組化計畫升級為 「Entity-Bound(角色繫結)」 的時空導航。 為什麼這麼做? (Why This Path?) 傳統的河流研究(如 AIBook 3)過於偏重工業供水與美學工程(如豆腐岩)。但在《新竹五書》與歷史地圖的層層堆疊下,頭前溪其實是一張由 士紳家族 與 四大名圳 編織而成的權力網。我們將探索焦點從「設施」轉向「角色(Agents)」。 四大權力弧線 (The Four Arcs) 本計畫拆解為四大弧線,使用者可依據興趣與時間隨時調用對應的「模組」。 1. 邊界與隘墾之弧 (Arc of the Frontier) 探索點位:五峰源頭、北埔姜家 (金廣福)、竹東圳取水口。 繫結角色:泰雅族主權者、莊進連、姜氏家族。 核心命題:山區水源如何被「轉化」為支撐全球貿易(茶、煤)的原始資本? 2. 規劃師的藍圖之弧 (Arc of the Planner) 探索點位:隆恩堰、隆恩圳/汀甫圳分水分離點、竹蓮寺。 繫結角色:王世傑 (Wang Shijie)。 核心命題:清初規劃師如何運用灌溉工程養活肉體,再用信仰中心(竹蓮寺)定錨精神? 3. 士紳地景之弧 (Arc of the Gentry) 探索點位:東興圳 (竹北)、六家問禮堂、汀甫圳 (高地段)。 繫結角色:六家林家 (新竹五書)、北門鄭家。 核心命題:水權如何分層?為何斜向流動的東興圳,能在高鐵特區的格子街道中存活下來? 4. 門戶與微血管之弧 (Arc of the Gateway) 探索點位:槺榔驛 (輕便車)、舊港島、南寮。 繫結角色:新竹軌道株式會社、島港豐巢團隊。 核心命題:資源產出的最後一公里路,以及 1898 戊戌大水後的城市韌性。 數位探索資產 (Digital Assets) 本計畫提供具備「角色屬性」的互動資產,在 Google My Maps 上點擊圖釘即可看到繫結的人物故事。 ...

2026-03-24 · 1 min · 120 words · Wuulong

從地圖對合到時空演義:考古遺跡、生存原理與《流域導航》v2.1 建模釋出

在兩週前,我們釋出了《流域導航》v2.0,確立了「HGIS Layer 0-1-2」的三層知識架構,並透過 hgis-atlas-architect 技能大幅提升了地名與史料的對合效率。 然而,隨著我們深入曾文溪流域的「青瞑蛇」改道史,我們撞上了一個數位探索的核心挑戰:當文字史料斷裂時,該如何導航? 今日,我們正式釋出 《流域導航》v2.1 (Relic & Deep-Time Modeling)。這是一個從「行政地名變遷」跨越到「萬年尺度生存演義」的重要版本。 為什麼要有 v2.1?看見「超越文獻」的硬證據 文字會撒謊,行政邊界會消失,但土地上的「硬證據」——考古遺蹟 (Relics)——是誠實的。 在 v2.1 中,我們引入了 Layer 3 (屬性推論與演繹) 與 Layer 4 (空間拓樸) 的完整定義。我們不再滿足於「標註一個點」,而是要「還原一套生存邏輯」。 核心突破一:OO-History (物件導向歷史) 建模 為了處理全台 2,500 處以上的考古遺址而不迷失,我們導入了軟體工程中的物件導向思維。我們建立了 Root-Spec-Entity 三層繼承架構: 90% 繼承 (Era Spec):直接繼承特定時代(如:大坌坑文化)的「共性樣態」。 10% 覆寫 (Relic Entity):僅針對特定遺址的「異常證據」(如:南科遺址中超前出現的稻米)進行考證與標籤覆寫。 這套方法顯著降低了歷史數據厚化的成本,讓我們能以「集團軍」的方式,快速為數千個歷史物件立起具備深度的「生活樣態框架」。相關規格已對齊 MASTER_HISTORY_SCHEMA.json 字典。 核心突破二:生存第一原理與「能源平衡模型」 在 Layer 3 的演義中,我們引入了系統工程的視角。我們將史前家庭視為尋求「能源平衡 (Energy Balance)」的運算單元: 輸入:河口、潟湖與森林格網的資源產量。 能耗:維持生命與遷徙的物理成本。 遷徙演算法 (Migration Algorithm):當資源密度不足以支撐能耗,族群如何根據「空間記憶」進行決策。 這讓我們產生了一份極具震撼力的 「南科案例」:模擬五千多年前,當曾文溪主流北移、潟湖淡水化時,南科先民如何展現「跟著河口跑」的追蹤式遷徙樣態。 核心突破三:「預測 -> 驗證 -> 修正」的建模迴圈 v2.1 的操作心法從「讀圖」變成了「對抗」: 原理發想 (Prediction):根據生存原理,在腦中先立起「建築基本樣態」。 證據對合 (Verification):將發想與 taiwan-history-atlas 的實測考古數據(如:離河距離 HRD 聚類、高程位能指標)進行對撞。 假說重構 (Correction):透過「差異值」發現歷史真相——如果發想與數據不符,通常代表我們發現了「技術突變」或「族群例外的生存策略」。 結語:導航在一場永無止盡的演義中 《流域導航》v2.1 的釋出,象徵著這套系統已具備了「跨時空虛擬對合」的雛形。當你不再看見單純的風景,而是看見一組組具備生存邏輯、不斷進化的物件時,你才真正讀懂了流域。 ...

2026-03-09 · 1 min · 85 words · Wuulong

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

Z 軸的證言:用 DTM 高程還原海陸三千載

在完成平面位置 (X, Y) 的座標標註與河流距離分析後,我總覺得地圖還少了點什麼。直到我們引入了 Z 軸——也就是高程數據,整個曾文溪流域的歷史才真正「活」了起來。 這是我在 HGIS 建模中最精彩的一場實驗:運用 20m DTM (數位地形模型),讓遺址開口說出三千年來海陸變遷的秘密。 🏔️ 海拔高度:決定「是海還是陸」的生死線 在台南平原,海拔 5 到 10 公尺是一個神奇的區間。 透過 scripts/enrich_sites_with_elevation.py,我們讓 133 處曾文溪流域遺址自動去匹配內政部的 DTM 資料。這是一個跨縣市的圖磚掃描工具,能精確取出每一筆數據的高度。 考古證詞:南科考古館的案例 以 南科考古館 為例,其海拔約 5-7 公尺。 三千年前:這裡的海拔正好處於古台江內海的沙丘邊緣。大坌坑遺址中發現的「貝塚」,證明了這裡曾是海景第一排。 一千年前:隨著曾文溪泥沙沖積,海拔 6 公尺處變成了濕地與三角洲。 今日:它縮到了離海岸 30 公里的平原中心。 海拔等高線,正是這場「海退人進」演義中的指揮線。 🤖 Layer 3:讓 AI 具備「大歷史語義」 當我們有了 XY 座標、河流距離與 Z 軸高度後,我問了 AI 助理一個問題:「能根據這些數據,幫我寫出一段吸引人的導覽文字嗎?」 這就是 Layer 3:大歷史語義層 (Semantic Context Layer)。 我開發了 scripts/batch_l3_enrichment.py 作業管線。它不只是跑跑程式,而是讓 Gemini 扮演一位考古學家,結合這三個維度的數據,自動生成「地理歷史脈絡」。 AI 生成範例: 「這處遺址位於海拔 540 公尺的穩定河階,離曾文溪主流恰好保持 2.2 公里的安全觀測距離。這顯示先民在金屬器時代已具備極強的避災智慧,選擇了這塊永遠免疫洪水改道的『定海神針』…」 🛠️ 釋出指南 (Release Guide) 這一系列針對考古與地貌的深度模型,我已全數彙整進 Taiwan History Atlas 儲存庫的 v260306.1 更新 中。 ...

2026-03-06 · 1 min · 125 words · Wuulong

空間拓樸:尋找遺址與河的『生存甜蜜點』

當我們在地圖上標註了全台兩千五百多個考古遺址後,下一個問題是:「為什麼他們要住在這?」 在傳統的 HGIS 中,我們習慣去找「古地圖」。但面對三千年前的遺址,世界地圖還是一片空白。這時,我們必須切換思維,引入 Layer 4:空間拓樸分析 (Spatial Topology)。 📐 什麼是 Layer 4?跳脫物理地表的「相對關係」 如果說 L1 是點位,L2 是知識,那麼 Layer 4 就是「點與環境的交互作用」。 我不想只是知道遺址在哪裡,我想知道它與「生存資源」——特別是河流的幾何關係。在曾文溪流域,河道會擺盪、海岸線會進退,但人類對於「取水與避災」的空間邏輯往往是恆定的。 透過 scripts/poc_l4_tributary_clustering.py 這個對合引擎,我們讓 2,249 個遺址自動去尋找它們對應的主流與支流,計算出精確的「離水距離」。 📊 數據發現:離水 2.5 公里的生存密碼 透過分析,我們在曾文溪流域發現了一個驚人的統計規律: 濱海初始期:離水最近距離平均約 2,700 公尺。 長期定居點:離水最近距離平均約 2,200 公尺。 這是一個 「生存甜蜜點」。 在那個沒有堤防的年代,住得太近(如 1km 內)會面臨曾文溪猛烈氾濫的改道威脅;住得太遠又取水不便。 這 2.5 公里的緩衝帶,正是史前先民在沒有現代水利工程的情況下,利用地形與距離「換取安全」的生存智慧。 🛠️ 核心工具:空間特徵標記 (Feature Extractor) 為了實現這種規模的運算,我在儲存庫中提供了一個關鍵腳本: scripts/feature_extractor.py:它不只記錄座標,更會透過幾何運算為每個點位打上「空間標籤」。例如:是否位於「河流樞紐」、屬於哪個「次流域」、以及其「離水梯度」。 這樣的設計,讓 AI Agent 在解讀資料時,不再只是讀到一串數字,而是讀到一個 「人類與環境博弈的空間邏輯」。 🤖 AI Skill 的深度應用 這項分析成果已整合進我們的 HGIS Architect AI Skill。 目前的 AI 助理不再只是會翻翻方志摘要,當你開啟此 Skill 並指向一個座標時,它能調用 L4 的拓樸數據告訴你:「這個位置雖然現在離曾文溪很遠,但在三千年前,它正好位於主要支流的交會口,是一個戰略性的交通節點。」 ...

2026-03-06 · 1 min · 93 words · Wuulong

地底下的台灣:如何用 AI 打造『全台考古遺址』知識 Master Registry

在之前的 HGIS 系列中,我們主要處理的是「紙上的歷史」——透過方志與古籍還原清代的社會空間。然而,要真正觸摸到「台灣主體性」最深層的脈絡,我們必須將目光投向更長的時間尺度:考古遺址。 如果說《臺灣通史》記載的是數百年的族群演進,那麼埋藏在台南平原地底下的「文化層」,則是長達數千年的地景變遷證詞。 今天,我正式在 Taiwan History Atlas 專案中發布了 v260306.1 更新,核心重點就在於建構一套具備「血緣追蹤」能力的 考古遺址 Master Registry (主註冊表)。 🏛️ 為什麼我們需要 Master Registry? 在處理全台遺址資料時,最頭痛的不是「沒資料」,而是「資料太多且碎片化」。文資局有「法定遺址」、中研院有「普查遺址」、地方政府還有「疑似遺址」。 要在 AI 輔助下進行科學分析,我們不能只是貼貼補補,必須建立一個 Master Registry: 資料對齊:解決同一個遺址在不同單位有不同名字 or 座標微差的問題。 層級化建模:將原始資料 (L0) 轉化為帶有語義標籤的實體 (L1),再整合進知識中樞 (L2)。 血緣追蹤 (Source Origin):每一筆數據都能回溯到是哪個單位的原始點位,確保「證據力」。 目前這套系統已成功整合了 2,563 處 遺址,成為我們 HGIS 引擎中最堅實的核心數據庫。 🛠️ 核心腳本與工作流 (Scripts Toolkit) 在 taiwan-history-atlas 儲存庫中,我們透過以下工具實現了這一流程: 1. Layer 1:實體萃取與特徵標記 利用 scripts/extract_entities.py,AI 會自動掃描原始 Open Data 文本,提取出: 文化年代:從大坌坑、蔦松到金屬器時代。 遺址等級:Rank 1(國定)到 Rank 4(疑似)。 特徵標籤:貝塚、石器、多層疊壓等。 2. Layer 2:跨庫遷移與合成 使用 scripts/atlas_migrator.py,將分散在各區域的實體統一遷移至 data/history_atlas.db。這個過程不只是搬家,更是在進行「去重 (De-duplication)」與「血緣標註」。 ...

2026-03-06 · 1 min · 136 words · Wuulong

歷史的降維打擊:將「竹塹五書」煉成 HGIS 空間知識庫

當我們開始嘗試將 AI 與歷史地理資訊系統 (HGIS) 結合時,最初是在探勘總體性的《臺灣通史》。但歷史的魔鬼往往藏在地方的細節裡。 為了驗證我們的架構是否具備「橫向擴展」到區域史料的能力,我將目光轉向了北台灣早期的政經中心——竹塹 (新竹)。這次,我決定一次挑戰五本重量級的地方方志:《新竹縣採訪冊》、《淡水廳志》、《樹杞林志》、《新竹縣志初稿》、《新竹縣制度考》。 這五本書,總計 34 卷、9,000 多條史料片段。如果單靠純文本搜尋,那就像是在汪洋中撈針。 今天,我正式在 Taiwan History Atlas 專案中,釋出了這套針對新竹史料開發的「多書跨卷整合與空間對合框架」,並同步上線了 竹塹五書歷史知識地圖。 🏗️ L0-L1-L2:史料的階梯式煉金術 要讓 AI 不會在這 9,000 多條文獻中「幻覺」,我們採用了嚴謹的「分散式溯源,集中式建模」三層架構: 1. L0 文獻底座 (Text ETL) 有別於單一文本,地方方志的卷次編排極度不一致。透過 hsinchu_multi_loader.py,我們實作了多種 Regex 解析器,一次性將五本史書的目錄、卷次、條目全部打散又重組,完美塞入 hsinchu_history.db 的標準 Documents -> Volumes -> Contents 結構中。 2. L1 實體萃取與降維對合 (Entities & Linkage) 光有文字不夠,我們需要提取「有意義」的節點。 透過 AI 輔助腳本,我們一口氣從五書中抓出了三類實體: Infrastructure (基礎建設):1,410 筆(橋樑、隘口、古道、城門等)。 Location (聚落空間):4,343 筆(堡、里、庄、社、窠、坑等)。 Irrigation (水利開發):834 筆(陂圳、埤塘、水門等)。 但困難來了:古地名在地圖上是找不到座標的! 例如史書寫「隆恩圳」或「林先坤陂」,現代 Google Map 根本不知道在哪。 這時我們啟動了 「地理特徵降維打擊」 的演算法。我們寫了清洗函數(如 clean_infra_name, clean_water_name),把地名的尾巴(像是 xxx庄、xxx圳、xxx城門)全部剁掉,只保留核心字根。 ...

2026-02-23 · 1 min · 159 words · Wuulong

給數位田野的升級指引:從敘事到技能,《流域導航》v2.0 正式釋出與 HGIS 三層架構實踐

在完成《個人賦能》書籍的集成後,我的注意力重新回到了這片土地。 過去一週,我們對《流域導讀》(現正式更名為《流域導航》)進行了一場堪稱「範式轉移」的升級。如果說 v1.0 是我帶著你「看」河流的故事,那麼今日釋出的 v2.0,則是交付給你一套能跟河流「對話」的數位技能組。 這不只是一本書的改版,這是一場關於「認知效率」的革命。 為什麼要有 v2.0?從「敘事」轉向「技能」 在實地探勘曾文溪與二仁溪的過程中,我發現一個巨大的痛點:即使我有再多的熱情,面對百年的地理變遷與海量的史料,單靠人力去對合座標與文獻,效率實在太慢。 於是,在 v2.0 中,我們確立了 「Skill-First Approach (技能優先)」 的核心方針。我們不再只是寫下河流的歷史,而是開發一套名為 hgis-atlas-architect 的 AI 技能,讓 AI 助理化身為歷史地理架構師。 核心突破一:HGIS Layer 0-1-2 三層架構 我們定義了土地知識的演進路徑: Layer 0 (原始資產):1920 年代的 SHP 圖資與《臺灣通史》的 60 萬字原文。 Layer 1 (結構實體):透過 AI 萃取的 3,000+ 個古地名、埤圳與先賢索引。 Layer 2 (知識中樞):將土地的「變遷邏輯」建模。例如,我們不再只是標註「蘇厝」在哪裡,而是建模「曾文溪改道如何影響聚落遷移」的動力學模型。 這套方法論,已完整寫入書籍的 Chapter 2.4 (方法論) 與 Chapter 10 (AI 分析師) 中。 核心突破二:極速對合的「15 分鐘法則」 在 v2.0 的實踐案例中(曾文溪與二仁溪),我們驗證了一項驚人的數據:當我們將 HGIS 流程封裝成 AI Skill 後,針對一個完整流域的歷史對合(包含 500+ 個 POI 的史料厚化與座標校準),由原本需要數天的工程,縮短至 15 分鐘。 ...

2026-02-23 · 1 min · 106 words · Wuulong

曾文溪 HGIS 厚數據實作:從 1920 大字到《臺灣通史》的時空對合

在《台灣歷史知識地圖》Layer 2 架構釋出後,我們隨即投入了第一個實戰場域:曾文溪流域。 這次的目標非常明確:我們不再滿足於地圖上冷冰冰的座標點,而是要透過「時空對合」技術,讓曾文溪流域的 696 個 POI 全部具備歷史靈魂與文獻厚度。 任務目標:構建曾文溪「厚數據」圖層 傳統的地圖標註往往只有名稱與座標,但我們希望構建的是具備歷史深度 (Depth)、水利脈絡 (Context) 與 因果邏輯 (Logic) 的「厚數據 POI」。 這意味著,當你走到曾文溪畔的一個小村落時,AI 不僅能告訴你這裡是哪裡,還能告訴你: 這個地名在 1920 年代的行政歸屬。 它在《臺灣通史》或其他地方志中被如何記載。 它與曾文溪水系(如埤圳、改道)的深層互動關係。 製作歷程:數位考古的三部曲 這次的產製過程是一次典型的「AI 協作數位鍊金術」,分為三個階段: 1. 空間鎖定層 (Spatial Anchor) 利用中研院提供的 1920 年代行政邊界 SHP 檔,與曾文溪流域範圍進行空間交集。我們篩選出了 100 個「大字 (Oaza)」點位,並計算其精確的 WGS84 座標。這是將歷史文本對齊到現代地圖的「時空錨點」。 2. 文獻厚化層 (Textual Enrichment) 這是最精彩的部分。我們開發了專門的萃取腳本,針對這 100 個古名點位,自動檢索 taiwan_history.db。 跨庫鉤稽:除了 1920 年代的官方資料,我們更進一步引入了內政部古地名庫的 37,758 筆資料,篩選出流域內的 813 筆關鍵紀錄。 故事萃取:不僅抓取名稱,更重點提取「地名由來(Place Mean)」,例如某個村落是因為躲避曾文溪改道水患而搬遷的。 3. 邏輯建模與匯入 最後,我們將這些分散的片段,透過 Python 腳本整合為 WalkGIS 特徵檔案。總計 696 個厚數據 POI 被正式匯入系統。 成果展示:三個有靈魂的 POI 讓我們看看這套流程產出的成果: ...

2026-02-23 · 1 min · 131 words · Wuulong