Как запросить объекты, которые находятся поблизости, с помощью свойства GeoPt в Google App Engine?

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

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


person ehfeng    schedule 23.06.2009    source источник


Ответы (4)


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

person Nick Johnson    schedule 24.06.2009
comment
Есть ли план поддержки пространственного индексирования в будущем? - person Lipis; 12.10.2011
comment
@Lipis Мы ничего не анонсировали в дорожной карте. - person Nick Johnson; 12.10.2011
comment
По крайней мере, ничего публичного.. Я надеялся, что вы поделитесь чем-то, чего не знает остальной мир.. :) Надеюсь, мы увидим это за день до конца света, который грядет в 2012 году.. : P Продолжай в том же духе.. - person Lipis; 12.10.2011

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

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

person pufferfish    schedule 24.06.2009

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

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

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

person VyMajoris    schedule 06.03.2015

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

person Niklas R.    schedule 03.07.2009