Как мне запросить объекты, которые находятся “поблизости”, с помощью свойства GeoPt в Google App Engine?
-
06-07-2019 - |
Вопрос
Как я должен создать запрос GQL, который возвращает ближайшие объекты (из моего текущего местоположения) на основе их свойства GeoPt?Должен ли я просто создать функцию 'distance', которая вычисляет для набора объектов с достаточно близким расстоянием?
Заранее благодарю!
Решение
App Engine не обрабатывает свойства GeoPt специально - в нем нет встроенной пространственной индексации.Однако существует ряд сторонних библиотек, которые добавляют поддержку пространственного индексирования.Лучшим из них (на мой взгляд) является геомодель.
Другие советы
Вы можете хранить местоположения в App Engine в структуре Quadtree .
Вот одно описание того, как это будет сделано: Географические запросы в Google App Engine
Полагаю, я собираюсь сделать что-то вроде экскаватора, но вот оно:
Я искал решение этой проблемы и натолкнулся на официальные документы Google: https://cloud.google.com/appengine/docs/java/search / query_strings # Java_Queries_on_geopoint_fields
Я действительно думаю, что Google должен был сделать немного больше шума по этому поводу. Я нахожу странным, что у них есть урок на Python для того, чтобы сделать то же самое, но ничего не говорит о том, как сделать это для Java.
Геохеш устанавливает очень близкие точки в разных хешах, поэтому предпочтителен другой или следующий слой. Вы можете сделать радиус, квадратный тест внутренней / внешней формы или даже любую математическую форму и проверить, находится ли точка внутри нашей внешней формы.