Intereting Posts
Curl возвращает «Неизвестный протокол» Не проверять возвращаемое значение close (): насколько серьезно, действительно? функция для преобразования временной метки Unix навалом в Python Измените приоритет текущего процесса на C VirtualHost всегда возвращает хост по умолчанию с Apache на Ubuntu 14.04 Apache RewriteRule .htaccess Разрешение зависимостей в Linux Превосходные методы прекрасного закрытия C ++ Как выполнить команду в сценарии bash, а затем сфокусировать появившееся окно Как отслеживать все процессы-потомки для очистки? Проверка наличия нескольких файлов – скрипт Unix с использованием аргументов Обработка изображений и вложений файлов в системе управления контентом Я не понимаю эту диаграмму fork () Является ли тот же DLL гарантированно отображаться на один и тот же виртуальный адрес в каждом процессе, используя его? Структура папок для сайта Nodejs Multi Subdomain

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

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

FYI:

  • MCC – Мобильный код страны
  • MNC – Код мобильной сети
  • LAC – код города; 16-битовое число, тем самым позволяя 65536 мест размещения в пределах одной PLMN GSM
  • Дополнительная информация доступна здесь, в Википедии, Location Area Identity

Вопрос:

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

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

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

    • API несвязанных лабораторий
    • OpenCellID
  2. Идентификатор ячейки – это идентификатор башни сотового телефона, к которому подключен ваш телефон / устройство. В тот момент, когда вы немного двигаетесь, или сигнал соседней башни лучше, чем текущий, ваш телефон переключится на эту башню, и ваш идентификатор ячейки теперь отобразит идентификатор этой башни.

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

или

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

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

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

http://www.cell2gps.com/

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

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

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

Я написал сценарий 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