Como faço para consulta de entidades que são “próximos” com a propriedade GeoPt no Google App Engine?
-
06-07-2019 - |
Pergunta
Como devo criar uma consulta GQL que retorna as entidades mais próximas (de minha posição atual), com base em sua propriedade GeoPt? Devo apenas criou uma função de 'distância' que calcula para um conjunto de entidades com uma distância razoavelmente perto?
Graças antes do tempo!
Solução
App Engine não propriedades GeoPt tratar especialmente - não tem construído em indexação espacial. Há uma série de bibliotecas de terceiros que adicionam suporte para indexação espacial, no entanto. O melhor (na minha opinião) sendo GeoModel .
Outras dicas
Você pode armazenar os locais em App Engine em uma href="http://en.wikipedia.org/wiki/Quadtree" rel="nofollow noreferrer"> estrutura Quadtree Aqui está uma descrição de como isso seria feito: Geographic consultas no Google App Engine
Eu acho que eu vou a algum tipo de escavadeira realização, mas aqui está:
Eu estava procurando por uma solução para este problema e me deparei com docs Oficiais este do Google: https://cloud.google.com/appengine/docs/java/search / query_strings # Java_Queries_on_geopoint_fields
Eu realmente acho que o Google deve ter feito um pouco mais barulho sobre isso. Acho que é estranho que eles têm uma aula sobre Python para fazer a mesma coisa, mas não diz nada sobre como fazê-lo para Java.
conjunto geohash pontos muito próximos em diferentes hash Portanto, outra ou camada seguinte deve ser preferida. você pode fazer um raio, quadrática dentro / test forma exterior ou mesmo qualquer forma matemática e testar se o ponto está dentro ou fora da forma.