it-swarm.com.ru

Поиск местоположения с использованием MCC, MNC, LAC и Cell ID

Я знаю, что значения для MCC, MNC, LAC и Cell ID. Я хочу в C написать программу для расчета положения в виде значений широты и долготы в Linux.

FYI:

Вопрос:

  1. Как я могу преобразовать MCC, MNC, LAC, Cell ID в значения широты и долготы в Linux?
  2. Почему Cell ID меняется каждый раз при попытке чтения?
11
Embedded Programmer

Чтобы ответить на ваши вопросы:

  1. Вы можете получить доступ к общедоступным базам данных из терминала или браузера, чтобы преобразовать идентификатор ячейки в лат/долгота. Базы данных включают в себя:

  2. Cell ID - это идентификатор вышки сотовой связи, к которой подключен ваш телефон/устройство. В тот момент, когда вы немного двигаетесь или сигнал другой соседней башни оказывается лучше текущей, ваш телефон переключится на эту башню, и ваш идентификатор ячейки теперь будет отображать идентификатор этой башни.

4
kouton

Вам либо нужна база данных OpenCellID (они предоставляют API для измерения новой ячейки, определяют положение конкретной ячейки и т.д.)

или же

используйте «секретный» API: " http://www.google.com/glm/mmap " - непубличный API для преобразования cellLocation в широту и долготу.

Многие способы сделать это приведены в ответах на этот SO вопрос.

2
Frozen Crayon

я написал скрипт на 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
0
Ahmed chiboub

Вы можете использовать этот простой, но эффективный веб-сайт, который не требует входа в систему:

http://www.cell2gps.com/

в то время как вы можете получить доступ к информации оператора, такой как MCC и MNC, на вики-страницу:

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

Результатом является местоположение GPS через Google Maps, 

0
FBasso