Android 使用MCC、MNC、LAC和单元ID查找位置

Android 使用MCC、MNC、LAC和单元ID查找位置,android,linux,geolocation,gps,wireless,Android,Linux,Geolocation,Gps,Wireless,我知道MCC、MNC、LAC和Cell ID的值。我想用C编写一个程序,在Linux中以纬度和经度值的形式计算位置 供参考: LAC-位置区号;一个16位的数字,从而允许在一个GSM PLMN内有65536个位置区域 更多信息可以在维基百科上找到 问题: 在linux中如何将MCC、MNC、LAC、Cell ID转换为纬度和经度值 为什么每次尝试读取时,单元格ID都会变化 你要么需要一个数据库 (它们为新单元的测量、获取特定单元的位置等提供API) 或 使用“机密”API: “”是将ce

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

供参考:

  • LAC-位置区号;一个16位的数字,从而允许在一个GSM PLMN内有65536个位置区域
  • 更多信息可以在维基百科上找到
问题:

  • 在linux中如何将MCC、MNC、LAC、Cell ID转换为纬度和经度值
  • 为什么每次尝试读取时,单元格ID都会变化

  • 你要么需要一个数据库 (它们为新单元的测量、获取特定单元的位置等提供API)

    使用“机密”API: “”是将cellLocation转换为纬度和经度的非公共API


    回答您的问题的答案中给出了许多方法:

  • 您可以从终端或浏览器访问公共数据库,以将单元ID转换为lat/lon。数据库包括:

  • Cell ID是您的手机/设备连接到的移动电话塔的ID。当你移动一点,或者附近另一座塔的信号比当前塔好时,你的手机将切换到该塔,你的手机ID现在反映了该塔的ID


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

    虽然您可以通过wiki页面访问MCC和MNC等运营商信息:


    结果是通过谷歌地图定位全球定位系统,

    我编写了一个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
    

    这里不谈这个话题,但无论如何:据我所知,你不能用这些来计算纬度/经度;您需要在一些公开可用的数据库中查找这些值以查找位置。检查:我读了。但不知道,我怎样才能获得位置信息?正如我们看到的移动,当启用位置信息时。它在屏幕上显示最近的基站。我怎样才能知道基于MCC、MNC、LAC和Cell ID的位置?请注意,这是不鼓励的,因此答案应该是搜索解决方案的终点(与另一个参考文献的中途停留相比,随着时间的推移,这些参考文献往往会变得陈旧)。请考虑在这里添加一个独立的概要,将链接作为参考,但是“查找单元格”站点使用4个参数:MMC、MNC、LAC、CID(不仅仅是CID),那么它们为什么需要所有这些值?是否有代码演示如何使用这些参数查找位置(经度、纬度)?请添加明确说明;当你推荐自己的产品时,你必须说明你与未知情实验室的关系。