|
|
  |
определение местоположения по сотам, можно ли узнать координаты по сотам |
|
|
|
Oct 3 2008, 06:01
|
Участник

Группа: Участник
Сообщений: 46
Регистрация: 2-10-08
Пользователь №: 40 659

|
На яндекс карты поддерживается для мобильников точьность не измерял но районы соответствуют
|
|
|
|
|
Oct 3 2008, 19:38
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 19-12-05
Пользователь №: 12 391

|
по поводу "кручения антен" - когда в город Х. приезжала типа коммисия из стольного города К. начиналось кручение(типа, на скока я понимаю диагармы направленности не те иль покрытие не так), как только уезжали - местные возвращали взад... правда было это с годик тому.. что сичас - не знаю - не интересно.
|
|
|
|
|
Apr 30 2009, 08:46
|
Группа: Участник
Сообщений: 12
Регистрация: 15-01-09
Пользователь №: 43 428

|
Цитата(Rst7 @ Oct 1 2008, 15:46)  Не очень точные координаты и не для всех операторов и не для всех мест можно получить следующим образом: 1. Необходимо узнать LAI/LAC/CID текущей рабочей вышки (тут все зависит от модуля, можно ли от него эту информацию получить). 2. Затем, пользуясь сервисом гугли получить координаты этой вышки. Но это будет координата вышки, а не модуля, как понимаете. Если сможете достать из модуля все вышки, которые он видит (обычно, около 6) и уровни сигналов, то можно оценить координаты самого модуля. Заметьте, оценить, а не измерить  А можно немного поподробнее о том, как можно это сделать? Мой модуль выплевывает следующие данные: < nbcells>: number of base stations available. The first base station is the serving cell (0 ≤ i ≤ 7) < ARFCN>: Absolute Radio Frequency Channel Number < BSIC>: Base Station Identify Code < PLMN>: PLMN identifiers (3 bytes), made of MCC (Mobile Country Code), and MNC (Mobile Network Code). < LAC>: Location Area < CI>: Cell ID, 4 hexadecimal digits, e.g. ABCD. < RSSI>: Received signal level of the BCCH carrier, decimal value from 0 to 63. < TA>: Timing advance. Available only during a communication (equals to 0xff=255 at any other time). В данном случае, CID=>CI, LAC=>LAC, а что такое LAI - не совсем понимаю... Вот в этом документе нашел информацию, что LAI - это совокупность MNC, MCC, LAC и CID (то есть всего вышеперечисленного). Также не совсем понятно, как из этой информации можно получить задержку сигнала от определенной вышки... Подскажите, пожалуйста, как можно переколбасить эти данные в координаты. ЗЫ О каком, кстати, сервисе Гугла речь идет? Вроде информации по вышкам там взяться неоткуда...
|
|
|
|
|
Apr 30 2009, 09:37
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата А можно немного поподробнее о том, как можно это сделать? Ну, все данные Вы получаете, судя по тексту ниже. Цитата Также не совсем понятно, как из этой информации можно получить задержку сигнала от определенной вышки.. TA - это и есть задержка. В у.е. Актуальна только при наличии соединения. Цитата Подскажите, пожалуйста, как можно переколбасить эти данные в координаты. ЗЫ О каком, кстати, сервисе Гугла речь идет? Вроде информации по вышкам там взяться неоткуда... Google Maps для мобильных устройств ходит на свой серверок, который по CID/LAC возвращает широту/долготу. Яндекс тоже имеет такой сервис. Недолгое гугление привело к коду Код function GetCoordFromGoogle(CountryCode, NetworkCode, LAC, CellID: Integer): string; var strA, strB, strC, strAll: string; sResult: string; ms: TMemoryStream; dLat, dLon: Double; iLat, iLon: Integer; i: Integer; b: byte; sTmp, sTmp2: string; iCntr: Integer; HTTP: TIdHTTP; begin Result := ''; strA := '000E00000000000000000000000000001B0000000000000000000000030000'; strB := '0000' + IntToHex(CellID, 2) + '0000' + IntToHex(LAC, 2); strC := '000000' + IntToHex(NetworkCode, 2) + '000000' + IntToHex(CountryCode, 2); strAll := strA + strB + strC + 'FFFFFFFF00000000'; HTTP := TIdHTTP.Create(nil); HTTP.Request.ContentType := 'application/x-www-form-urlencoded'; HTTP.Request.ContentLength := Length(strAll) div 2; ms := TMemoryStream.Create; try iCntr := 1; for i := 1 to (Length(strAll) div 2) do begin b := StrToInt('0x' + Copy(strAll, iCntr, 2)); iCntr := iCntr + 2; ms.Write(b, 1); end; ms.Seek(0, soFromBeginning); try sResult := HTTP.Post('http://www.google.com/glm/mmap', ms); if Length(sResult) > 14 then begin sTmp := '0x'; for i := 1 to 5 do begin sTmp2 := Copy(sResult, i + 6, 1); sTmp := sTmp + IntToHex(Ord(sTmp2[1]), 2); end; iLat := StrToInt(sTmp); sTmp := '0x'; for i := 1 to 4 do begin sTmp2 := Copy(sResult, i + 11, 1); sTmp := sTmp + IntToHex(Ord(sTmp2[1]), 2); end; iLon := StrToInt(sTmp); dLat := iLat/1000000; dLon := iLon/1000000; Result := Format('%12.7f%s%12.7f', [dLat, #13#10, dLon]); end; except // stub end; finally HTTP.Free; ms.Free; end; end;
function GetCoordFromYandex(CountryCode, NetworkCode, LAC, CellID: Integer): string; const cc_URL = 'http://mobile.maps.yandex.net/cellid_location/?&cellid=%d&operatorid=%d&countrycode=%d&lac=%d'; var sURL: string; rs: TStream; node: IXMLNode; HTTP: TIdHTTP; XML: TXMLDocument; begin Result := ''; sURL := Format(cc_URL, [CellID, NetworkCode, CountryCode, LAC]); rs := TMemoryStream.Create; HTTP := TIdHTTP.Create(nil); XML := TXMLDocument.Create(HTTP); // если указать nil то будет ошибка :-D try HTTP.Request.Accept := 'text/plain'; HTTP.Request.AcceptEncoding := 'windows-1251'; try HTTP.Get(sURL, rs); if rs.Size > 0 then begin rs.Seek(0, soFromBeginning); XML.LoadFromStream(rs); XML.NSPrefixBase := 'location'; node := XML.Node.ChildNodes.FindNode('location'); if (node <> nil) then begin node := node.ChildNodes.FindNode('coordinates'); if (node <> nil) then begin Result := StringReplace(node.Attributes['latitude'], '.', ',', []) + #13#10 + StringReplace(node.Attributes['longitude'], '.', ',' ,[]); end; end; end; except // stub end; finally XML.Free; HTTP.Free; rs.Free; end; end;
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Apr 30 2009, 10:49
|
Группа: Участник
Сообщений: 12
Регистрация: 15-01-09
Пользователь №: 43 428

|
Rst7, спасибо! Круто, я б не догадался, что у Гугла с Яндексом есть такой замечательный сервис  Сейчас вижу вокруг себя 7 станций, то есть, если померить задержку до каждой - то можно получить довольно неплохую погрешность! Осталось найти способ, как можно измерить задержку для требуемой станции, потому как я пока не вижу, как для связи можно использовать какую-то определенную БС. Для этого есть какие-то определенные АТ-команды?
|
|
|
|
|
May 6 2009, 06:55
|
Группа: Участник
Сообщений: 12
Регистрация: 15-01-09
Пользователь №: 43 428

|
Цитата(Rst7 @ Apr 30 2009, 14:58)  Без ковыряний внутри софта модуля - никак, т.к. можно измерить задержку до текущей БС только в режиме разговора. Итак, как найти задержку разобрался. Убедился, что расстояние (благо, формулу знаю) можно измерить 1.только до текущей станции 2.только в режиме разговора  Погрешность - около полукилометра Сменить станцию посредством АТ-команд не предоставляется возможным - насколько я понимаю, то базовая станция выбирается не модулем, а сетью. То есть найти свои координаты по ТА не представляется возможным - можно только найти расстояние до текущей станции. Из остальных данные здесь может помочь, видимо, только уровень сигнала - он хоть как-то коррелирует с расстоянием, однако, как количественно связать эту цифру с расстоянием, я не знаю.
|
|
|
|
|
May 18 2009, 02:19
|
Местный
  
Группа: Свой
Сообщений: 202
Регистрация: 18-05-09
Из: Novosibirsk
Пользователь №: 49 204

|
Цитата(antisingle @ Apr 30 2009, 12:46)  А можно немного поподробнее о том, как можно это сделать?
Мой модуль выплевывает следующие данные: <nbcells>: number of base stations available. The first base station is the serving cell (0 ≤ i ≤ 7) <ARFCN>: Absolute Radio Frequency Channel Number <BSIC>: Base Station Identify Code <PLMN>: PLMN identifiers (3 bytes), made of MCC (Mobile Country Code), and MNC (Mobile Network Code). <LAC>: Location Area <CI>: Cell ID, 4 hexadecimal digits, e.g. ABCD. <RSSI>: Received signal level of the BCCH carrier, decimal value from 0 to 63. <TA>: Timing advance. Available only during a communication (equals to 0xff=255 at any other time).
... Подскажите пожалуйста, как GSM-модуль Вы используете? Помоему SIM300 не выдает параметр <TA>.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|