概述
最近有一個客戶諮詢如何透過基站獲取裝置的經緯度,所以查了一下相關資料,分享給大家。
基站是運營商(移動,聯通,電信)的裝置,這些裝置的分配的使用是由運營商來管理的,但好在基站的資訊有一個行業規則,基站編號有一定的規則。
基站基礎知識
基站圖片
基站資料
MCC:國家碼。如 460 表示中國
MNC:運營商碼。0 代表移動 2G,1 代表聯通 2G
LAC:位置區碼。可以理解為大區
CellID:基站塔編碼。可以理解為小區
一般定位是需要以上幾個資訊的
定位原理
原理有點類似於 md5 密碼破解一樣,就是有一些同時帶有基站定位和 GPS 定位的硬體裝置,上傳兩樣資料,這樣兩樣資料就有了關聯。
其他使用者再根據基站資訊查詢座標時,就有了資料可查詢。隨著這樣的資料越來越多,就有了這樣的庫。
純粹依賴移動、聯通、電信等行動網路定位,定位精度在 500 米-5000 米之間。
GPS 定位結果
透過裝置 GPS 定位模組返回的定位結果,精度較高,在 10 米-100 米左右
查詢服務
openGPS.cn 網站
https://www.opengps.cn/data/cell/search.aspx
上面有一些基站位置是查詢不到的。
基於瀏覽器定位功能也定位不到,原因不太清楚。
服務端
高德
申請高德賬戶,認證的企業使用者,然後申請才能開通基站定位功能,而且網頁沒有相關的 API,申請透過後會得到一個 PDF 技術文件。
呼叫過程需要 key
呼叫方式 http get 方式
http://apilocate.amap.com/position?accesstype=0&imei=352315052834187&smac=E0:DB:55:E4:C7:49&cdma=1&bts=13824,1,1838,1674723,575739,-52&serverip=10.2.166.4&output=xml&ke y=<使用者Key>
返回資料
{
"infocode": "10000",
"result": {
"city": "鄭州市",
"province": "河南省",
// 定位附近的 poi 名稱-
"poi": "香雪兒麵包房(楓楊街店)",
// 區域編碼-
"adcode": "410102",
"street": "楓楊街",
"desc": "河南省 鄭州市 中原區 楓楊街 靠近香雪兒麵包房(楓楊街店)",
"country": "中國",
// 定位型別,0:沒有得到定位結果;其他數字為:正常獲取定位結果
"type": "4",
// 經緯度 經度longitude 113.5633803 緯度latitude:34.813311
"location": "113.5633803,34.8133111",
"road": "楓楊街",
// 定位精度半徑,單位:米
"radius": "550",
"citycode": "0371"
},
"info": "OK",
// 返回狀態,值為 0 或 1,0 代表 false
"status": "1"
}
LBS 資料倉儲
免費的根據基站獲取經緯度的 API 介面,詳細介紹看介面說明即可。
http://www.cellocation.com/api/
騰訊
騰訊說不提供相應服務,但查其文件,需要聯絡客服開通才可以。
https://lbs.qq.com/service/webService/webServiceGuide/location
總結
最後我們選擇的是高德,為什麼免費的沒有用呢?經過測試,免費的質量較差,有一些基站免費的無法定位到,但高德的可以。
高德的品牌影響力稍微大一些。
而且高德的 API 小量使用時是免費的,我們使用量不大,目前還沒有付費,只要註冊認證就可以使用。
需要高德 API 文件的,可以關注我公眾號,回覆“定位”,自動獲取。