Tengo algunos objetos que están geolocalizados (tengo para cada objeto la latitud + longitud). Mi aplicación necesita mostrar los objetos que están a 3 kilómetros alrededor de la posición GPS del dispositivo móvil. Tengo varios miles de objetos y están localizados en un área grande (por ejemplo, varios estados de EE. UU., Varios países pequeños), lo que significa que en mi lista de objetos puedo tener uno ubicado en Nueva York y otro en Miami, pero también puedo objetos que están muy cerca (pocos metros).cómo ordenar los datos geográficos para una búsqueda rápida
Actualmente, mi aplicación realiza una búsqueda iterativa. Para cada objeto calculo la distancia con la posición del GPS y si la distancia es < = 3KM, entonces guardo el objeto si no lo ignoro. Este algoritmo no es muy eficiente y estoy buscando un algoritmo que brinde un mejor rendimiento.
Supongo que hay una manera de ordenar mis objetos usando el geo coord y luego encontrar más rápidamente los objetos que se encuentran alrededor de la posición del GPS.
Mi idea actual es simplemente calcular el rectángulo con los "puntos extremos", Norte/Sur/Este/Oeste (desde 3km de la posición del GPS) para limitar la zona de búsqueda. A continuación, calcularé la distancia solo para los objetos dentro de este cuadro. creo que algo mejor se podría hacer, pero no tengo la idea ...
Cualquier propuesta será apreciada ;-) Gracias ,
SEB.
Creo que un quadtree directamente en lat/lon funciona para casi todos los escenarios. Si la longitud es 0-360, entonces la cambiaría para que la "costura" en los datos esté en la línea de fecha en lugar de en cero (por lo que todos los problemas serían solo en el polo norte, polo sur y en el Pacífico) . –
Realmente gracias, estudiaré Octree y kd-tree. ¡Si no es demasiado complejo para mi pequeño cerebro, probablemente pueda hacer algo con él! – sebastien