Поиск местоположения с использованием MCC, MNC, LAC и Cell ID
Я знаю, какие значения для MCC, MNC, LAC и Cell ID. Я хочу в C написать программу для вычисления позиции в виде значений широты и долготы в Linux.
FYI:
Вопрос:
- Как преобразовать MCC, MNC, LAC, Cell ID в значения широты и долготы в linux?
- Почему идентификатор ячейки меняется каждый раз при чтении?
Ответы
Ответ 1
Чтобы ответить на ваши вопросы:
-
Вы можете получить доступ к общедоступным базам данных с терминала или браузера, чтобы преобразовать идентификатор ячейки в lat/lon. Базы данных включают:
-
Идентификатор ячейки - это идентификатор башни сотового телефона, к которому подключен ваш телефон/устройство. В тот момент, когда вы немного двигаетесь, или сигнал другой расположенной поблизости башни лучше, чем текущий, ваш телефон переключится на эту башню, и ваш идентификатор ячейки теперь отобразит идентификатор этой башни.
Ответ 2
Вам нужна база данных
OpenCellID (они предоставляют API для нового измерения ячейки, получают позицию конкретной ячейки и т.д.)
или
используйте "секретный" API:
" http://www.google.com/glm/mmap" является непубличным API для преобразования cellLocation в широту и долготу.
Многие способы сделать это приведены в ответах для этого вопроса SO.
Ответ 3
Вы можете использовать этот простой, но эффективный веб-сайт, который не нуждается в каком-либо входе в систему:
http://www.cell2gps.com/
пока вы можете получить доступ к информации оператора, такой как MCC и MNC, на страницу вики:
http://en.wikipedia.org/wiki/Mobile_country_code#I
Результатом является местоположение GPS через Карты Google,
Ответ 4
Я написал python script, который может сделать это для вас. Вы можете получить двоичный файл из файла 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