2012-04-22 9 views
6

Estoy tratando de resolver el problema de "Buscar un punto de interés cerca de usted" en java. es decir, tengo un número de lat, muchos puntos de interst. Y quiero encontrar los que están dentro de, digamos, 800 metros. Suponiendo que sé mi lat y log actual.En la base de datos de memoria que admite la consulta espacial

Mi problema es que esta aplicación tiene que ser independiente. Por lo tanto, no puedo confiar en una consulta de base de datos espacial para encontrar los resultados, p. usando MySQL he encontrado que esto es útil: http://xebee.xebia.in/2010/10/28/working-with-geolocations/

Actualmente no puedo encontrar una db en memeory que soporta consultas spatital. Iba a recurrir al uso de un R-Tree algo así como http://jsi.sourceforge.net/

Pero sé que no será tan correcto, dado que utiliza una redecilla en lugar de una búsqueda circular.

¿Alguna tiene alguna recomendación?

Respuesta

1

En realidad, la biblioteca jsi (http://jsi.sourceforge.net) es bastante perfecta para este problema. Fue escrito para apoyar este escenario exacto.

Al buscar rectángulos (o puntos) cercanos puede proporcionar una distancia máxima, y ​​devolverá los resultados en orden creciente de distancia.

No admite la consulta "devolver todos los puntos dentro de un radio de 800 m", pero en la práctica querrá un límite. Por lo tanto, la biblioteca jsi admite el más útil "devolver los 50 puntos más cercanos dentro de un radio de 800 m".

Si realmente quiere todos los puntos dentro de un radio, puede aumentar el número de puntos a un número grande y ejecutar la consultaN más cercana, o hacer una consulta de intersección y filtrar por distancia en su propio código.

1

Hay una base de datos en memoria llamada Altibase que admite características espaciales. Observa la especificación OGC. Puedes usarlo.

Cuestiones relacionadas