kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 kmp
kmp
Вопрос

Как правильно триангулировать вышки сотовой связи GSM для получения местоположения?

Прежде всего, я пытаюсь сделать всю эту катастрофу на c# (.net 4), так что если вы придумаете какой-нибудь код, чтобы помочь мне, это будет оценено, но на самом деле все, что угодно, поможет на данном этапе.

У меня ситуация, когда у меня есть устройство, которое может получить информацию только о GSM сотах (кстати, через команду AT+KCELL), поэтому у меня есть коллекция значений о сотовых вышках (каждая имеет LAC, MCC, MNC, Cell ID, Signal Strength и первый Timing Advance). Таким образом, я думаю, что нахожусь в хорошем месте, чтобы иметь возможность получить некоторые координаты долготы и широты (хотя и неточные, но, ну да ладно). Именно здесь я обращаюсь за помощью, потому что теперь мой маленький мозг запутался...

Я вижу различные сервисы, которые предоставляют разрешение кода ячейки (Google, Open Cell ID и т.д.), и они принимают LAC, MCC и т.д. в качестве аргументов и возвращают координаты. Я полагаю, что то, что они возвращают, будет, следовательно, координатой данной вышки, которую я передаю. Так что в моем случае я могу отправить все LAC и т.д., которые у меня есть, и получить обратно набор долгот и широт. Великолепно, но это не то, где находится мое устройство. Теперь я думаю, что мне нужно сделать что-то вроде триангуляции, и здесь мне вредит отсутствие знаний.

Итак, прав ли я до сих пор? Если предположить, что да, то как мне выполнить этот расчет (есть ли что-то, что подскажет мне, что делать со всеми этими числами, или, еще лучше, какая-то библиотека с открытым исходным кодом, на которую я могу сослаться и ввести все эти данные, чтобы получить что-то разумное)?

Я предполагаю, что мне нужно будет использовать опережение зажигания для определения приблизительного расстояния до сотовой вышки (возможно, используя силу сигнала), но что я должен сделать? Как вы можете видеть - я не в своей тарелке!

Например, вот что я могу получить от вышеупомянутой команды AT:

5,74,33,32f210,157e,8101,50,0,79,3,32f210,157e,80f7,37,64,5,32f210,157e,810b,37,55,32,32f210,157e,9d3,27,41,33,32f210,157e,edf8,15

Разбив его на части и разобрав, я получил бы (надеюсь, я разобрал это правильно - конечно, есть вероятность, что в моей процедуре разбора есть ошибка, но это выглядит разумно):

Number of cells: 5

ячейка 1

LAC: 5502
MNC: 1
MCC: 232
Cell ID: 33025
Signal: 80
ARFCN: 74
BSIC: 33
Timing advance: 0
Longitude: 14.2565389
Latitude: 48.2248439

Клетка 2

LAC: 5502
MNC: 1
MCC: 232
Cell ID: 33015
Signal: 55
ARFCN: 79
BSIC: 3
Longitude: 14.2637736
Latitude: 48.2331576

Клетка 3

LAC: 5502
MNC: 1
MCC: 232
Cell ID: 33035
Signal: 55
ARFCN: 64
BSIC: 5
Longitude: 14.2488966
Latitude: 48.232513

Клетка 4

LAC: 5502
MNC: 1
MCC: 232
Cell ID: 2515
Signal: 39
ARFCN: 55
BSIC: 32
Longitude: 14.2488163
Latitude: 48.2277972

Клетка 5

LAC: 5502
MNC: 1
MCC: 232
Cell ID: 60920
Signal: 21
ARFCN: 41
BSIC: 33
Longitude: 14.2647612
Latitude: 48.2299558

Итак, имея всю эту информацию, как мне наиболее точно определить, где я на самом деле нахожусь?

29 2012-04-26T08:37:03+00:00 2
 kmp
kmp
Редактировал вопрос 30-го апреля 2015 в 10:01
Программирование
geolocation
at-command
gsm
Решение / Ответ
Jared Kells
Jared Kells
26-го апреля 2012 в 10:11
2012-04-26T10:11:26+00:00
Дополнительно
Источник
Редактировать
#16038908

Я могу помочь вам немного разобраться в теории.

Триангуляция - это, по сути, нахождение точки пересечения трех окружностей.

Каждая мобильная вышка является центром круга. Размер круга зависит от силы сигнала этой вышки.

Место, где три круга пересекаются, и есть место, где находится пользователь.

Вы можете выполнить базовую триангуляцию следующим образом:

3 башни в
 tx1,ty1
 tx2,ty2
 tx3,ty3

С уровнями сигнала s1, s2, s3

Мы вычисляем вес каждого сигнала. По сути, это число от 0 до 1 для каждой башни, где сумма весов равна 1.

Взвешенный сигнал w1, w2, w3, где: w1 = s1/(s1+s2+s3) w2 = s2/(s1+s2+s3) w3 = s3/(s1+s2+s3)

Пользователь будет находиться в x: (w1 tx1 + w2 tx2 + w3 tx3) y: (w1 ty1 + w2 ty2 + w3 ty3)

Вот рабочий пример, использующий значения из вашего вопроса:

s1 = 80 s2 = 55 s3 = 55 s4 = 55 s5 = 21

w1 = 80 / ( 80 + 55 + 55 + 55 + 21 ) w2 = 55 / ( 80 + 55 + 55 + 55 + 21 ) w3 = 55 / ( 80 + 55 + 55 + 55 + 21 ) w4 = 55 / ( 80 + 55 + 55 + 55 + 21 ) w5 = 21 / ( 80 + 55 + 55 + 55 + 21 )

w1 = 0.3007519 w2 = 0.2067669 w3 = 0.2067669 w4 = 0.2067669 w5 = 0.0789474

  1. Долгота: 14.2565389

  2. Широта: 48.2248439

  3. Долгота: 14.2637736

  4. Широта: 48.2331576

  5. Долгота: 14.2488966

  6. Широта: 48.232513

  7. Долгота: 14.2488163

  8. Широта: 48.2277972

  9. Долгота: 14.2647612

  10. Широта: 48.2299558

Долгота местоположения = 14.2565389 0.3007519 + 14.2637736 0.2067669 + 14.2488966 0.2067669 + 14.2488163 0.2067669 + 14.2647612 * 0.0789474

Широта местоположения: = 48.2248439 0.3007519 + 48.2331576 0.2067669 + 48.232513 0.2067669 + 48.2277972 0.2067669 + 48.2299558 * 0.0789474

Долгота результата: 14.255507 Широта результата: 48.2291628

Jared Kells
Jared Kells
Редактировал ответ 26-го апреля 2012 в 12:17
37
0
Анонимный пользователь
26-го апреля 2012 в 10:23
2012-04-26T10:23:37+00:00
Дополнительно
Источник
Редактировать
#16038909

Это не ответ, но это начало, и я могу добавить к нему что-то еще:

Похоже, что идентификаторы ячеек опубликованы:

http://openbmap.org/

Я нашел эту ссылку на этой вики-странице, где есть ссылки на другие источники данных об идентификаторах ячеек: http://en.wikipedia.org/wiki/Cell_ID )

внизу страницы есть ссылка на данные об идентификаторе ячейки:

http://openbmap.org/latest/cellular/raw/input_raw.zip

Также я нашел это видео на youtube, где парень играет вокруг с некоторыми приложениями, которые имеют местоположение сотовых вышек, кажется:

Возможно, по идентификатору соты и уровню сигнала можно сделать предположение...

но AFAIK для общей триангуляции вам нужно знать точное расположение по крайней мере трех вышек и точное расстояние до них (это может быть приблизительное расстояние с уровнем сигнала, но это может быть слишком неточно).

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

http://en.wikipedia.org/wiki/Mobile_phone_tracking

3
0
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 5 дней назад
2
Денис Васьков
Зарегистрирован 1 неделю назад
3
Dima Patrushev
Зарегистрирован 1 неделю назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
JA
KO
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией