14

我知道 MCC、MNC、LAC 和 Cell ID 的值是什么。我想在 C 语言中编写一个程序,以在 Linux 中以纬度和经度值的形式计算位置。

供参考:

问题:

  1. 如何在 linux 中将 MCC、MNC、LAC、Cell ID 转换为纬度和经度值?
  2. 为什么每次尝试读取时Cell ID都会变化?
4

4 回答 4

4

要回答您的问题:

  1. 您可以从终端或浏览器访问公共数据库,将单元 ID 转换为纬度/经度。数据库包括:

  2. Cell ID 是您的手机/设备连接到的手机信号塔的 ID。当你稍微移动一点,或者附近另一个塔的信号比现在的好,你的手机就会切换到那个塔,你的 Cell ID 现在反映了那个塔的 ID。

于 2014-02-10T16:08:34.737 回答
2

您要么需要一个数据库 OpenCellID(它们为新细胞测量提供 API,获取特定细胞的位置等)

或者

使用“秘密”API:“ http://www.google.com/glm/mmap ”是一个将 cellLocation 转换为纬度和经度的非公共 API。

在这个 SO 问题的答案中给出了许多方法来做到这一点。

于 2013-10-17T08:54:55.293 回答
1

我写了一个可以为你做这件事的python脚本。您可以从 pyc 文件中获取二进制文件。

#!/bin/python
"""
Written by Atissonoun - Credits to MFC & HAC
***You need to initialize the script in order to fix the import and the dependency.
This is only a Beta version of the project***
This python file works as the engine for the project.
imports, coordinates, run......
"""

#Importing modules
import requests
#defining a Api_Keys

Google_API_KEY="Your google API Key goes here"
OpenCell_Api_Key ="Your OpenCellID API Key goes here"

def Google(MMC,MNC,LAC,ID,API_KEY=Google_API_KEY):
    url = "https://www.googleapis.com/geolocation/v1/geolocate?key={}".format(API_KEY)
    data={
    "radioType": "gsm",
    "cellTowers":[
        {
        "cellId": ID,
        "locationAreaCode": LAC,
        "mobileCountryCode": MMC,
        "mobileNetworkCode": MNC
        }
    ]
    }
    response = requests.post(url, json=data)
    if response.status_code == 200 :
        lat=response.json()[u'location'][u'lat']
        long = response.json()[u'location'][u'lng']
        d={'LAT':lat,'LONG':long}
        print('Located Cell: {}'.format(ID))
        return d
    else:
        print('Error: {}'.format(response.status_code))
        return None

def Opencell(MMC,MNC,LAC,ID,API_KEY=OpenCell_Api_Key):
    url = "https://us1.unwiredlabs.com/v2/process.php"
    data = {
        "token": API_KEY,
        "radio": "gsm",
        "mcc": MMC,
        "mnc": MNC,
        "cells": [{
            "lac": LAC,
            "cid": ID
        }]
    }
    response = requests.post(url, json=data)
    if response.status_code == 200:
        if response.json()[u'status']== 'error':
            print('Error: {}'.format(response.json()[u'message']))
            return None
        else:
            lat = response.json()[u'lat']
            long = response.json()[u'lon']
            d = {'LAT': lat, 'LONG': long}
            print('Located Cell: {}'.format(ID))
            return d
    else:
        print('Error: {}'.format(response.status_code))
        return None
于 2017-06-24T02:28:36.210 回答
0

您可以使用这个不需要任何登录的简单但高效的网站:

http://www.cell2gps.com/

同时您可以访问 wiki 页面上的 MCC 和 MNC 等运营商信息:

http://en.wikipedia.org/wiki/Mobile_country_code#I

结果是通过谷歌地图定位GPS,

于 2014-08-30T18:15:35.340 回答