立霧溪 DTM 水理模擬成果

立霧溪水化:從 20m DTM 萃取「絕對連通」潛勢溪流的技術長征

立霧溪水化:從 20m DTM 萃取「絕對連通」潛勢溪流的技術長征 最近在進行 2026 台灣河流探索:立霧溪 的計畫中,遇到了一個困難問題:「官方的河道路網在深山峽谷裡不夠用。」 為了在 Google My Maps 上能有精確的導航,我決定啟動一場「數位成河」的挑戰——從 203 張 DTM 網格中,重新模擬出立霧溪的水脈靈魂。 這是一場關於環境韌性、演算法優化與「繞過限制」的戰鬥。 1. 數據獵取:在 40 萬顆網格間尋寶 這場比賽的第一關是數據獲取。內政部地政司提供了高品質的 20m DTM (數值地形模型)。但下載下來後,是數百個碎片化的 .grd 檔案。 技術筆記:千萬別試圖用 Python 逐一讀取。直接調用 gdal_merge.py 進行物理合併,並強制使用 EPSG:3826 (TWD97/TM2) 座標定錨,這是台灣所有官方地形資產的生命線。 2. 演算法的七次轉生:從「碎虛線」到「大河模型」 剛開始模擬時,我們遇到了經典的碎裂問題。D8 演算法在極端陡峭的太魯閣峽谷中,會因為數位噪聲產生無數的「鬍渣」支流,這在手機地圖上簡直是一場視覺災難。 經歷了七個版本的迭代,我們總結出的 「大河模擬黃金標準 (V7)」 是: [V1-V3] 拓樸追蹤:將離散點串成線,確立了河流的連通性基礎。 [V5-V6] 40m 重採樣:在寬廣河谷(如天祥河床),20m 的解析度反而太精細,小石頭會擋住流路。將解析度降階到 40m,反而能「看透」大河深槽的路徑。 [V7] Priority-Flood Routing:這是最關鍵的突破。我們在填補地表窪地的同時,就「強行鎖定」每一格往海洋的唯一洩水路徑。這解決了平原河床「0 坡度」導致的斷流悲劇。 3. 爆破 2000 個物件的「透明牆」 當我們興奮地把幾千條河道支流匯入 Google My Maps 時,遇到了著名的 「2000 項目限制牆」。Google 說:「你的地圖太豐富了,我裝不下。」 這時,我們應用了 「物件原子化 (The Atomizer Pattern)」: 我們將 5,306 段官方河道網格,透過 KML 的 MultiGeometry 標籤,全部釘死在 同一個物件元件 裡。對 Google 來說,它只是一個「稍微大一點的物件」,而非幾千個物件。 ...

2026-03-25 · 1 min · 114 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 的數位鏈金術 (1):當 DTM 數值地形遇上在地 curiosity——解開「潭後」與「黃金洞」之謎

一切的起點,源自於對家鄉地名的好奇。 老爸出生在潭後,但我一直不知道為什麼是這個名字。這裡沒有水潭,何來「潭後」之名?如果只是在 Google Maps 上滑動縮放,這個問題可能永遠得不到解答,因為現代的衛星空照圖,早就被密集的建築與柏油路給覆蓋。 於是我開始在網路上搜尋,想知道名稱的可能由來。透過查閱資料,我找到了「北庄13」這條線索,並追溯到了開墾先賢王世傑的紀錄。這才發現,原來在古書中指出,以前頭前溪在此處曾經有一個深潭。 更引人入勝的是,古書原文中還記載著附近有「黃金洞」,但我身為在地人卻從來沒有聽過這個詞!於是,我開始在各種古書中搜尋「黃金洞」,這便是為什麼後來會需要下載並整理好幾本地方志與史書的原因。 例如在《新竹縣採訪冊》記載著水圳「西南行二里至黃金洞,又三里至潭後莊」,另有紀錄點出「西南行一里許至黃金洞,鑿山三十餘丈引水出…經潭後」。這些古籍清晰地描繪了水路行經的節點,但對「黃金洞」本身僅有文字描述,大意就是「在潭後到九甲埔中間有個高起的小山,所以需要挖隧道引水」。既然只有文字描述,於是我心想:那或許可以從 DTM 數值地形去分析它大概的位置? 我不甘於僅止於文字記載,決定戴上另一副眼鏡——打開具備高解析度的高程資料,俗稱 DTM (Digital Terrain Model) 數值地形圖,試圖在地表尋找先民的遺跡。 DTM 就像是將地表的樹木與建築物全部扒光,只留下最純粹的山地與溝壑起伏。當我將「潭後」附近的地形顯示在 QGIS 上,經由 GIS 處理與高程分析後,確實可以看到一條具備劇烈落差的線。 雖然看到這條線,但傳說中的「黃金洞」確切點位在哪,一開始還是不太知道。於是我將它與目前的現代地圖進行疊加,赫然發現那條異常落差的線上,剛好就有目前的「水源街取水口」! 直覺告訴我:就是這裡了。而再經過後續的文獻交叉比對,那裡證實就是傳說中「黃金洞」的所在。 這不是外星人的遺跡,而是兩百多年前,我們的先民在缺乏現代大型機具的情況下,為了將水資源從頭前溪引進竹塹平原,硬生生地以人力穿山鑿石,刻下的大型水利基建(引水穿山的隧道)。有了這條隧道,龐大的水流才得以穿過高起的小山,灌溉出兩千甲的良田。 這個 Aha Moment 深深震撼了我。 我體悟到一件事:「地理,其實就是凝固的歷史。」 現代地表上看起來微不足道的一個小土丘、一條乾涸的溝渠、甚至只是一個站牌的名稱「潭後」,在數百年前,可能都是決定整座城市生死存亡的戰略設施。 但下一個問題來了:這條水路是誰修的?什麼時候修的?除了「黃金洞」,台灣的地底下是不是還有無數條這樣凝固在時間裡的生命線? 為了解開這些謎團,過程中勢必會需要將古書記載與真實的古地圖進行疊加比對。因此,我想先探索一下中央研究院(中研院)到底有哪些相關的歷史圖資資源可以使用。 (未完待續:下一篇,我們將打開中研院的百寶箱,解析歷史圖資的魔法!) 本文為哈爸與 AI 助理協作產出,紀錄實體探勘與數位工程之歷程。

2026-02-22 · 1 min · 37 words · Wuulong