geolocation - ubicar - ¿Cómo triangular correctamente las torres celulares GSM para obtener una ubicación?
que alcance tiene una antena de telefonia celular (2)
Esta no es una respuesta realmente, pero es un motor de arranque y podría agregar más:
Los identificadores de celda se publican parece:
Encontré este enlace de esta página wiki que tiene enlaces a otras fuentes de datos de id de celda: http://en.wikipedia.org/wiki/Cell_ID )
ver la parte inferior de la página es un enlace a los datos de identificación de celda:
http://openbmap.org/latest/cellular/raw/input_raw.zip
También encontré este video de youtube en el que un tipo está jugando con algunas aplicaciones que tienen ubicaciones de torres de telefonía celular, parece:
http://www.youtube.com/watch?v=CYvVN5dJD7A
posiblemente entre los identificadores de celda y la intensidad de la señal puede hacer una conjetura ...
pero AFAIK para la triangulación general necesita conocer la ubicación exacta de al menos tres torres y su distancia exacta desde ellas (esto podría ser una distancia aproximada con la intensidad de la señal, pero puede ser demasiado precisa).
Parece que la wikipedia dice que está hecho de esta manera ... use una combinación de la celda en la que se encuentra, la torre más cercana y las potencias de señal para obtener su ubicación:
En primer lugar, estoy tratando de hacer todo este desastre en c # (.net 4), así que si se te ocurre algún código que me ayude, eso sería apreciado pero realmente cualquier cosa ayudaría en este punto.
Tengo una situación en la que tengo un dispositivo que solo puede obtener información de la celda GSM (por cierto, a través del comando AT+KCELL
), así que tengo una colección de valores sobre torres de celdas (cada una tiene LAC, MCC, MNC, ID de celda, intensidad de señal y el primer avance de tiempo). Por lo tanto, creo que estoy en un buen lugar para poder encontrar algún tipo de coordenada de longitud y latitud (aunque sea inexacto, pero bueno, bueno). Aquí es donde busco ayuda porque ahora mi pequeño cerebro está confundido ...
Puedo ver varios servicios que proporcionan resolución de código de celda (Google, Open Cell ID, etc.) y toman LAC, MCC, etc. como argumentos y devuelven una coordenada. Me imagino que lo que devuelvan sería, por lo tanto, la coordenada de la torre dada que paso. Entonces, en mi caso, podría enviar todos los LAC, etc. que tengo y recuperar una colección de longitudes y latitudes. Genial, pero ahí no está mi dispositivo. Ahora creo que necesito hacer algún tipo de triangulación y aquí es donde me duele mi falta de conocimiento.
Así que estoy en lo cierto hasta ahora? Suponiendo que lo esté, ¿cómo realizo este cálculo (hay algo que me dirá qué hacer con todos estos números o, mejor aún, alguna biblioteca de código abierto a la que puedo hacer referencia y alimentar todo esto para obtener algo sensato)? ?
Supongo que necesitaría usar el avance de tiempo para calcular una distancia aproximada de una torre celular (tal vez usando la intensidad de la señal de alguna manera) pero ¿qué debo hacer? Como pueden ver, estoy fuera de mi profundidad aquí!
Por ejemplo, esto es algo que podría volver al comando AT antes mencionado:
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
Lo romperé y analizarlo obtendría (espero que analice este derecho, existe la posibilidad de que haya un error en mi rutina de análisis, pero parece razonable):
Number of cells: 5
Celda 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
Celda 2
LAC: 5502
MNC: 1
MCC: 232
Cell ID: 33015
Signal: 55
ARFCN: 79
BSIC: 3
Longitude: 14.2637736
Latitude: 48.2331576
Celda 3
LAC: 5502
MNC: 1
MCC: 232
Cell ID: 33035
Signal: 55
ARFCN: 64
BSIC: 5
Longitude: 14.2488966
Latitude: 48.232513
Celda 4
LAC: 5502
MNC: 1
MCC: 232
Cell ID: 2515
Signal: 39
ARFCN: 55
BSIC: 32
Longitude: 14.2488163
Latitude: 48.2277972
Celda 5
LAC: 5502
MNC: 1
MCC: 232
Cell ID: 60920
Signal: 21
ARFCN: 41
BSIC: 33
Longitude: 14.2647612
Latitude: 48.2299558
Entonces, con toda esa información, ¿cómo encuentro, de la manera más precisa, dónde estoy realmente?
Puedo ayudarte con un poco de la teoría.
La triangulación es básicamente encontrar el punto de intersección de 3 círculos.
Cada torre móvil es el centro de un círculo. El tamaño del círculo es relativo a la intensidad de la señal de esa torre.
El lugar donde se superponen los 3 círculos es donde está el usuario.
Puedes hacer una triangulación muy básica de la siguiente manera:
3 Towers at tx1,ty1 tx2,ty2 tx3,ty3 With signal strengths s1, s2, s3 We calculate the weight of each signal. Essentially a number from 0 to 1 for each tower where the sum of the weights adds up to 1. Weighted signal w1, w2, w3 where: w1 = s1/(s1+s2+s3) w2 = s2/(s1+s2+s3) w3 = s3/(s1+s2+s3) User will be at x: (w1 * tx1 + w2 * tx2+ w3 * tx3) y: (w1 * ty1 + w2 * ty2+ w3 * ty3)
Aquí hay un ejemplo de trabajo usando los valores de su pregunta:
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. Longitude: 14.2565389 1. Latitude: 48.2248439 2. Longitude: 14.2637736 2. Latitude: 48.2331576 3. Longitude: 14.2488966 3. Latitude: 48.232513 4. Longitude: 14.2488163 4. Latitude: 48.2277972 5. Longitude: 14.2647612 5. Latitude: 48.2299558 Location Longitude = 14.2565389 * 0.3007519 + 14.2637736 * 0.2067669 + 14.2488966 * 0.2067669 + 14.2488163 * 0.2067669 + 14.2647612 * 0.0789474 Location Latitude: = 48.2248439 * 0.3007519 + 48.2331576 * 0.2067669 + 48.232513 * 0.2067669 + 48.2277972 * 0.2067669 + 48.2299558 * 0.0789474 Result Longitude: 14.255507 Result Latitude: 48.2291628