上一篇提到,為了驗證地形圖上的「黃金洞」與歷史水利的關聯,我決定打造一個「歷史空間感知引擎」。要建構這套系統,第一步就是要獲得一把能夠解開空間座標的鑰匙。

我將目光轉向了中央研究院的 GIS 寶庫。

寶藏開箱:1920 年代的台灣地理切片

幸運的是,台灣學界已經將日治時期(1920 年代)的行政區劃轉換為數值圖資。我順利取得了當時的「街庄(1920b_1.shp)」與更細緻的村落級別「大字(1920a_1.shp)」Shapefile 檔案。

這兩份檔案就像是兩張巨大的網子,完整罩住了百年前的台灣島。

不過,要將百年前的網子跟現代的手機 GPS 疊合,遭遇了第一個技術難關:座標系的跨時空翻譯。歷史圖資通常使用 TWD67(台灣二度分帶),而我們現在的手機或 Google Maps 則是使用 WGS84 經緯度系統。利用 Python 的 Geopandas 套件,我寫了一段優美的投影轉換代碼,成功讓百年前的地圖「滑」進了現代的經緯網格中。

魔法實做 1:GPS 腳下檢索 (Point in Polygon)

有了吻合的圖資後,我開發了第一個功能。這是一個純粹的數學運算,俗稱 Point in Polygon (點在多邊形內)。

現在,只要我輸入一組現代的 GPS 座標(或許是我走在竹北街頭,或是站在台南的田野),程式就會瞬間吃進這組座標,穿越時空,告訴我:「你腳下站的地方,在 1920 年屬於新竹州新竹郡新竹街!」

魔法實做 2:方圓百里的時光雷達 (Spatial Proximity)

光知道腳下叫什麼名字還不夠,我想要有「導遊」的感覺。

於是我加入了 Buffer(緩衝區)的概念,實作了「附近古地名查詢」功能。想像你站在定點,按下啟動鍵,程式會以你為中心,發射出半徑數公里的虛擬雷達波。雷達波不僅會掃過 1920 年代的各級行政區,更進一步結合了內政部釋出的 3 萬多筆「古地名/歷史聚落」空間圖資。這樣一疊加,所有被涵蓋在範圍內的聚落名稱(甚至是已經消失的微小地名)全部都會列印出來。

這套被我戲稱為「時光羅盤」的模組,讓我們具備了強大的 空間反查能力

執行例子: python scripts/query_hgis_point.py 24.785150 120.967825

在 1920 年屬於: 🏛️ 州廳: 新竹州 🏰 郡市: 新竹郡 🏘️ 街庄: 香山庄

但問題是,地圖上的地名是冷的。這個古地名背後曾經發生過什麼驚心動魄的故事?有哪個先賢曾經在這裡開圳引水?

要讓地圖「說話」,我們必須回到史料本身。接下來的挑戰,就是如何讓 AI 學會閱讀那些詰屈聱牙的清代文言文史書。

(未完待續:下一篇,我們將挑戰把《臺灣通史》塞進資料庫!)


本文為哈爸與 AI 助理協作產出,紀錄實體探勘與數位工程之歷程。