Je sais quelles sont les valeurs pour MCC, MNC, LAC et ID de cellule. Je veux en C écrire un programme pour calculer la position sous la forme de valeurs de latitude et de longitude dans Linux.
FYI:
Question:
Pour répondre à vos questions:
Vous pouvez accéder aux bases de données publiques depuis un terminal ou un navigateur pour convertir l’ID de cellule en lat/lon. Les bases de données incluent:
Cell ID est l'identifiant de la tour de téléphonie cellulaire à laquelle votre téléphone/appareil est connecté. Dès que vous vous déplacez un peu ou que le signal d'une autre tour à proximité est meilleur que l'actuel, votre téléphone bascule sur cette tour et votre identifiant de cellule reflète désormais l'identifiant de cette tour.
Vous avez besoin d'une base de données OpenCellID (ils fournissent des API pour la mesure de nouvelles cellules, obtiennent la position d'une cellule spécifique, etc.)
ou
utilisez l'API "secrète": " http://www.google.com/glm/mmap " est une API non publique permettant de convertir cellLocation en latitude et en longitude.
De nombreuses façons de faire cela sont données dans les réponses pour cette question SO.
j'ai écrit un script Python qui peut le faire pour vous. Vous pouvez obtenir un fichier binaire à partir du fichier 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
Vous pouvez utiliser ce site Web simple mais efficace qui ne nécessite aucun identifiant:
alors que vous pouvez accéder à des informations sur les opérateurs telles que MCC et MNC vers la page wiki:
http://en.wikipedia.org/wiki/Mobile_country_code#I
Le résultat est la localisation GPS via Google Maps,