Как запросить объекты, которые «находятся рядом», с помощью свойства GeoPt в Google App Engine? - PullRequest
7 голосов
/ 23 июня 2009

Как мне создать GQL-запрос, который возвращает ближайшие объекты (из моего текущего местоположения) на основе их свойства GeoPt? Должен ли я просто создать функцию «расстояние», которая рассчитывает для набора объектов с достаточно близким расстоянием?

Спасибо заранее!

Ответы [ 4 ]

9 голосов
/ 24 июня 2009

App Engine не обрабатывает свойства GeoPt специально - у него нет встроенной пространственной индексации. Однако существует ряд сторонних библиотек, в которых добавлена ​​поддержка пространственной индексации. Лучшим (на мой взгляд) является геомодель .

4 голосов
/ 24 июня 2009

Вы можете хранить местоположения в App Engine в структуре Quadtree .

Вот одно описание того, как это будет сделано: Географические запросы в Google App Engine

2 голосов
/ 06 марта 2015

Полагаю, я собираюсь на какое-то достижение копателя, но вот оно:

Я искал решение этой проблемы и натолкнулся на официальные документы Google: https://cloud.google.com/appengine/docs/java/search/query_strings#Java_Queries_on_geopoint_fields

Я действительно думаю, что Google должен был сделать немного больше шума по этому поводу. Я нахожу странным, что у них есть урок на Python для того, чтобы сделать то же самое, но ничего не говорит о том, как сделать это для Java.

0 голосов
/ 03 июля 2009

Геохеш устанавливает очень близкие точки в разных хешах, поэтому предпочтителен другой или следующий слой. Вы можете сделать радиус, квадратный тест внутренней / внешней формы или даже любую математическую форму и проверить, находится ли точка внутри нашей внешней формы.

...