GSM 기지국을 올바르게 삼각 측량하여 위치를 파악하는 방법은 무엇인가요?

우선, 저는이 모든 재앙을 c# (.net 4)에서 수행하려고 노력하고 있으므로 저를 도울 수있는 코드를 생각해 내면 감사 할 것이지만이 시점에서 실제로 도움이 될 것입니다.

GSM 셀 정보 만 가져올 수있는 장치 (부수적으로 AT + KCELL 명령을 통해)가 있으므로 기지국에 대한 값 모음 (각각 LAC, MCC, MNC, 셀 ID, 신호 강도 및 첫 번째 타이밍 사전)이있는 상황이 있습니다. 따라서 나는 일종의 경도와 위도 좌표 (정확하지는 않지만, 음, 음)를 얻을 수있는 좋은 위치에 있다고 생각합니다. 지금 제 작은 뇌가 혼란스러워서 도움을 요청하는 곳입니다...

셀 코드 해상도를 제공하는 다양한 서비스 (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

그렇다면 이 모든 정보를 가지고 내가 실제로 어디에 있는지 가장 정확한 방법으로 어떻게 찾을 수 있을까요?

질문에 대한 의견 (11)
해결책

이론적인 부분은 제가 조금 도와드릴 수 있습니다.

삼각 측량은 기본적으로 세 개의 원의 교차점을 찾는 것입니다.

각 모바일 타워는 원의 중심입니다. 원의 크기는 해당 타워의 신호 강도에 비례합니다.

3개의 원이 겹치는 지점이 사용자가 있는 곳입니다.

다음과 같이 매우 기본적인 삼각 측량을 수행할 수 있습니다:

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

해설 (10)

이것은 실제로 정답은 아니지만 시작에 불과하며 더 추가할 수도 있습니다:

셀 ID가 공개 된 것 같습니다:

http://openbmap.org/

이 위키 페이지에서 다른 셀 ID 데이터 소스에 대한 링크가 있는 이 링크를 찾았습니다: http://en.wikipedia.org/wiki/Cell_ID ).

페이지 하단에 셀 ID 데이터에 대한 링크가 있습니다:

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

또한 한 남자가 기지국 위치가있는 앱으로 장난을 치는이 유튜브 비디오를 발견했습니다:

http://www.youtube.com/watch?v=CYvVN5dJD7A

아마도 셀 ID와 신호 강도 사이에서 추측 할 수 있습니다.

하지만 일반적인 삼각 측량을 하려면 적어도 세 개의 타워의 정확한 위치와 타워와의 정확한 거리를 알아야 합니다(신호 강도에 따라 대략적인 거리가 될 수 있지만 정확하지 않을 수 있습니다).

위키피디아에서는 이렇게 말하는 것 같습니다. 현재 어느 셀에 있는지, 가장 가까운 타워와 신호 강도를 조합하여 위치를 파악합니다:

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

해설 (0)