請啟用 JavaScript 來查看內容

geo-sleuth:一張照片,即可精準定位座標的 Agent Skill

    前言

    不知道各位有沒有聽過「GeoGuessr」地理遊戲,就是給你一張街景圖,你要猜出(推理)是世界上的哪一個地點,猜的距離越近,分數越高,甚至還有舉辦世界級的電競賽事。

    圖片來源:GeoGuessr Steam 商店
    圖片來源:GeoGuessr Steam 商店

    當中的玩家會使用 文字、車牌、電線桿、道路標線、地形 等等特徵,來區分不同的國家、不同的地區。

    而今天分享的這個 Agent Skill 也是依循這個邏輯,只是它能透過更多資訊來比對,最重要的是完全靠 AI Agent 自行努力即可,我們只需要丟一張照片給它。


    我有製作一個「臺灣 TW 區域擴充包」,包含臺灣的縣市鄉鎮、台電電力座標、公路編號標誌系統、車牌/門牌、…等等一些屬於台灣的特徵,讓模型在辨識時會更加準確。
    我放在文章最後免費提供給大家~



    簡介

    geo-sleuth GitHub
    geo-sleuth GitHub

    如果你只是單單叫 AI 看圖猜位置,除非是視覺頂尖的模型,或有明確的地標、特徵,不然 AI 很有可能猜錯。

    而這個「geo-sleuth」Agent Skill 就像是為 AI 裝上外掛,它運用了包含以下技巧來判斷:

    • OCR
    • 以圖搜圖
    • 天際線
    • 衛星圖
    • 街景 (像是 車牌、電線桿、道路標線…)
    • 太陽影子
    • (更多…)

    除了精準的座標,還包含拍攝的角度,甚至高度,它都有辦法推敲出來。
    而且它猜測的精準度是用 “公尺” 去算的,不是只到 “公里” 而已!

    透過 python 腳本 除了提供工具執行,以輔助 LLM 模型將過程、證據記錄下來以外,也用於計算分數,避免模型幻覺或每次結果不同。

    安裝

    要使用此 geo-sleuth skill 的前提,需要環境有 Python 3.10+、uv、curl,以及一個可以執行 shell 指令的代理程式 (常見的 Codex、Antigravity、Claude Code、OpenCode、Cursor…等等都可以)。


    先下載 skill 完整資料夾 (只需要 skills/geo-sleuth 這個資料夾),並將其放到各 AI Agent 工具指定的位置。
    (或使用指令 npx skills add Oldcircle/geo-sleuth)


    可以先執行以下指令來檢查環境:

    uv run skills/geo-sleuth/scripts/doctor.py
    

    如果想多檢查網路,指令後加上 --network 即可。


    裡面主要幾個資料夾大概是:

    • data:國碼、國家的地理基本資訊、中英文國名、左駕右駕、電話區碼
    • references:教 AI 如何判斷,像是可看大眾運輸、鐵路、植被、河川等等線索;如何計算方位角/距離/高度;如何驗證是否判斷正確。其實看看還蠻有趣的 XD
    • regions:各國家知識擴充包,包含更細緻的資訊,讓 AI 可以更了解、更精準 (下方我提供的「臺灣 TW 區域包」就放進這裡)
    • scripts:Python 腳本,包含一些 OCR、以圖搜圖、OpenStreetMap、太陽影子…等等多個工具,讓 AI 執行

    使用

    很簡單,就直接跟 AI Agent 詢問:

    使用 geo-sleuth skill,查找此照片是哪個地點拍攝的
    

    三個實測案例

    以下我就用三張照片來示範,讓各位看看他的推敲流程、邏輯。

    先讓沒使用此 skill 的 AI 來挑戰 (使用 Google AI Studio + 開啟 Google 搜尋工具),再放上有加 geo-sleuth skill 的來對照 (使用 Antigravity)。
    皆使用 Gemini 3.8 Flash (Medium) 模型。

    各位也可以一起猜猜看,這三張照片分別是在哪裡拍攝的?
    (第三題算超級魔王關了~)

    三張我自己拍攝的測試照片
    三張我自己拍攝的測試照片

    為了避免 AI 從照片檔案的 EXIF 資訊 (例如 GPS 地理位置) 看出線索,可以先移除照片檔案 EXIF 資訊,但我更徹底,直接使用螢幕截圖的方式,使其更乾淨 😆。

    而且這三張照片都是我自己拍攝的,不是網路上下載或街景截圖,所以模型不會看過一模一樣的。


    以下內容為 AI 輸出的說明,我最多只刪減部分段落,以節省版面。
    有加 geo-sleuth skill 的輸出結果我有請他說明判斷邏輯,所以回答長度比較長。


    1. 日本路面電車裡

    「沒」Skill

    這張照片的拍攝地點分析與推敲如下:

    1. 畫面關鍵線索分析
    • 交通系統與視角:畫面是從路面電車內部向前拍攝,電車行駛於左側軌道(日本靠左行駛)。路面軌道為日本路面電車系統。
    • 路牌與地名標示:左側路燈/電桿上有深藍色長條形街區號牌,上面標記著**「千代台町 26」**。此地名位於**日本北海道函館市**。
    • 背景指標建築:
      • 正前方道路微幅向右彎處正對的高層米黃色大樓,中間帶有醒目的圓弧狀(半圓柱形)玻璃帷幕,為當地的指標綜合醫院——「函館中央病院」(社會福祉法人函館厚生院 函館中央病院,地址:函館市本町33-2)。
      • 彎道前方左側街角可隱約看見全家便利商店(FamilyMart 函館本町店)的綠白藍招牌。
    • 行駛方向:路面電車沿著北海道道83號(通稱「電車通り」)行駛,正朝著東北方向前進,即由**「千代台停留場」**開往**「中央病院前停留場」**(往五稜郭公園前、湯之川方向)。
    2. 精確拍攝位置
    • 國家/地區:日本 北海道 函館市
    • 所屬路線:函館市電 湯之川線(千代台 ~ 中央病院前 區間)
    • 所在道路:北海道道83號函館南茅部線(電車通り),位於千代台町26番地旁路段
    3. 精確地理座標
    • 緯度 / 經度:約 41.7854°N, 140.7498°E (或寫作 41°47'07.5"N 140°44'59.3"E)


    順便改用 Gemini 4 Argon 試試:

    這張照片拍攝於日本北海道函館市,具體位置是在函館市電(路面電車)湯之川線的列車車頭內,剛從**「千代台停留場(千代台站)」**發車、正往東北方朝下一站**「中央病院前停留場」**行進的軌道上。

    📍 精準位置資訊
    • 所在城市: 日本北海道函館市
    • 道路名稱: 北海道道83號函館南茅部線(當地俗稱「電車通」)
    • 市電區間: 函館市電(2系統/5系統)「千代台」站 →「中央病院前」站之間(往五稜郭公園前、湯之川方向)
    • 精確街區位置: 位於函館市千代台町30番/29番(道路左側)與千代台町21番(道路右側)之間的軌道上,距離「千代台」電停東北方約 40~50 公尺處。
    • 估計經緯度: 約 41.7845°N, 140.7491°E(41°47'04.2"N 140°44'56.8"E)
    • 拍攝方向: 面向東北方(前方軌道於路口處向左彎轉往北北西方)
    🔍 關鍵線索與推敲過程
    1. 路口號誌地名牌(「千代台町26」):
      放大畫面中央偏左遠處的紅綠燈,可以看到燈號左側附掛了一塊白底橫式的地名標示牌,上面寫著**「千代台町26」**。「千代台町」且有雙軌路面電車行經的地點,即為**北海道函館市**。

    2. 背景大型地標建築(函館中央病院):
      照片正前方遠處有一棟米黃色外牆、中央帶有圓弧形玻璃帷幕的十幾層樓大型建築,這是位於函館市本町33-2的**「函館中央病院(南棟)」**。

      • 在函館市電路線中,從「千代台」站往東北方直行時,正前方視覺盡頭就是函館中央病院。
      • 軌道在抵達醫院前方的「千代台町26」路口後,會如照片遠處所示向左彎曲,繞過醫院正面進入「中央病院前」站。
    3. 周邊街景與番地細節:

      • 彎道建築上的「20」: 遠處軌道彎道正前方的棕色建築頂部外牆標有數字**「20」**,該處正好是位於彎道外側的**「千代台町20番」**街區。
      • 多岔路方向標誌: 左側路樹之間有一個藍底白箭頭的日本「指定方向外進行禁止」標誌(箭頭指向左前與右前),對應「千代台町26」路口前方的斜交巷道(千代台町29番與26番交界處,往千代台公園、函館年金事務所方向)。
      • 特製路燈: 道路兩側淡藍綠色的雙臂式街燈,是函館市電千代台至五稜郭公園前一帶的標準街景配置。
    4. 拍攝視角與行進方向(路面電車前方展望):

      • 車內結構: 畫面最左側可見車窗邊框與雨刷桿,右上角則懸掛著車外後視鏡,顯示拍攝者站在路面電車車頭的前擋風玻璃右側(駕駛座右後方的前方展望位置)。
      • 行車方向: 日本採靠左通行,畫面左側車道的黑色轎車正背對鏡頭遠去,右側車道的兩輛汽車則迎面駛來;同時透視線顯示鏡頭位於左側軌道(東北行軌道)上方,確認列車剛駛離「千代台」站,正朝**「中央病院前」站(湯之川方向)**前進。

    (作者:都算蠻準的,Gemini 4 Argon 實際上可能也就差 50 公尺多而已吧,非常準。)


    「加上」Skill

    一、原始照片初步審視

    面對一張未知照片,首要任務不是盲目猜測,而是拆解照片中的**「環境語境」**與**「相機幾何」**:

    1. 拍攝載具與視角判斷:

      • 畫面中央有嵌入路面的雙軌鐵軌(嵌入式槽型軌道,常見於路面電車/輕軌)。
      • 畫面右上方能看見大型弧形照後鏡的背面,兩側有垂直窗框,視點高度高於一般轎車但平視於路面。
      • 推論:拍攝者正乘坐於路面電車(Tram/Streetcar)駕駛室前方或第一排乘客視角,且電車正在軌道上向前行駛。
    2. 交通體系與國家定位:

      • 迎面而來的車流均靠道路左側行駛(左側通行)。
      • 道路左側設有日本標準的藍底白色箭頭車道行駛方向標誌、紅圈斜線禁止停車標誌,以及紅圈禁止迴轉標誌(下方附帶時間帶輔助標誌「7-21」)。
      • 推論:目標國家為日本(Japan)。
    二、微觀線索提取:尋找不可替代的「錨點」

    在日本,現存仍運營路面電車的城市屈指可數(如札幌、函館、東京、富山、豐橋、福井、京都、大阪、岡山、廣島、松山、高知、長崎、熊本、鹿兒島等)。此時若能從照片的微小細節中讀出文字,將可瞬間省去大量盲目排查的時間。

    我們對照片中的可疑標牌進行了多區域的高解析度局部裁切:

    1. 決定性的路口名稱銘牌

    在畫面左前方紅綠燈號誌橫桿旁,附有一塊藍底白字的交叉路口地名銘牌:

    千代台町25號號誌牌
    千代台町25號號誌牌

    經高清擷取,牌面上清晰顯示:「千代台町 25」。
    在北海道的交通號誌命名習慣中,號誌牌常直接標記町名與番地(街區番號)。

    2. 沿街建築招牌與地標建築

    進一步對街道兩側建築物進行微觀特徵擷取:

    日光ハイツ招牌與街景細節
    日光ハイツ招牌與街景細節
    • 左側住宅招牌:畫面左側邊緣有一棟帶有條紋立面的兩層半建築,牆面上掛著深褐色直立招牌,字樣為 「日光ハイツ」(Nikko Heights)。
    • 特徵路燈:人行道旁豎立著造型獨特的淡藍色六角形吊燈造型路燈桿,懸臂呈現特殊的折角向上延伸結構。
    • 遠端大型建築:沿著電車軌道延伸方向,前方路口向右呈現一處微幅右轉彎弧度;彎道正後方矗立著一棟米黃色多層現代化大樓,頂部帶有圓弧玻璃幕牆轉角(見下圖):
    背景遠端大樓
    背景遠端大樓
    三、地理拓撲收斂與幾何走向校驗

    拿到「千代台町」與「路面電車」這兩個關鍵詞後,進行地理數據交叉檢索:

    • 行政區定位:全日本擁有「千代台町」且同時具備路面電車路網的行政區,唯一符合的是北海道函館市千代台町(函館市電)。
    • 路網拓撲確認:
      函館市電(湯之川線)行經千代台町,該區段的連續車站依次為:
      堀川町停留場 ⟶ 千代台停留場 ⟶ 中央病院前停留場 ⟶ 五稜郭公園前停留場
    • 彎道與視線朝向分析:
      千代台停留場與中央病院前停留場之間的道路為北海道道 83 號(函館南茅部線)。
      比對 OpenStreetMap 軌道向量數據發現:軌道由千代台站向東北延伸,在接近中央病院前站前產生一處向右微彎的弧度(前進航向約 43° Northeast)。
      而位於該彎道延伸線正前方的巨型綜合醫療建築,正是社會醫療法人孝仁會 函館中央病院(函館市本町 33-2)!這與照片背景的大樓完美契合。
    四、實景三維比對(Ground-Level Match):鎖定公尺級坐標

    為了達到無懈可擊的論證標準,我們提取了該路段的 Google 街景全景立體數據,並計算與原始相機相同的視野角(FOV ≈ 60°)及朝向(Heading 43°),在坐標 41.785329, 140.750068 處渲染出地面對比視野:

    街景全景比對影像
    街景全景比對影像

    將原始照片與渲染出的對比街景進行 不變特徵(Invariant Features) 嚴格比對:

    特徵項目原始照片(005.jpg)街景對比圖(gsv_fA9.jpg)比對結果
    建築物立面左側白色外牆掛「日光ハイツ」深色招牌左側白色三層建築掛有「日光ハイツ」招牌(千代台町 24-11)100% 吻合
    市政設施淺藍色折角路燈柱、人行道緣石造型淺藍色折角路燈柱,位置與間距完全一致100% 吻合
    交通號誌「千代台町 25」路口懸臂號誌、禁迴轉附 7-21 標牌相同位置號誌機與禁迴轉時段附屬標牌100% 吻合
    道路幾何軌道向右前微曲,中央鋪設米色水泥板軌道路型、右彎弧度與中央分道線完全一致100% 吻合
    遠景天際線遠處「函館中央病院」米色大樓外觀與玻璃轉角函館中央病院大樓頂部印有「函館中央病院」字樣100% 吻合
    最終相機微定位(Camera Spotting)

    由於街景拍攝車輛行駛於左側普通車道,而本照片拍攝者身處路面電車駕駛艙/前方(行駛於專用路軌左股軌道):
    我們將街景坐標沿著道道 83 號垂直正交投影至電車軌道中央,精確確定相機的空間坐標為:

    • 緯度 (Latitude):41.78535° N
    • 經度 (Longitude):140.75011° E
    • 拍攝朝向:43°(東北偏北)
    • 誤差半徑:±5 公尺之內
    五、綜合定位證據圖

    我們將上述衛星地圖、相機坐標點、視角錐形(Heading Wedge)以及實景對比合成為完整的證據圖:

    定位證據合成圖
    定位證據合成圖
    • 黃色視角錐:標記拍攝時相機覆蓋的扇形視野範圍。
    • 青色點(Camera):標記電車所在的確切軌道位置。
    • 綠色點(千代台町25交差点):標記前方路口號誌位置。
    • 下方對照面板:原始照片與實地街景的左右特徵對照。

    (作者:也是很準,跟沒用 Skill 差不太多。)


    小結

    對於這種市區內,或有明確地標可以查找的例子來說,其實有沒有加 geo-sleuth skill 差異不大。

    (不過如果是用較低階的模型,或者就有差異了)



    2. 遠眺水庫

    「沒」Skill

    這張照片是從臺灣臺南市南化區的**烏山登山步道北段(風空子山步道)**往北俯瞰所拍攝的。

    一、 精準拍攝地點與座標
    • 拍攝地點: 臺南市南化區・烏山步道(北段)/風空子山步道 稜線展望處(位於雲山寺與風空子山三角點之間的稜線步道)
    • 估計經緯度座標:
      • 23.0635°N, 120.5415°E(約 23°03'49"N, 120°32'29"E)
    • 海拔高度: 約 550 ~ 660 公尺
    • 周邊參考地標:
      • 風空子山三角點(標高 668m):23.0622°N, 120.5404°E
      • 起登點 雲山寺(標高約 358m):23.0691°N, 120.5461°E
    二、 畫面地形與景觀分析推敲
    1. 核心地標(南化水庫大壩與溢洪道拱橋):

      • 畫面中左側水面上方橫跨的堤防為南化水庫大壩(滾壓式土石壩)。
      • 大壩旁左側跨越側槽溢洪道的白色鋼筋混凝土拱橋,即為南化水庫的溢洪道預力拱橋。
      • 水庫水體(曾文溪支流後堀溪)順著群山往東北方峽谷蜿蜒延伸。
    2. 視角與方位推敲:

      • 畫面中大壩位於左側(西側/下游),水庫庫面朝右側延伸(東/東北側上游),說明拍攝者正朝北偏東(NNE)方向眺望。
      • 遠景層層疊疊的雄偉高山為阿里山山脈尾稜與中央山脈南段(南一段、關山一帶)。
      • 畫面中景下方俯瞰的谷地,是南橫公路(台20線)經過的南化區玉山里下歸林、茅埔一帶聚落及芒果果園。
    3. 登山步道路線確認:

      • 南化水庫南側的烏山山脈(大烏山山系)以縱走步道聞名,其中北段起點由「下歸林雲山寺」起登,沿階梯與稜線上攀至「風空子山」。
      • 步道約 0.8K 至 1.5K 之間及三角點前數十公尺處,稜線上有多處開闊樹縫視野,正好居高臨下將南化水庫全景、大壩及周圍山脈盡收眼底。

    「加上」Skill

    原始照片觀察

    在深入分析之前,我們先檢視輸入的原始影像。

    畫面呈現出一個居高臨下的山嶺俯瞰視角:

    • 前景:四周被茂密的闊葉樹冠與左側樹幹遮蔽成天然邊框,下方有雜木叢與斜坡。
    • 中景左側:一座大型水庫大壩、長長的陡坡溢洪道與水上結構。
    • 中景中央:碧綠的湖水蓄水區,湖灣中夾帶著島嶼與半島。
    • 中景右側:一處坐落於山谷平坦區的農村聚落與白色農業網室。
    • 遠景:重巒疊嶂、層層遞進的青藍色高山稜線。
    第一階段:特徵萃取與局部特寫(Feature Extraction)

    面對大景照片,第一步是分解細節。透過局部放大與裁切,將影像拆解為具備唯一性或高辨識度的特徵單元,避免整體視覺雜訊干擾判斷。

    1. 水利設施特寫
    水利工程細節
    水利工程細節
    • 壩體構造:大壩呈現明顯的梯形斜坡土石結構,為典型的滾壓式土石壩,而非混凝土重力壩或雙曲拱壩。
    • 溢洪設施:大壩右側有一條獨立開鑿的側槽溢洪道,上方有一座弧形水泥拱橋橫跨溢洪道進水口。溢洪道順坡直下形成長陡槽,末端配置有跳斗與寬闊平坦的消能池。
    • 庫區島嶼:大壩後方水域呈現曲折的支灣,灣內有一座狹長形、長滿樹木的微型島嶼。
    2. 山谷聚落與土地利用
    山谷聚落細節
    山谷聚落細節
    • 建物與設施:山坳聚落中散布著鐵皮斜頂房舍,以及大面積整齊排列的白色/灰色果園防護網室(防果蠅、防風),這是臺灣南部低海拔丘陵(如芒果、芭樂、蜜棗產區)極具代表性的地景。
    • 聯外道路:有明顯鋪設完整的柏油雙向公路穿過聚落邊緣向山區蜿蜒。
    第二階段:唯一錨點鎖定(Anchor Identification)

    在地理推論中,最忌諱拿著「碧綠湖水」或「蒼翠山巒」這種通用特徵盲目比對。我們必須找到畫面中的唯一錨點(Unique Anchor):

    關鍵工程特徵組:
    土石壩主體 + 右岸側槽U型溢流堰 + 跨溢洪道預力拱橋 + 長陡槽跳斗消能池

    全臺灣的大型水庫中:

    • 翡翠水庫:三心雙向彎曲混凝土重力拱壩(排除)。
    • 石門水庫:具大型多道閘門溢洪道,背山坡度與下游平原景觀完全不同(排除)。
    • 鯉魚潭水庫:全臺唯一的鋸齒狀自然溢流堰,無此型式拱橋與土石主壩配置(排除)。
    • 曾文水庫:三道弧形閘門滑槽與跳躍式挑流鼻坎,規模與消能池型態不符(排除)。
    • 南化水庫:位於臺南市南化區後堀溪流域,壩型恰為中央心壁土石壩,並擁有全臺著名的側槽自由溢流式溢洪道,其進水口上方正建有一座預力拱橋供庫區防護通行!

    至此,水庫身分百分之百確定為——臺南南化水庫。

    第三階段:空間向量與幾何視線反推(Spatial Geometry & Sightlines)

    確定了目標物是南化水庫,下一個核心問題是:拍攝者究竟站在哪一座山頭?朝哪個方向拍?

    這一步需要運用嚴謹的水文地勢與幾何投影邏輯:

    1. 水流方向判定:
      • 南化水庫攔截的是「後堀溪」,溪水是由北向南流動。
      • 因此,大壩的蓄水面在北邊(上游),壩體斜坡與溢洪道消能池在南邊(下游)。
    2. 景物相對位置關係:
      • 在照片中,大壩斜坡與消能池是面朝鏡頭展開的,表示拍攝者位於大壩的下游方向(南側)。
      • 大壩土石壩體落在畫面的左側(偏西)。
      • 溢洪道與水庫湖灣落在畫面的中央偏右(偏東)。
      • 聚落與網室農園落在畫面的右下方(更偏東)。
    3. 視線方向結論:
      • 只有當你站在水庫南方偏東的高地,向 北北西(Heading 約 345°~350°) 遠眺時,大壩才會出現在左手邊,溢洪道在正前方,水庫蓄水延伸向右,而下方的玉山里下歸林聚落則出現在右側山谷中。

    為了驗證這個幾何向量,我們調取了衛星地圖並繪製實際視線交會圖:

    視線繪製分析圖 map_sightlines.jpg
    視線繪製分析圖 map_sightlines.jpg

    (上圖展示了從南側不同稜線點朝向南化水庫大壩與溢洪道發射的幾何視線)

    第四階段:候選地點競爭與排除法則(Candidate Board & Falsification)

    在 geo-sleuth 的方法論中,所有推論都必須在「候選看板(Candidate Board)」上記錄並接受證偽檢驗,不可憑印象定案。

    候選點 1:天艷宮/鈺鼎步道涼亭(排除)
    • 地理位置:位於南化水庫西側(北寮里),是許多登山客俯瞰水庫的著名步道。
    • 幾何證偽:鈺鼎步道涼亭向東看水庫,其大壩必定落在視野的右側,而本照片大壩位於左側。視線反向,直接排除。
    候選點 2:風空子山三角點(下權重)
    • 地理位置:烏山步道北段的高點(海拔 668 公尺),位於水庫正南方。
    • 幾何證偽:風空子山三角點對大壩的方位角約為 353°(近乎正北),且海拔過高(俯角將超過 11°),視線會被前方的山坳稜角遮蔽部分消能池,視野構圖過於扁平。
    候選點 3:雲山寺/烏山步道北口山徑透空處(完全吻合)
    • 地理位置:位於南化區玉山里下歸林後方山腰(海拔約 315~360 公尺),為烏山步道北段登山起點。
    • 視角計算:
      • 大壩方位角:約 336°(視野左側)。
      • 溢洪道與湖灣方位角:約 348°(視野中央)。
      • 下歸林聚落方位角:約 015°(視野右側)。
      • 水平視野視角(HFOV):約 45° ~ 50°,完全符合標準智慧型手機主鏡頭視角。
    • 植被驗證:照片前景兩側有典型的 相思樹(Acacia confusa) 細長鐮刀狀葉片與粗糙樹皮。烏山步道前身為日治時期防火線,步道沿線遍布相思樹人工林與次生闊葉林。此照片正是在階梯步道旁的樹林間隙(透空點)所拍攝。
    第五階段:綜合證據鏈與最終定位(Evidence Synthesis)

    完成所有特徵與幾何驗證後,我們生成了正式的證據圖檔:

    綜合證據圖 evidence.jpg
    綜合證據圖 evidence.jpg

    在上圖中:

    1. 主圖(衛星圖視角範圍):清楚標記了位於 雲山寺/烏山步道 的攝影機點位、朝向 348° 的視角扇形區域(Heading Wedge)、射向大壩的視線黃線,以及大壩、溢洪道與下方聚落的空間對應。
    2. 下方對照面板(Panels):將照片中的實體特徵與衛星地貌一一閉環對齊。
    最終精確座標
    • 拍攝地點:臺灣臺南市南化區玉山里 雲山寺旁烏山步道起登段山徑
    • 經緯度 (WGS84):23.0691° N, 120.5462° E
    • 高程:約 320~350 公尺
    • 誤差半徑:±50 米

    小結

    兩者都猜中是南化水庫,不過有所誤差,正確地點大概距離 4 公里左右,所以都不算完全正確。



    3. 山間道路

    「沒」Skill

    透過畫面中的植被生態、道路型態及工程設施等特徵進行層層比對與推敲:

    一、 關鍵特徵分析
    1. 樹種與林相(植被生態)

      • 優勢樹種:畫面中為成片筆直高聳、樹皮呈縱向剝落且帶有紅褐色與淺色地衣斑塊的針葉樹,這是極為標準的日本柳杉(Cryptomeria japonica)人工造林地。
      • 海拔與氣候帶:在台灣,大規模柳杉人工純林主要分布於海拔 1,000~2,300 公尺 的中高海拔「盛行雲霧帶」。
      • 林下底層植物:邊坡覆蓋著極為茂盛的耐陰濕蕨類(如蹄蓋蕨類、廣葉深山雙蓋蕨等)與厚實苔蘚,環境濕度高且長年有雲霧滋潤。
    2. 道路與工程特徵

      • 無標線柏油路:路面為鋪設平整的瀝青(AC),但路中央與兩側皆未劃設任何黃/白標線,路寬約 4~5 公尺,顯示這並非一般對外開放的省道或縣道公路,而是國家森林遊樂區內部的管制專用林道、遊園車專用道或人車共用步道。
      • 地形與線型:道路呈現標準的**「之字形」(髮夾彎/Switchback)**盤旋爬升,拍攝視角位於下層路段,視線透過林木仰望正上方同一條道路的迴轉彎道。
      • 安全護欄:遠處彎道外緣設有一小段深褐色木質/仿木垂直格柵護欄,此為林業及自然保育署(林保署)近年在高山森林遊樂區進行林道邊坡改善的標準設施規範。
    二、 地點推敲與比對

    台灣全境符合「整條鋪設優質柏油無標線、穿越整片壯麗柳杉林、有連續之字形髮夾彎、設置仿木深色護欄」的地點極為少數:

    1. 最符合地點:阿里山國家森林遊樂區 —— 祝山林道

      • 路段:由沼平第二管制哨往上通往祝山觀日平台/對高岳/小笠原山的祝山林道(約 1.5K 至 2.5K 之間的盤旋路段)。
      • 吻合度最高:祝山林道全線禁行一般私家車,僅供電動遊園車及公務車通行;沿線完全為日治時期保留至今日的大面積柳杉造林地,坡度陡峭因而設計多處之字形大迴轉彎道。
    2. 次要候選地點:南投溪頭自然教育園區 —— 鳳凰林道

      • 鳳凰林道(神木至天文台段)同樣為全鋪裝無劃線柏油林道,也有柳杉與髮夾彎,但溪頭海拔較低(約 1,150~1,700m),林冠與闊葉混生程度通常略高於本照片呈現的高海拔純林相。
    三、 結論與精準座標

    綜合林相形態、道路斷面與護欄設施,該地點為台灣嘉義縣阿里山國家森林遊樂區內的「祝山林道」迴轉彎路段。

    • 拍攝地點:台灣嘉義縣阿里山鄉,阿里山國家森林遊樂區 祝山林道(對高岳步道入口前之盤旋爬升段)
    • 估計精準座標:
      • 十進位坐標:23.5156° N, 120.8189° E(誤差範圍約 ±150 公尺內)
      • 度分秒坐標:23°30'56.2"N 120°49'08.0"E
    • 海拔高度:約 2,250~2,350 公尺

    (作者:可惜錯了,不是阿里山。)


    「加上」Skill

    階段一:微觀特徵解讀與環境生態篩選

    面對未知照片,第一步不是盲目搜索,而是進行極為細緻的特徵解構。將畫面拆解為「自然環境(生態)」與「人造痕跡(工程設施)」兩大系統:

    1. 植被生態與海拔高度鎖定
    • 樹種特徵:畫面中主要林木樹幹筆直高聳,樹皮呈紅褐色且帶有垂直纖維狀剝落與縱裂,樹身附生苔蘚與少量地衣,林下底層密布各類陰濕蕨類。這是非常典型的日本柳杉(Cryptomeria japonica)人工造林地。
    • 氣候與地理區間:柳杉原產於日本,日治時期引進台灣廣泛用於中高海拔山區水土保持與林業試驗。柳杉林在台灣多分布於海拔 1,000 至 2,200 公尺之雲霧帶(如阿里山、溪頭、杉林溪、觀霧、太平山、東眼山等地)。由此迅速將候選範圍縮小至特定高山林區。
    2. 人工設施工法與道路結構

    照片前景與中景隱藏著關鍵的空間透視關係:

    • 道路性質:前景腳下為鋪設平整、排水良好的柏油路面,且完全沒有繪製車道中線或路肩白線。這代表該道路極可能不是對外的一般公私立幹道(省道、縣道多有規範劃線),而是國家森林遊樂區、實驗林場或高山生態度假園區內部的人車共用道或接駁車專用林道。
    • 空間透視:在前方斜坡上方,隔著樹林清晰可見另一段橫切而過的柏油路,正朝右側大角度弧形彎折——這明確指出此處是一座之字形爬升的「髮夾彎(Switchback)」,拍攝者正站在下層路段,透過樹林仰拍上層的彎道。
    彎道特徵放大圖
    彎道特徵放大圖
    • 木製護欄設計:仔細放大中景上層彎道的外側(如上圖右側),邊坡上設有一段深褐色的木質護欄。該護欄具備方形厚實的立柱帽頭,中間填充直立排列的木條柵欄。此類兼具自然景觀整合與高耐候防護的木製護欄,具有極為濃厚的林業休閒園區營造特徵。
    階段二:特徵局部反搜與跨平台驗證

    當我們確立了「中高海拔柳杉林」、「無標線園區柏油道路」、「帶有直立木柵欄的彎道」三個硬性特徵後,下一步是尋找真實世界的視覺關聯。

    直接使用整張全景圖搜尋常會因大片樹林紋理而落入一般森林桌布或植物圖庫的雜訊中。因此,關鍵技巧在於:

    1. 提取高特異性區域:針對「路面曲度+護欄造型」以及不同視角邊緣做區域提取。
    2. 反向圖像比對:比對社群平台的遊記與打卡照片。

    在搜尋過程中,我們發現了一張來自社群平台(小紅書)的同路段實拍圖(如下圖):

    社群打卡比對圖
    社群打卡比對圖
    關鍵比對驗證點:
    1. 相同的道路型態:乾淨無任何標線的柏油路面,右側為緊鄰山壁的青苔草坡,左側為懸空邊坡。
    2. 完全一致的木護欄工法:左側路緣長條延伸的深色立柱與直立木柵欄造型完全吻合。
    3. 林相環境:兩側茂密高聳、直入天際的柳杉林風貌如出一轍。
    4. 貼文關鍵錨點:該貼文標題明確載明為 「打卡|南投杉林溪~」。

    至此,候選核心區域收斂到台灣南投縣竹山鎮的知名景區——杉林溪森林生態渡假園區(Sun Link Sea)。

    階段三:路網拓撲分析與三維幾何驗證

    確定了「杉林溪」之後,若要在整個佔地數百公頃的廣袤園區內找出具體拍攝點,需要進一步結合地理路網拓撲(OpenStreetMap)與數位高程模型(DEM)。

    1. 園區道路結構篩選

    杉林溪園區內主要步道與車道網絡包含:

    • 由園區大門/主題會館通往「花卉中心(藥花園)」的杉林溪林道與穿林棧道。
    • 由「花卉中心」深入通往「松瀧岩瀑布」的遊園接駁車道與樂山步道。

    其中,作為遊園接駁車專用道、開放平整柏油路面且兩側為高密度人工柳杉造林的區間,高度集中在花卉中心至松瀧岩瀑布之間的山谷路段。

    路網與衛星疊加分析
    路網與衛星疊加分析
    2. 幾何形狀與之字形雙髮夾彎比對

    將該路段向量拓撲疊加至高解析度衛星圖(如上圖橘線所示)後,發現在花卉中心南方約 300 公尺處(座標 23.623°N ~ 23.624°N, 120.798°E 附近),山勢陡降,道路為了克服地形高差,形成了一個非常獨特的 「連續之字形雙層髮夾彎」:

    • 道路由花卉中心南下時,先折向西南沿著山腹前進。
    • 經過第一處急轉彎後朝北北西爬升折返。
    • 隨後再次 180 度大迴轉向西南通往松瀧岩。

    這使得上下兩層道路在水平距離上僅相距約 20 至 30 公尺。

    3. 三維高程與透視俯仰角驗證
    • 高程數據比對:
      • 下層道路(拍攝點):海拔約 1,765–1,770 公尺。
      • 上層彎道(中景護欄處):海拔約 1,780–1,785 公尺。
    • 空間落差:上下層垂直高度差約 10 至 15 公尺。
    • 視線幾何還原:當人站在下層道路向西北仰望時,視線穿過 25 公尺的柳杉林斜坡,剛好能以約 20~25 度的仰角清楚看見上層彎道外側轉角處的防墜木欄杆。這與照片中「前景路緣在胸前、中景路面微高於平視視角」的景深特徵完全契合。
    階段四:空照覆核與機位朝向鎖定

    最後,透過高解析度空照圖結合拍攝者視角進行最終覆核驗證:

    定位證據圖
    定位證據圖
    • 拍攝機位(Camera Point):位於園區道路下層直線段路緣,座標約為 23.6238° N, 120.7985° E。
    • 鏡頭朝向(Heading):朝向約 330°(西北至北北西方向),仰望視野正對著上方迴轉處的木製護欄。
    • 日照光影方向:上午陽光穿透高處林冠,由上方及右後側灑落林間,在斜坡草木與樹幹右側產生立體側逆光,與此處朝向東北開敞的山谷日光角度相符。
    最終結論
    項目判定結果
    行政區劃台灣 南投縣竹山鎮大鞍里
    所在景區杉林溪森林生態渡假園區(Sun Link Sea)
    具體位置園區遊園車/人行車道(花卉中心往松瀧岩瀑布方向之之字形髮夾彎處)
    精準地理座標 (WGS84)23.6238° N, 120.7985° E
    預估定位誤差範圍±50 公尺以內
    信心評級區域:高 (High) / 道路:高 (High) / 機位:中 (Medium)

    (作者:沒錯!是杉林溪內的這段路,不過小可惜的是誤差大約 1 公里,但能抓到大致位置已經很厲害了。)


    小結

    這算是魔王關,只給一張山間道路的照片,沒加 Skill 的 Gemini 3.8 Flash 已經蠻厲害了,可以推敲出是台灣的中高海拔山區,而且也蠻像阿里山的。

    不過加了 Skill 後,直接就精準到是杉林溪,不過可能道路都長很像,沒有什麼特徵,所以實際地點有 1 公里左右的誤差。我覺得這一般人應該很難答對。



    臺灣 TW 區域擴充包

    以下「臺灣 TW 區域擴充包」分享給各位,包含臺灣的縣市鄉鎮、台電電力座標、公路編號標誌系統、車牌/門牌、…等等一些屬於台灣的特徵,讓模型在辨識時會更加準確。

    將其解壓縮後放到 skills\geo-sleuth\regions 內即可。



    結語

    從其過程,可以理解到此 geo-sleuth Skill 和模型是如何運用各種不同的小細節去推理的。

    另外,最好模型本身要支援視覺,因為過程中像是讀車牌樣式、日照方向、建築細節,或比對場景/街景特徵…等等,還是要有模型的視覺,不然效果應該就不會很好。


    說實在的,這次除了發現 geo-sleuth 這個好東西,
    測試比較才驚覺,現在頂尖模型 (或是說 Gemini 3.8 Flash,搞不好 Google 因為有很多街景、衛星資料,所以這方面特別強) 在用圖片找地點,這能力已經非常的強,有些我原本以為沒辦法的地點都可以正確判斷。

    對於大部分照片 (甚至有較明顯目標),其實請具視覺的頂尖模型 (例如 Gemini 3.8 Flash) 來回答,效果就很不錯了 (我甚至找不太到幾張辨識不出來的…)。對於真的沒什麼特徵,或需要更精準座標,或是本地的開源模型的話,建議搭配此 geo-sleuth skill,缺點可能就是需要等比較久 (超久…)。


    不得不說,現在要把照片發到社群網路上,要更加注意,經由 AI 的協助,現在連一般普通人都能簡單地找出實際座標,要上傳照片,就有曝露位置的心理準備。



    對於生成式 AI 感興趣的讀者,歡迎追蹤 FB 粉專『 IT空間 』,避免錯過最新的發文通知呦~🔔




    參考:
    geo-sleuth | GitHub


    “The only way to do great work is to love what you do. If you haven’t found it yet, keep looking. Don’t settle.”
    「成就的唯一途徑是熱愛自己的事業,如果你還沒找到的話,繼續尋找,不要屈就。」

    —— 史蒂夫·賈伯斯 (Steve Jobs)


    🔻 如果覺得喜歡,歡迎在下方獎勵我 5 個讚~
    分享

    Jia
    作者
    Jia
    軟體工程師 - Software Engineer