匯出的 GPS 軌跡 CSV 檔案,為什麼用 Excel 打開會怪怪的
檔案本身多半沒問題。CSV 說穿了就是純文字,用逗號標出一個值到哪裡結束、下一個值從哪裡開始,它根本不知道以後會被哪個程式打開,所以也沒打算防著任何一個程式的既有習慣。Excel 有自己的一套假設——逗號該代表什麼、一長串小數該長什麼樣子——而一份塞滿 GPS 座標的檔案,剛好會撞上這兩條假設。幾乎所有出問題的情況都能歸到這兩件事上,而這兩件事的根源都在 Excel 這一側,不在匯出的檔案本身。
簡單說
通常會出兩種不同的問題,原因也不一樣。要麼整個檔案完全沒被拆開,全擠進了一欄;要麼欄位拆對了,但座標顯示成一個被截短、看起來像四捨五入過的數字,而不是匯出時的那個原始值。第一種,是 CSV 用來分隔數值的字元,跟 Excel 認定的分隔符對不上。第二種,是 Excel 那套通用的數字顯示格式,對著長小數一貫的做法,跟這個數字是不是 GPS 座標沒有關係。不管哪一種,都不代表底層資料本身有問題。
為什麼整份檔案有時會擠成一欄
CSV 全稱是「逗號分隔值」,大多數匯出檔案也確實用逗號來標記一個欄位到下一個欄位的分界。可是 Excel 直接打開檔案的時候,未必把逗號當成這個分界符。它預期哪個字元當分隔符,是由 Excel 的地區格式設定決定的——而在美國以外的不少地區,這個字元是分號,不是逗號,因為逗號在那些地區已經被用來當小數點,沒辦法再兼職當欄位分隔符。在這種設定下打開一份用逗號分隔的檔案,Excel 會老實去找分號,一個都找不到,於是認定整行就是一個欄位。結果就是,匯出檔案裡所有的欄位都擠進了 A 欄,逗號還留在原地,只是沒被拆開。
這跟 GPS 資料沒什麼特別關係。在把逗號當小數點的系統上,任何逗號分隔的檔案都會這樣——一份姓名和價格的表格,跟一份座標和時間戳記的表格,遇到的問題一模一樣。
為什麼座標看起來像是被截短或四捨五入了
就算欄位拆對了,座標看起來也可能比匯出時短。以不指定格式的一般數字打開,Excel 會套用它預設的「通用」格式,這個格式會依欄寬和它自己對顯示位數的上限來調整。一個帶好幾位小數的經緯度,可能因為儲存格更在意「數字看起來整齊」,被視覺上截掉一截,或者顯示的位數比檔案裡實際存的少。把欄位拉寬,或者把儲存格格式改成文字,就能還原完整的值——底層的數字從來沒變過,變的只是 Excel 選擇顯示幾位而已。
這個顯示上的縮短,跟上面說的擠成一欄是兩個不同的問題,卻常常被互相怪到對方頭上。把欄位拆對了,不會自動修好座標的顯示;把顯示修好了,也解決不了一開始就沒拆開的欄位。
怎麼把座標檔案匯進來,同時避開這兩個問題
同時避開這兩個問題最可靠的辦法,是走「匯入」這條路,而不是直接雙擊打開檔案——匯入能讓你明確告訴 Excel 該怎麼讀,而不是讓它自己猜。用「從文字或 CSV 匯入資料」這類功能,可以不管地區預設設定,直接把分隔符指定成逗號,也可以把座標所在的欄位指定成「文字」而不是「通用」,這樣在匯入過程中就不會被重新格式化、四捨五入或者被解讀成別的意思。文字欄位會原封不動顯示檔案裡的每一個字元,對座標這種「位數準確比看起來整齊更重要」的值來說,這是最保險的設定。
如果匯入不方便,針對擠成一欄這個問題,還有個更快的土辦法:先用純文字編輯器打開檔案,把所有當分隔符的逗號換成分號,再拿到把逗號當小數點的系統上的 Excel 裡打開。不過這只在數值本身不含逗號的前提下才管用,而且對顯示被四捨五入這個問題完全沒用。
容易搞錯的地方
- 看到整份檔案擠成一欄,就以為匯出本身壞掉了——絕大多數情況下,這只是 Excel 的地區設定導致分隔符對不上,跟檔案有沒有損壞沒關係。
- 文字編輯器打開明明好好的,卻懷疑是資料本身有問題,動手改了再存一次——文字編輯器對分隔符和數字格式完全沒有自己的假設,正因為這樣,它才能原封不動正確顯示檔案。
- 看到儲存格裡是個整整齊齊的一般數字,就直接拿來用——這種「整齊」很可能正是通用格式悄悄處理過的結果,用之前值得在資料編輯列裡核對一下儲存格實際存的內容。
- 修好了欄位的拆分,就以為看起來被四捨五入的數字也一併修好了——這兩個問題的根源不一樣,得分開處理。
TrailCam 在這裡的角色
TrailCam 可以在升級 TrailCam Pro 後把一條軌跡匯出成 CSV,也可以匯出成 GPX 1.1,用來傳到任何能讀取 GPX 的地方。這兩種匯出都不會因為最後由誰打開而改變自己的樣子——同一份檔案在一個程式裡打開得好好的,在另一個程式裡卻拆得亂七八糟或者數字被四捨五入,原因出在打開它的那個程式自己的地區設定和數字顯示方式,不在檔案本身。TrailCam 本身免費下載。
常見問題
- GPS 的 CSV 檔案在 Excel 裡擠成一欄,是不是代表匯出失敗了?
- 不是。幾乎都是因為 Excel 預期的分隔符跟檔案實際使用的逗號對不上,這是地區設定的問題,不是檔案本身的錯誤。匯入時把分隔符明確指定成逗號就能解決。
- 為什麼我的座標在 Excel 裡看起來比預期的要短?
- Excel 預設的數字格式會依欄寬調整顯示的位數,可能顯示得比儲存格裡實際存的位數少。在匯入前後把座標所在的欄位指定成文字格式,就能顯示檔案裡的原始值。
- 這些問題會不會真的改動到底層資料?
- 不會。這兩個問題說的都是 Excel 怎麼顯示、怎麼拆分檔案,跟檔案裡存的值本身無關。不管哪個程式選擇怎麼顯示,檔案裡的原始數字都原封不動。
記錄你自己的軌跡
TrailCam 是一款 iPhone 上的 GPS 軌跡記錄 App,會把沿途拍下的影片、照片與語音釘在你拍它的那個位置,並支援匯出成 GPX 1.1 或 CSV。免費下載。