手機 Cell ID 與定位


一般提到定位,大家應該都是想到 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 位置資料庫,理論上就可以在大部分的情況下,粗略地定位出自己所在的位置了!而這樣的優點是什麼呢?有幾點:

  1. 手機不用額外增加 GPS 的元件
  2. 即使在室內,也可以使用;而 GPS 在室內基本上是無法使用的。
  3. 基本上,取得 Cell ID 的額外時間是 0,不像 GPS 定位還要好一段時間。

當然,他也有不少缺點:

  1. 實際上有 Cell ID 不代表知道位置,還要透過網路查詢,才可以知道位置,相對起來需要額外的數據傳輸費用
  2. 精確度很低,誤差距離大小視基地台的涵蓋半徑而定,從 500 公尺至 3 公里都有可能。
  3. 如果所使用的基地台沒有在資料庫中,那就沒辦法取得位置的資訊了。
  4. 無法應用在一般的導航軟體上。

好的,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 裡。目前前半段已經算完成了,希望能趕快寫完吧~


其他參考資料:

對「手機 Cell ID 與定位」的想法

  1. […] 完成後,按下方的「Add」就可以套用到自己的手機了~不過以這個腳本來說,似乎必須要在 GPS 開啟的狀況下才有用?由於 Heresy 沒有把數據傳輸(3G 上網)長時間打開的習慣,所以並不確定是否可以靠 Cell ID 的定位來做判斷,不過稍微測試一下,似乎是不行…這點算是相當可惜的。 […]

  2. 用 .Net 可以讀取 EXIF 或 XMP 都沒問題,但是在 Metadata 寫入的部分,限制很多,沒有辦法在這邊用…

  3. 真是非常好的文章。受益了。你说的PC小程序应该不难实现。如果使用.net的话,3.0以上版本已经可以直接读取图片文件的元数据了,可以将Cell ID保存到图片的标题中,再使用一个HttpWebRequest对象到Google Map查询(理论上),将返回结果再写入图片文件的元数据 "主题"中。

  4. 我找了一下,已經有人寫好了這個:http://fahrenheit-blog.spaces.live.com/blog/cns!DFBC5260E098305F!267.entry等到c901再便宜一點,我就會去買了!!!

發表留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料