解碼水利署官方資料:淡水河水系拓樸的 Python 萃取與 Mermaid 樹狀視覺化實踐#
在河流地學與 GIS 探索中,理解一條大河的「水系拓樸(River Network Topology)」是核心基石。拓樸關係告訴我們哪條溪是主流,哪條是支流,水流又是如何從小溪匯入大河,最終流向大海的。這不僅是空間幾何,更是史前先民定居、現代水利發電與防洪工程設計的底層邏輯。
為了取得最權威的拓樸定義,我找到了經濟部水利署(WRA)公佈的 《台灣地區河川拓樸(112 年)》官方 PDF。然而,這份權威的資料僅以 PDF 表格形式存在,且在機器讀取時存在許多格式斷線與字元夾雜的坑。
這篇筆記記錄了我如何透過 Python 撰寫對合腳本,從二進位 PDF 中萃取出乾淨的樹狀結構,並以 Mermaid 語法自動繪製出淡水河完整流向拓樸的實踐過程。
🛠️ 技術挑戰與解題思路#
PDF 格式本質上是為了「視覺排版」而非「數據讀取」設計的,因此在進行數據萃取時,我們遇到了三個主要的實作挑戰:
挑戰 1:跨行文字斷線(Line-wrapping)#
在 PDF 轉換為純文字時,部分較長的河川名稱(例如:鶯歌溪(兔子坑溪排水)、暖暖溪(含東勢坑溪))會因為表格寬度限制而被強行折行:
鶯歌溪(兔子坑溪排
水) 114012 0@114000@114010@114012 Q16929506這導致正則表達式在匹配時,會把第一行漏掉,而第二行則只匹配到 水) 作為河川名稱。
- 解法:在 Python 迴圈中建立一個
prefix快取區。如果某一行沒有匹配到標準的代碼與拓樸格式,且結尾不是數字,就將其暫存為prefix,並在下一行成功匹配時將其拼接回去。
挑戰 2:Unicode 正則匹配 bug(中文與拓樸代碼混淆)#
水利署的拓樸路徑是用 @ 符號串接河川代碼(例如:0@114000@114010@114011),而部分欄位結尾會黏連著中文備註,如 0@114000@114010@114011@11401C二鬮溪。
在 Python 3 中,正則表達式 \w 預設會匹配 Unicode 字符(包括中文字)。因此 [\d@\w]+ 會直接將 二鬮溪 誤判為拓樸路徑的一部分。
- 解法:將拓樸路徑的正則規則從
[\d@\w]+剛性限制為英數與@符號[0-9a-zA-Z@]+。這能精確截斷拓樸邊界,並將剩餘的二鬮溪作為別名(Alias)自動括號歸併入河川名稱中,形成麻園溪(二鬮溪)。
挑戰 3:過濾表格頁首雜訊#
PDF 跨頁時會重複出現表頭資訊,如 河川名稱 河川 代碼 河川拓樸,這些非數據行如果不進行清洗,會被誤判為斷線名稱。
- 解法:在快取過濾中增加黑名單判斷,凡是包含「代碼」、「拓樸」、「維基」等字眼的行,一律跳過,不寫入
prefix快取。
💻 核心 Python 萃取腳本#
以下是我們在本地 scratch 中運行並驗證通過的數據處理代碼片段:
import pypdf
import re
import json
# 1. 使用 pypdf 提取關鍵字頁面
reader = pypdf.PdfReader("wra_river_topology_112.pdf")
# 匹配規則:名稱 (Group 1)、代碼 (Group 2)、拓樸 (Group 3)、維基數據 (Group 4)
pattern = re.compile(r"^(.+?)\s+([A-Za-z0-9]+)\s+([0-9a-zA-Z@]+)(?:\s+(Q\d+))?")
river_list = []
prefix = ""
for page in reader.pages:
lines = page.extract_text().split("\n")
for line in lines:
line = line.strip()
if not line or "河川" in line or "代碼" in line or line.isdigit():
continue
match = pattern.match(line)
if match:
name = (prefix + match.group(1).strip()).strip()
remaining = line[match.end():].strip()
if remaining:
name = f"{name}({remaining})" # 合併如二鬮溪等別名
prefix = ""
code = match.group(2).strip()
topology = match.group(3).strip()
# 僅提取淡水河水系 (代碼 114 開頭)
if code.startswith("114"):
river_list.append({
"name": name,
"code": code,
"topology": topology
})
else:
if not re.search(r'\d+$', line):
prefix = line🌊 淡水河水系拓樸分析報告 (官方數據還原)#
經過 Python 腳本的精確解析,我們成功重建了淡水河(代碼 114000)的完整拓樸樹。
1. 水系樹狀階層結構#
- 淡水河 (代碼:
114000, 拓樸:0@114000)- 大漢溪 (代碼:
114010, 拓樸:0@114000@114010)- 三峽溪 (代碼:
114011, 拓樸:0@114000@114010@114011)- 大豹溪 (代碼:
11401B, 拓樸:0@114000@114010@114011@11401B) - 麻園溪(二鬮溪) (代碼:
11401C, 拓樸:0@114000@114010@114011@11401C) - 中埔溪 (代碼:
11401D, 拓樸:0@114000@114010@114011@11401D) - 竹崙溪 (代碼:
11401E, 拓樸:0@114000@114010@114011@11401E) - 竹坑溪 (代碼:
11401F, 拓樸:0@114000@114010@114011@11401F) - 橫溪 (代碼:
11401G, 拓樸:0@114000@114010@114011@11401G)
- 大豹溪 (代碼:
- 鶯歌溪(兔子坑溪排水) (代碼:
114012, 拓樸:0@114000@114010@114012) - 塔寮坑溪排水 (代碼:
114013, 拓樸:0@114000@114010@114013) - 塔克金溪 (代碼:
114014, 拓樸:0@114000@114010@114014) - 三光溪 (代碼:
114015, 拓樸:0@114000@114010@114015) - 泰崗溪 (代碼:
114016, 拓樸:0@114000@114010@114016) - 白石溪(薩克雅尖溪) (代碼:
114017, 拓樸:0@114000@114010@114017) - 玉峰溪(馬里闊丸溪) (代碼:
114018, 拓樸:0@114000@114010@114018) - 永福溪幹線 (代碼:
114019, 拓樸:0@114000@114010@114019) - 街口溪幹線 (代碼:
11401A, 拓樸:0@114000@114010@11401A) - 觀音溪幹線 (代碼:
11401H, 拓樸:0@114000@114010@11401H) - 三坑溪幹線 (代碼:
11401I, 拓樸:0@114000@114010@11401I) - 打鐵溪幹線 (代碼:
11401J, 拓樸:0@114000@114010@11401J) - 二坪溪幹線 (代碼:
11401K, 拓樸:0@114000@114010@11401K)
- 三峽溪 (代碼:
- 新店溪 (代碼:
114020, 拓樸:0@114000@114020)- 南勢溪 (代碼:
114021, 拓樸:0@114000@114020@114021)- 桶後溪 (代碼:
11402A, 拓樸:0@114000@114020@114021@11402A) - 軋孔溪 (代碼:
11402P, 拓樸:0@114000@114020@114021@11402P) - 大羅蘭溪 (代碼:
11402Q, 拓樸:0@114000@114020@114021@11402Q)
- 桶後溪 (代碼:
- 北勢溪 (代碼:
114022, 拓樸:0@114000@114020@114022)- 後寮溪 (代碼:
11402B, 拓樸:0@114000@114020@114022@11402B) - 溪尾寮溪 (代碼:
11402C, 拓樸:0@114000@114020@114022@11402C) - 坪溪 (代碼:
11402D, 拓樸:0@114000@114020@114022@11402D) - 灣潭溪 (代碼:
11402E, 拓樸:0@114000@114020@114022@11402E) - 金瓜寮溪 (代碼:
11402F, 拓樸:0@114000@114020@114022@11402F) - 石硿子溪 (代碼:
11402G, 拓樸:0@114000@114020@114022@11402G) - 後坑溪 (代碼:
11402H, 拓樸:0@114000@114020@114022@11402H) - 𩻸魚堀溪 (代碼:
11402O, 拓樸:0@114000@114020@114022@11402O)
- 後寮溪 (代碼:
- 景美溪 (代碼:
114023, 拓樸:0@114000@114020@114023)- 烏塗溪 (代碼:
11402I, 拓樸:0@114000@114020@114023@11402I) - 指南溪 (代碼:
11402J, 拓樸:0@114000@114020@114023@11402J) - 老泉溪 (代碼:
11402K, 拓樸:0@114000@114020@114023@11402K) - 無名溪 (代碼:
11402L, 拓樸:0@114000@114020@114023@11402L) - 中間溪 (代碼:
11402M, 拓樸:0@114000@114020@114023@11402M) - 永定溪 (代碼:
11402N, 拓樸:0@114000@114020@114023@11402N)
- 烏塗溪 (代碼:
- 青潭溪 (代碼:
114024, 拓樸:0@114000@114020@114024)
- 南勢溪 (代碼:
- 基隆河 (代碼:
114030, 拓樸:0@114000@114030)- 暖暖溪(含東勢坑溪) (代碼:
114031, 拓樸:0@114000@114030@114031) - 大武崙溪 (代碼:
114032, 拓樸:0@114000@114030@114032) - 拔西猴溪 (代碼:
114033, 拓樸:0@114000@114030@114033) - 瑪陵坑溪 (代碼:
114034, 拓樸:0@114000@114030@114034) - 友蚋溪 (代碼:
114035, 拓樸:0@114000@114030@114035) - 保長坑溪 (代碼:
114036, 拓樸:0@114000@114030@114036) - 茄苳溪 (代碼:
114037, 拓樸:0@114000@114030@114037) - 禮門溪 (代碼:
114038, 拓樸:0@114000@114030@114038) - 智慧溪 (代碼:
114039, 拓樸:0@114000@114030@114039) - 北港溪 (代碼:
11403A, 拓樸:0@114000@114030@11403A) - 康誥坑溪 (代碼:
11403B, 拓樸:0@114000@114030@11403B) - 下寮溪 (代碼:
11403C, 拓樸:0@114000@114030@11403C) - 大坑溪排水 (代碼:
11403D, 拓樸:0@114000@114030@11403D) - 四分溪 (代碼:
11403E, 拓樸:0@114000@114030@11403E) - 草濫溪 (代碼:
11403F, 拓樸:0@114000@114030@11403F) - 內溝溪排水 (代碼:
11403G, 拓樸:0@114000@114030@11403G)- 安泰溪 (代碼:
11403R, 拓樸:0@114000@114030@11403G@11403R)
- 安泰溪 (代碼:
- 雙溪 (代碼:
11403H, 拓樸:0@114000@114030@11403H)- 內雙溪 (代碼:
11403S, 拓樸:0@114000@114030@11403H@11403S) - 外雙溪 (代碼:
11403T, 拓樸:0@114000@114030@11403H@11403T) - 猴洞坑溪 (代碼:
11403U, 拓樸:0@114000@114030@11403H@11403U)
- 內雙溪 (代碼:
- 磺溪 (代碼:
11403I, 拓樸:0@114000@114030@11403I) - 磺港溪 (代碼:
11403J, 拓樸:0@114000@114030@11403J) - 貴子坑溪 (代碼:
11403K, 拓樸:0@114000@114030@11403K) - 石厝坑溪 (代碼:
11403L, 拓樸:0@114000@114030@11403L) - 拔下二溪 (代碼:
11403M, 拓樸:0@114000@114030@11403M) - 關渡溪 (代碼:
11403N, 拓樸:0@114000@114030@11403N) - 深澳坑溪排水 (代碼:
11403O, 拓樸:0@114000@114030@11403O) - 大內坑溪排水 (代碼:
11403P, 拓樸:0@114000@114030@11403P)
- 暖暖溪(含東勢坑溪) (代碼:
- 大漢溪 (代碼:
2. Mermaid 水文流向圖 (由上游流向下游)#
我們利用 graph BT(Bottom-Up,底端至頂端)繪製,能完美還原支流匯入主流、最終流向淡水河主流口的水文向心性:
看起來,很多小溪沒弄進去。不知道這跟縣市管河川有沒有關係。
graph BT
R_114010["大漢溪 (114010)"] ---> R_114000["淡水河 (114000)"]
R_114011["三峽溪 (114011)"] ---> R_114010["大漢溪 (114010)"]
R_11401B["大豹溪 (11401B)"] ---> R_114011["三峽溪 (114011)"]
R_11401C["麻園溪(二鬮溪) (11401C)"] ---> R_114011["三峽溪 (114011)"]
R_11401D["中埔溪 (11401D)"] ---> R_114011["三峽溪 (114011)"]
R_11401E["竹崙溪 (11401E)"] ---> R_114011["三峽溪 (114011)"]
R_11401F["竹坑溪 (11401F)"] ---> R_114011["三峽溪 (114011)"]
R_11401G["橫溪 (11401G)"] ---> R_114011["三峽溪 (114011)"]
R_114012["鶯歌溪(兔子坑溪排水) (114012)"] ---> R_114010["大漢溪 (114010)"]
R_114013["塔寮坑溪排水 (114013)"] ---> R_114010["大漢溪 (114010)"]
R_114014["塔克金溪 (114014)"] ---> R_114010["大漢溪 (114010)"]
R_114015["三光溪 (114015)"] ---> R_114010["大漢溪 (114010)"]
R_114016["泰崗溪 (114016)"] ---> R_114010["大漢溪 (114010)"]
R_114017["白石溪(薩克雅尖溪) (114017)"] ---> R_114010["大漢溪 (114010)"]
R_114018["玉峰溪(馬里闊丸溪) (114018)"] ---> R_114010["大漢溪 (114010)"]
R_114019["永福溪幹線 (114019)"] ---> R_114010["大漢溪 (114010)"]
R_11401A["街口溪幹線 (11401A)"] ---> R_114010["大漢溪 (114010)"]
R_11401H["觀音溪幹線 (11401H)"] ---> R_114010["大漢溪 (114010)"]
R_11401I["三坑溪幹線 (11401I)"] ---> R_114010["大漢溪 (114010)"]
R_11401J["打鐵溪幹線 (11401J)"] ---> R_114010["大漢溪 (114010)"]
R_11401K["二坪溪幹線 (11401K)"] ---> R_114010["大漢溪 (114010)"]
R_114020["新店溪 (114020)"] ---> R_114000["淡水河 (114000)"]
R_114021["南勢溪 (114021)"] ---> R_114020["新店溪 (114020)"]
R_11402A["桶後溪 (11402A)"] ---> R_114021["南勢溪 (114021)"]
R_11402P["軋孔溪 (11402P)"] ---> R_114021["南勢溪 (114021)"]
R_11402Q["大羅蘭溪 (11402Q)"] ---> R_114021["南勢溪 (114021)"]
R_114022["北勢溪 (114022)"] ---> R_114020["新店溪 (114020)"]
R_11402B["後寮溪 (11402B)"] ---> R_114022["北勢溪 (114022)"]
R_11402C["溪尾寮溪 (11402C)"] ---> R_114022["北勢溪 (114022)"]
R_11402D["坪溪 (11402D)"] ---> R_114022["北勢溪 (114022)"]
R_11402E["灣潭溪 (11402E)"] ---> R_114022["北勢溪 (114022)"]
R_11402F["金瓜寮溪 (11402F)"] ---> R_114022["北勢溪 (114022)"]
R_11402G["石硿子溪 (11402G)"] ---> R_114022["北勢溪 (114022)"]
R_11402H["後坑溪 (11402H)"] ---> R_114022["北勢溪 (114022)"]
R_11402O["𩻸魚堀溪 (11402O)"] ---> R_114022["北勢溪 (114022)"]
R_114023["景美溪 (114023)"] ---> R_114020["新店溪 (114020)"]
R_11402I["烏塗溪 (11402I)"] ---> R_114023["景美溪 (114023)"]
R_11402J["指南溪 (11402J)"] ---> R_114023["景美溪 (114023)"]
R_11402K["老泉溪 (11402K)"] ---> R_114023["景美溪 (114023)"]
R_11402L["無名溪 (11402L)"] ---> R_114023["景美溪 (114023)"]
R_11402M["中間溪 (11402M)"] ---> R_114023["景美溪 (114023)"]
R_11402N["永定溪 (11402N)"] ---> R_114023["景美溪 (114023)"]
R_114024["青潭溪 (114024)"] ---> R_114020["新店溪 (114020)"]
R_114030["基隆河 (114030)"] ---> R_114000["淡水河 (114000)"]
R_114031["暖暖溪(含東勢坑溪) (114031)"] ---> R_114030["基隆河 (114030)"]
R_114032["大武崙溪 (114032)"] ---> R_114030["基隆河 (114030)"]
R_114033["拔西猴溪 (114033)"] ---> R_114030["基隆河 (114030)"]
R_114034["瑪陵坑溪 (114034)"] ---> R_114030["基隆河 (114030)"]
R_114035["友蚋溪 (114035)"] ---> R_114030["基隆河 (114030)"]
R_114036["保長坑溪 (114036)"] ---> R_114030["基隆河 (114030)"]
R_114037["茄苳溪 (114037)"] ---> R_114030["基隆河 (114030)"]
R_114038["禮門溪 (114038)"] ---> R_114030["基隆河 (114030)"]
R_114039["智慧溪 (114039)"] ---> R_114030["基隆河 (114030)"]
R_11403A["北港溪 (11403A)"] ---> R_114030["基隆河 (114030)"]
R_11403B["康誥坑溪 (11403B)"] ---> R_114030["基隆河 (114030)"]
R_11403C["下寮溪 (11403C)"] ---> R_114030["基隆河 (114030)"]
R_11403D["大坑溪排水 (11403D)"] ---> R_114030["基隆河 (114030)"]
R_11403E["四分溪 (11403E)"] ---> R_114030["基隆河 (114030)"]
R_11403F["草濫溪 (11403F)"] ---> R_114030["基隆河 (114030)"]
R_11403G["內溝溪排水 (11403G)"] ---> R_114030["基隆河 (114030)"]
R_11403R["安泰溪 (11403R)"] ---> R_11403G["內溝溪排水 (11403G)"]
R_11403H["雙溪 (11403H)"] ---> R_114030["基隆河 (114030)"]
R_11403S["內雙溪 (11403S)"] ---> R_11403H["雙溪 (11403H)"]
R_11403T["外雙溪 (11403T)"] ---> R_11403H["雙溪 (11403H)"]
R_11403U["猴洞坑溪 (11403U)"] ---> R_11403H["雙溪 (11403H)"]
R_11403I["磺溪 (11403I)"] ---> R_114030["基隆河 (114030)"]
R_11403J["磺港溪 (11403J)"] ---> R_114030["基隆河 (114030)"]
R_11403K["貴子坑溪 (11403K)"] ---> R_114030["基隆河 (114030)"]
R_11403L["石厝坑溪 (11403L)"] ---> R_114030["基隆河 (114030)"]
R_11403M["拔下二溪 (11403M)"] ---> R_114030["基隆河 (114030)"]
R_11403N["關渡溪 (11403N)"] ---> R_114030["基隆河 (114030)"]
R_11403O["深澳坑溪排水 (11403O)"] ---> R_114030["基隆河 (114030)"]
R_11403P["大內坑溪排水 (11403P)"] ---> R_114030["基隆河 (114030)"]🔗 官民大整合:淡水河流域完整拓樸整合版 (WRA-Civ)#
為了解決官方拓樸資料庫在細微溪谷與山區野溪上的缺失,我們將水利署官方的 74 條權威拓樸河段,與社群第一階段及第二階段深度下鑽擴充的 34 條民間 WRA-Civ 拓樸子流進行了全面大對合。
- 歷程參考: 官方拓樸跟官民合併(本文)->民間編碼與南勢溪補充->淡水河補充+二階溪流->合併
這份整合圖(共計 108 條水系節點)以 graph TD 樹狀分支視角,完整還原了淡水河從主流、主要支流(大漢溪、新店溪、基隆河)、二級官方支流,一路下鑽至三級、四級民間微細末梢野溪(如處女瀑布源流 11401B-C01-C01、哈盆古道露門溪 114021-C06)的完整階層脈絡:
graph TD
classDef official fill:#e1f5fe,stroke:#0288d1,stroke-width:1px;
classDef civilian fill:#fff3e0,stroke:#f57c00,stroke-width:1px;
R_114000["淡水河 (114000)"] --> R_114010["大漢溪 (114010)"]
R_114010["大漢溪 (114010)"] --> R_114011["三峽溪 (114011)"]
R_114011["三峽溪 (114011)"] --> R_11401B["大豹溪 (11401B)"]
R_114011["三峽溪 (114011)"] --> R_11401C["麻園溪(二鬮溪) (11401C)"]
R_114011["三峽溪 (114011)"] --> R_11401D["中埔溪 (11401D)"]
R_114011["三峽溪 (114011)"] --> R_11401E["竹崙溪 (11401E)"]
R_114011["三峽溪 (114011)"] --> R_11401F["竹坑溪 (11401F)"]
R_114011["三峽溪 (114011)"] --> R_11401G["橫溪 (11401G)"]
R_114010["大漢溪 (114010)"] --> R_114012["鶯歌溪(兔子坑溪排水) (114012)"]
R_114010["大漢溪 (114010)"] --> R_114013["塔寮坑溪排水 (114013)"]
R_114010["大漢溪 (114010)"] --> R_114014["塔克金溪 (114014)"]
R_114010["大漢溪 (114010)"] --> R_114015["三光溪 (114015)"]
R_114010["大漢溪 (114010)"] --> R_114016["泰崗溪 (114016)"]
R_114010["大漢溪 (114010)"] --> R_114017["白石溪(薩克雅尖溪) (114017)"]
R_114010["大漢溪 (114010)"] --> R_114018["玉峰溪(馬里闊丸溪) (114018)"]
R_114010["大漢溪 (114010)"] --> R_114019["永福溪幹線 (114019)"]
R_114010["大漢溪 (114010)"] --> R_11401A["街口溪幹線 (11401A)"]
R_114010["大漢溪 (114010)"] --> R_11401H["觀音溪幹線 (11401H)"]
R_114010["大漢溪 (114010)"] --> R_11401I["三坑溪幹線 (11401I)"]
R_114010["大漢溪 (114010)"] --> R_11401J["打鐵溪幹線 (11401J)"]
R_114010["大漢溪 (114010)"] --> R_11401K["二坪溪幹線 (11401K)"]
R_114000["淡水河 (114000)"] --> R_114020["新店溪 (114020)"]
R_114020["新店溪 (114020)"] --> R_114021["南勢溪 (114021)"]
R_114021["南勢溪 (114021)"] --> R_11402A["桶後溪 (11402A)"]
R_114021["南勢溪 (114021)"] --> R_11402P["軋孔溪 (11402P)"]
R_114021["南勢溪 (114021)"] --> R_11402Q["大羅蘭溪 (11402Q)"]
R_114020["新店溪 (114020)"] --> R_114022["北勢溪 (114022)"]
R_114022["北勢溪 (114022)"] --> R_11402B["後寮溪 (11402B)"]
R_114022["北勢溪 (114022)"] --> R_11402C["溪尾寮溪 (11402C)"]
R_114022["北勢溪 (114022)"] --> R_11402D["坪溪 (11402D)"]
R_114022["北勢溪 (114022)"] --> R_11402E["灣潭溪 (11402E)"]
R_114022["北勢溪 (114022)"] --> R_11402F["金瓜寮溪 (11402F)"]
R_114022["北勢溪 (114022)"] --> R_11402G["石硿子溪 (11402G)"]
R_114022["北勢溪 (114022)"] --> R_11402H["後坑溪 (11402H)"]
R_114022["北勢溪 (114022)"] --> R_11402O["𩻸魚堀溪 (11402O)"]
R_114020["新店溪 (114020)"] --> R_114023["景美溪 (114023)"]
R_114023["景美溪 (114023)"] --> R_11402I["烏塗溪 (11402I)"]
R_114023["景美溪 (114023)"] --> R_11402J["指南溪 (11402J)"]
R_114023["景美溪 (114023)"] --> R_11402K["老泉溪 (11402K)"]
R_114023["景美溪 (114023)"] --> R_11402L["無名溪 (11402L)"]
R_114023["景美溪 (114023)"] --> R_11402M["中間溪 (11402M)"]
R_114023["景美溪 (114023)"] --> R_11402N["永定溪 (11402N)"]
R_114020["新店溪 (114020)"] --> R_114024["青潭溪 (114024)"]
R_114000["淡水河 (114000)"] --> R_114030["基隆河 (114030)"]
R_114030["基隆河 (114030)"] --> R_114031["暖暖溪(含東勢坑溪) (114031)"]
R_114030["基隆河 (114030)"] --> R_114032["大武崙溪 (114032)"]
R_114030["基隆河 (114030)"] --> R_114033["拔西猴溪 (114033)"]
R_114030["基隆河 (114030)"] --> R_114034["瑪陵坑溪 (114034)"]
R_114030["基隆河 (114030)"] --> R_114035["友蚋溪 (114035)"]
R_114030["基隆河 (114030)"] --> R_114036["保長坑溪 (114036)"]
R_114030["基隆河 (114030)"] --> R_114037["茄苳溪 (114037)"]
R_114030["基隆河 (114030)"] --> R_114038["禮門溪 (114038)"]
R_114030["基隆河 (114030)"] --> R_114039["智慧溪 (114039)"]
R_114030["基隆河 (114030)"] --> R_11403A["北港溪 (11403A)"]
R_114030["基隆河 (114030)"] --> R_11403B["康誥坑溪 (11403B)"]
R_114030["基隆河 (114030)"] --> R_11403C["下寮溪 (11403C)"]
R_114030["基隆河 (114030)"] --> R_11403D["大坑溪排水 (11403D)"]
R_114030["基隆河 (114030)"] --> R_11403E["四分溪 (11403E)"]
R_114030["基隆河 (114030)"] --> R_11403F["草濫溪 (11403F)"]
R_114030["基隆河 (114030)"] --> R_11403G["內溝溪排水 (11403G)"]
R_11403G["內溝溪排水 (11403G)"] --> R_11403R["安泰溪 (11403R)"]
R_114030["基隆河 (114030)"] --> R_11403H["雙溪 (11403H)"]
R_11403H["雙溪 (11403H)"] --> R_11403S["內雙溪 (11403S)"]
R_11403H["雙溪 (11403H)"] --> R_11403T["外雙溪 (11403T)"]
R_11403H["雙溪 (11403H)"] --> R_11403U["猴洞坑溪 (11403U)"]
R_114030["基隆河 (114030)"] --> R_11403I["磺溪 (11403I)"]
R_114030["基隆河 (114030)"] --> R_11403J["磺港溪 (11403J)"]
R_114030["基隆河 (114030)"] --> R_11403K["貴子坑溪 (11403K)"]
R_114030["基隆河 (114030)"] --> R_11403L["石厝坑溪 (11403L)"]
R_114030["基隆河 (114030)"] --> R_11403M["拔下二溪 (11403M)"]
R_114030["基隆河 (114030)"] --> R_11403N["關渡溪 (11403N)"]
R_114030["基隆河 (114030)"] --> R_11403O["深澳坑溪排水 (11403O)"]
R_114030["基隆河 (114030)"] --> R_11403P["大內坑溪排水 (11403P)"]
R_114021["南勢溪 (114021)"] -.-> R_114021_C01["加九寮溪 (114021-C01)"]
R_114021["南勢溪 (114021)"] -.-> R_114021_C02["給里瀨溪 (114021-C02)"]
R_114021["南勢溪 (114021)"] -.-> R_114021_C03["內洞溪 (114021-C03)"]
R_114021["南勢溪 (114021)"] -.-> R_114021_C04["卡拉莫基溪 (114021-C04)"]
R_114020["新店溪 (114020)"] -.-> R_114020_C01["平廣溪 (114020-C01)"]
R_114020["新店溪 (114020)"] -.-> R_114020_C02["磺窟溪 (114020-C02)"]
R_114020["新店溪 (114020)"] -.-> R_114020_C03["粗坑溪 (114020-C03)"]
R_114023["景美溪 (114023)"] -.-> R_114023_C01["石碇溪 (114023-C01)"]
R_114023["景美溪 (114023)"] -.-> R_114023_C02["大溪墘溪 (114023-C02)"]
R_114010["大漢溪 (114010)"] -.-> R_114010_C01["草嶺溪 (114010-C01)"]
R_114010["大漢溪 (114010)"] -.-> R_114010_C02["三民溪 (114010-C02)"]
R_114010["大漢溪 (114010)"] -.-> R_114010_C03["奎輝溪 (114010-C03)"]
R_114010["大漢溪 (114010)"] -.-> R_114010_C04["霞雲溪 (114010-C04)"]
R_114010["大漢溪 (114010)"] -.-> R_114010_C05["宇內溪 (114010-C05)"]
R_114010["大漢溪 (114010)"] -.-> R_114010_C06["寶里苦溪 (114010-C06)"]
R_114010["大漢溪 (114010)"] -.-> R_114010_C07["卡拉溪 (114010-C07)"]
R_114011["三峽溪 (114011)"] -.-> R_114011_C01["五寮溪 (114011-C01)"]
R_11401B["大豹溪 (11401B)"] -.-> R_11401B_C01["蚋仔溪 (11401B-C01)"]
R_11401B["大豹溪 (11401B)"] -.-> R_11401B_C02["熊空溪 (11401B-C02)"]
R_114030["基隆河 (114030)"] -.-> R_114030_C01["竿蓁林溪 (114030-C01)"]
R_114030["基隆河 (114030)"] -.-> R_114030_C02["火燒寮溪 (114030-C02)"]
R_114030["基隆河 (114030)"] -.-> R_114030_C03["灰窯溪 (114030-C03)"]
R_114030["基隆河 (114030)"] -.-> R_114030_C04["尪子上天溪 (114030-C04)"]
R_114030["基隆河 (114030)"] -.-> R_114030_C05["魚桀魚坑溪 (114030-C05)"]
R_114036["保長坑溪 (114036)"] -.-> R_114036_C01["姜子寮溪 (114036-C01)"]
R_11402A["桶後溪 (11402A)"] -.-> R_11402A_C01["阿玉溪 (11402A-C01)"]
R_114021["南勢溪 (114021)"] -.-> R_114021_C05["波露溪 (114021-C05)"]
R_114021["南勢溪 (114021)"] -.-> R_114021_C06["露門溪 (114021-C06)"]
R_11402F["金瓜寮溪 (11402F)"] -.-> R_11402F_C01["九芎根溪 (11402F-C01)"]
R_11402E["灣潭溪 (11402E)"] -.-> R_11402E_C01["子口溪 (11402E-C01)"]
R_11402E["灣潭溪 (11402E)"] -.-> R_11402E_C02["南勢子溪 (11402E-C02)"]
R_11401B["大豹溪 (11401B)"] -.-> R_11401B_C03["水車寮溪 (11401B-C03)"]
R_11401B_C01["蚋仔溪 (11401B-C01)"] -.-> R_11401B_C01_C01["蚋仔溪次級支流 (11401B-C01-C01)"]
R_114018["玉峰溪(馬里闊丸溪) (114018)"] -.-> R_114018_C01["薩克亞金溪 (114018-C01)"]
class R_114000,R_114010,R_114011,R_11401B,R_11401C,R_11401D,R_11401E,R_11401F official;
class R_11401G,R_114012,R_114013,R_114014,R_114015,R_114016,R_114017,R_114018 official;
class R_114019,R_11401A,R_11401H,R_11401I,R_11401J,R_11401K,R_114020,R_114021 official;
class R_11402A,R_11402P,R_11402Q,R_114022,R_11402B,R_11402C,R_11402D,R_11402E official;
class R_11402F,R_11402G,R_11402H,R_11402O,R_114023,R_11402I,R_11402J,R_11402K official;
class R_11402L,R_11402M,R_11402N,R_114024,R_114030,R_114031,R_114032,R_114033 official;
class R_114034,R_114035,R_114036,R_114037,R_114038,R_114039,R_11403A,R_11403B official;
class R_11403C,R_11403D,R_11403E,R_11403F,R_11403G,R_11403R,R_11403H,R_11403S official;
class R_11403T,R_11403U,R_11403I,R_11403J,R_11403K,R_11403L,R_11403M,R_11403N official;
class R_11403O,R_11403P official;
class R_114021_C01,R_114021_C02,R_114021_C03,R_114021_C04,R_114020_C01,R_114020_C02,R_114020_C03,R_114023_C01 civilian;
class R_114023_C02,R_114010_C01,R_114010_C02,R_114010_C03,R_114010_C04,R_114010_C05,R_114010_C06,R_114010_C07 civilian;
class R_114011_C01,R_11401B_C01,R_11401B_C02,R_114030_C01,R_114030_C02,R_114030_C03,R_114030_C04,R_114030_C05 civilian;
class R_114036_C01,R_11402A_C01,R_114021_C05,R_114021_C06,R_11402F_C01,R_11402E_C01,R_11402E_C02,R_11401B_C03 civilian;
class R_11401B_C01_C01,R_114018_C01 civilian;AI 協作聲明: 本文由筆者提供原始遊記草稿與心情隨筆,由 AI 助手 Antigravity 彙整架構與修辭。結合了 WalkGIS 的地理紀錄特點與哈爸筆記的敘事風格,展現人機協作下的流域探索成果。中英文與數字間保留半形空格,完美紀錄現場實遊軌跡。
