非主流的手机定位:)
原文link: http://heresy.spaces.live.com/blog/cns!E0070FB8ECF9015F!7853.entry?wa=wsignin1.0&sa=757360296
一般提到定位,大家應該都是想到 GPS (Global Positioning System,全球定位系統) 吧?基本上,GPS 是去接收衛星的訊號,來計算出所在的位置;它的好處是,精確度高~但是相對的,它的缺點是,定位所需的時間較久、且在室內會因為收不到衛星訊號而無法使 用。目前一般所說的衛星導航系統,定位的方式就是這種方法;而 Heresy 之前買的 Wintec WBT-100 也是這種東西。
而 最近在手機上,還有一個很熱門的,就是 AGPS。AGPS 的全名是「Assisted Global Positioning System」,算是 GPS 的一種延伸;他是透過手機基地台的訊號,來加快 GPS 的定位速度,以彌補傳統 GPS 定位速度過慢的缺點。但是實際上這種方法,最後還是要透過衛星來做定位的~手機基地台,只是用來加快定位速度而已。
OK,GPS 和 AGPS 大概介紹到這。為啥要寫這篇?主要就是因為 Heresy 剛買的 Sony Ericsson C901 的這支手機了~這支手機在官方網站 裡,是強調他有「地理標記 」的功能,可以把地點標記在照片上,不過仔細看卻可以發現,他隻字未提 GPS 。但是在手機王的規格 裡,卻可以發現他列出了 A-GPS 這項功能;而在比價王 中,則是用「GPS 地理標記相片」這樣的名詞來描述。而 Heresy 自己入手手機後,也發現他拍出來的照片中,並沒有任何 GPS 的地理資訊 (經緯度)!所以才開始認真地研究,到底是怎麼回事。
那…以結論來說,C901 到底有沒有 GPS 呢?答案應該是沒有的 。基本上,由於 C901 本身並沒有 GPS 的衛星接收器,所以不可能接收衛星訊號,理所當然地沒有 GPS 的功能;而 AGPS 是基於 GPS 的延伸,所以自然也不能說 C901 有 AGPS 了~那 C901 的「地理標記」是怎麼做的呢?實際上,他只是透過 Cell ID 來做位置的判定 的!
Cell ID 這東西是啥?基本上,可以視為是手機基地台的識別碼。在《CDMA 手機定位研究與實作 》(PDF 檔)這篇論文裡,是這樣寫的:
Cell-ID 是全球使用的識別碼,每個基地台都有一個唯一的 ID,地區識別碼 Location Area Identity (LAI) 以及基地台識別碼 Cell Identity (CI),完整的 Cell-ID 包含 MCC(Mobile Country Code) + MNC (Mobile Network Code) + LAC + CI。
而實際上,上面提到 Cell ID 裡的資料,都只是編號而已,所以其實 Cell ID 本身是沒有任何地理位置的資訊的 !那要怎麼定位呢?方法很簡單,既然 Cell ID 可以代表目前手機所使用的基地台,那只要根據這點找到這個基地台的位置,就可以大致判斷出所在位置了!
不過要這樣做,有一個很大的問題,那就是:要到哪裡查基地台所在的位置資訊呢 ?
這點,又要感謝 Google 了!他在好一段時間前,除了讓它的網頁版線上地圖 Google Map 也提供手機版外,也提供了一項叫做「我的位置(My Location) 」的功能!這項功能,基本上就是透過它們建立的大量基地台位置資料庫,來讓手機可以透過 Cell ID 找到位置的!(當然,除了 Google Map 外,也還有其他的組織、或是計畫,也有再試圖建立 Cell ID 的資料庫;像 Open Cell ID 就是一個~不過,資料量還是很難和 Google 比就是了…)
也就是這樣,只要能知道手機目前所使用的基地台的 Cell ID,再搭配一個資料夠齊全的 Cell ID 位置資料庫,理論上就可以在大部分的情況下,粗略地定位出自己所在的位置了!而這樣的優點是什麼呢?有幾點:
當然,他也有不少缺點:
好的,Cell ID 大概介紹完了,回過頭來,Sony Ericcson 的「地理標記」,實際上就是透過 Cell ID 加上手機版的 Google Map 來完成的 。它實際的做法,就是在拍照時,會把當時的 Cell ID 的資訊,紀錄在相片的檔案中 (放 在 XMP 的資料區段,EXIF 裡有沒有不確定)。而當使用者按下「在地圖上檢視」的功能時,手機就會把這張照片的 Cell ID 資料讀取出來,丟給 Google Map。如此一來,就可以大致顯示相片的大致位置了!(或許算是 My Location 的延伸應用了吧?)
而因為他是用 Cell ID 來做定位,所以這也就是它沒有在照片檔的 EXIF 裡,寫入 GPS 資訊(經緯度)的原因;因為實際上,在連上網路查詢前,他也不知道到底在哪裡!所以實際上,他是沒辦法把經緯度的資料,寫到照片裡的。
當然,要解決不是沒有可能,一個簡單的方法,就是在拍照後,連到 Google Map 去查出經緯度的資訊,在寫到照片裡;但是這樣變成會要在每次拍照後,都要做數據傳輸,應該就不是每個人都想要的了…
Heresy 現在是打算研究一下,看怎麼寫一個 PC 上的小程式,可以去讀取照片裡的 Cell ID 的資訊,拿到 Google Map 作查詢,得到座標後再寫回照片的 EXIF 裡。目前前半段已經算完成了,希望能趕快寫完吧~
其他參考資料: