Rus Eng
Решения
Технологии
Дискуссии
Компания
 
Rambler's Top100
© Copyright iNetique
info@inetique.ru
 

 


 

База Cell ID

OpenCellId – проект с открытым исходным кодом. Целью данного проекта является создание полной базы данных координат ячеек всех сотовых операторов по всему миру. Проект располагается во всемирной паутине на сайте www.opencellid.org и предоставляет свободный доступ к данным и инструментам для пополнения базы и получения информации о расположении ячеек. Проект курирует ведущий поставщик сервисов, основанных на местоположении, 8Motions.

Недостатком технологии OpenCellId является низкая точность определения координат мобильного устройства, которая может колебаться от нескольких сотен метров до нескольких километров. Это связано с различной плотностью сети на разных территориях. Такая точность может быть критична для задач точного позиционирования, но в других случаях ее бывает достаточно. В последнее время технология OpenCellId набрала популярность, благодаря прозрачной интеграции с Google Map

К сожалению, сотовые операторы не открывают информацию о местоположении своих ячеек по нескольким причинам. Во-первых, они не хотят предоставлять информацию о своих вышках конкурентам; во-вторых: они сами используют эту информации для предоставления коммерческих услуг. Поэтому база данных OpenCellId пополняется самими пользователями. Позиция каждой ячейки определяется как среднее арифметическое между всеми измерениями, которые для нее заносились.

Технология OpenCellId позволяет любому пользователю мобильной связи написать и использовать приложение, для расширения базы данных и получения информации о своем местоположении по текущей ячейке. OpenCellId предоставляет API для работы с базой данных. Это обычные REST API, которые имеют два существенных вызова measure/add and get/cell и несколько дополнительных.

Measure/add - добавляет параметры ячейки в базу данных и используется приложениями, расширяющими содержание базы данных. Для добавления данных в базу, необходим регистрационный ключ в OpenCellID. Этот ключ используется поставщиком API для предотвращения попадания в базу фальшивых данных. Вызов функции Measure/add осуществляется следующим образом:

http://www.opencellid.org/measure/add?key=myapikey&mnc=1&mcc=2&lac=200&cellid=234&lat=3.42&lon=3.12

Параметры:

myapikey: ключ, получаемый при регистрации в OpenCellID.
mcc: мобильный код страны
mnc: мобильный код сети
lac: код региона
cellid: номер ячейки в виде десятичного числа
measured_at (optional): время занесения значений (необязательный)
lat: широта
lon: долгота

Функция возвращает результат ok или nook. При каждом добавлении измерений для ячейки, которая уже есть в базе данных, ее позиция пересчитывается.

сell/get - используется для получения местоположения текущей ячейки:

http://www.opencellid.org/cell/get?mcc=250&mnc=99&cellid=29513&lac=0

Параметры:


myapikey: ключ, получаемый при регистрации в OpenCellID.
mcc: мобильный код страны.
mnc: мобильный код сети.
cellid: номер ячейки в виде десятичного числа.
lac: код региона (является необязательным параметром и используется для альтернативного определения местоположения, если ячейка не была найдена.)

В качестве результата возвращается простой xml-документ, аналогичный приведенному ниже:


<rsp stat="ok">
<cell lat="57.8240013122559" lac="0" lon="28.00119972229" mcc="250" nbsamples="38" range="0" cellid="29513" mnc="99">
</cell>
</rsp>

При необходимости можно использовать дополнительный параметр fmt для определения выходного формата: http://www.opencellid.org/cell/get?mcc=250&mnc=99&cellid=29513&lac=0&fmt=txt

тогда возвращаемые данные будут выглядеть так:

57.8240013122559,28.00119972229,250,99,0,29513,100,38

Если данные о запрашиваемой ячейке отсутствуют в базе данных, возвращаются значения по умолчанию для данной зоны (lac), но точность, конечно, значительно уменьшается. Возвращаемый CellId равен -1. cell/getMeasures - позволяет получить необработанные измерения, которые были использованы для расчета позиции ячейки.

http://www.opencellid.org/cell/getMeasures?mnc=1&mcc=2&lac=200&cellid=234

По умолчанию результат возвращается в формате xml и выглядит следующим образом:


<rsp stat="ok">
<cell mnc="99" nbSamples="38" lat="57.8240013122559" lac="0" lon="28.00119972229" range="6000" mcc="250" cellId="29513">
<measure takenBy="1" lat="57.8240165710449" lon="28.00119972229" takenOn="Wed Apr 02 14:16:32 +0200 2008"/>
<measure takenBy="1" lat="57.8240165710449" lon="28.00119972229" takenOn="Wed Apr 02 14:17:01 +0200 2008"/>
...
<measure takenBy="1" lat="57.8240165710449" lon="28.00119972229" takenOn="Thu Apr 03 14:45:10 +0200 2008"/>
</cell>
</rsp>

cell/getInArea – используется для получения списка всех ячеек в выбранной области. Функция может быть полезна для ограничения круга рассматриваемых ячеек.

http://www.opencellid.org/cell/getInArea/?key=myApiKey&BBOX=latmin,lonmin,latmax,lontmax

Параметры:

myapikey: ключ, получаемый при регистрации в OpenCellID.
BBOX: координаты прямоугольной области, для которой нужно получить данные.
limit: размер получаемого списка ячеек (необязательный), по умолчанию – 200. Задание слишком большого размера списка может привести к ошибкам.
mcc: мобильный код страны, ограничивающий возвращаемый список.
mnc: мобильный код сети (оператора), ограничивающий возвращаемый список
fmt: формат возвращаемых данных - Kml, Xml или TXT as output. По умолчанию - Kml. Txt – это CSV формат, в котором первая строка определяет содержимое списка.

http://www.opencellid.org/cell/getInArea?BBOX=2.210836754705214,48.80850297346874,2.488529205537504,48.93716640758027&fmt=xml

Возвращаемый результат выглядит следующим образом.


<rsp stat="ok">
<cell mnc="20" nbSamples="7" lat="48.80854275" lac="20261" lon="2.44888447380952" mcc="208" cellId="23215"/>
<cell mnc="10" nbSamples="2" lat="48.8088958422343" lac="73985" lon="2.42393582661947" mcc="208" cellId="7647301"/>
...
<cell mnc="1" nbSamples="7" lat="48.8098366428571" lac="38657" lon="2.34625614285714" mcc="208" cellId="472848"/>
</rsp>

measure/uploadCsv –позволяет получить все измерения сразу. http://www.opencellid.org/measures/uploadCsv?key=myapikey

Параметры:

myapikey: ключ, получаемый при регистрации в OpenCellID.
datafile: файл, в который будут загружены измерения.

Datafile имеет следующий формат. В первой строке перечислены названия атрибутов, которые будут присланы. Каждая следующая строка содержит их значения. Пример фрагмента файла measure.txt приведен ниже.


lat,lon,mcc,mnc,lac,cellid,
37.9872945,23.5773136,202,10,11100,13245414
37.9835,24.613223,202,10,11100,13245416
...

measure/delete - используется для удаления мусора. Пользователь может удалить ошибочные данные, которые он сам добавил в базу данных.

http://www.opencellid.org/measure/delete/id?key=myApiKey

Параметры:

myapikey: ключ, получаемый при регистрации в OpenCellID.
id: номер измерения, которое будет изменено. Номер присваивается в результате выполнения функций measure/add или measure/listMines.

Когда все измерения, относящиеся к одной ячейке будут удалены, она также будет удалена из базы данных.

measure/list – возвращает список измерений, занесенных пользователем в базу данных.

http://www.opencellid.org/measure/list?key=myApiKey

Параметры:

myapikey: ключ, получаемый при регистрации в OpenCellID.

Список создается по пользовательскому ключу и из него можно получить номера внесенных им измерений, по которым можно их удалять. На сегодняшний день функция некорректно работает с очень большими списками.

Получение CellId на JME устройстве.

К сожалению, способ получения номера ячейки сотовой связи и остальных параметров, необходимых для определения позиции ячейки на JME устройствах не специфицирован. Обычно производители мобильных устройств предоставляют эту информацию через системные свойства. О названиях соответствующих системных свойств необходимо справляться в технической документации конкретного производителя. Ниже приведены примеры полуения некоторых параметров сети для Sony Ericsson, Motorola и Nokia.

Sony Ericsson


System.getProperty("com.sonyericsson.net.cellid");
System.getProperty("com.sonyericsson.net.lac");
System.getProperty("com.sonyericsson.net.mcc");
System.getProperty("com.sonyericsson.net.mnc");

Motorola


System.getProperty("CellID");
System.getProperty("LocAreaCode");

Nokia


s-40 Sysem.getProperty("Cell-ID")
s-60 System.getProperty("com.nokia.mid.cellid")

Инструменты

При разработке приложений на JSP можно воспользоваться следующей библиотекой: Cell ID taglib. Она упрощает процесс обращения к серверу и разбор откликов.

База Open Cell ID является не единственным источником, доступным для получения координат сотовых ячеек. Например, можно воспользоваться базой данных от Ericsson Labs. Вот соответствующая библиотека: Mobile location.