如何透過裝置基站獲取裝置經緯度

一級碼農VIP發表於2023-02-17

概述

最近有一個客戶諮詢如何透過基站獲取裝置的經緯度,所以查了一下相關資料,分享給大家。

基站是運營商(移動,聯通,電信)的裝置,這些裝置的分配的使用是由運營商來管理的,但好在基站的資訊有一個行業規則,基站編號有一定的規則。

基站基礎知識

基站圖片

img

基站資料

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

上面有一些基站位置是查詢不到的。
基於瀏覽器定位功能也定位不到,原因不太清楚。

服務端

高德

https://lbs.amap.com/
img

申請高德賬戶,認證的企業使用者,然後申請才能開通基站定位功能,而且網頁沒有相關的 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 文件的,可以關注我公眾號,回覆“定位”,自動獲取。

相關文章