2016-09-30 2 views
2

Я имею полей x и y на некоторых документах поиска, которые соответствуют декартовым координатам, и я хотел бы выполнить радиальный поиск, как:GeoPoint эквивалент для декартовой системы координат

query = '(x * x) + (y * y) < 100' 

который бы приравнять к " найти все вещи, которые меньше, чем 10 м от (0,0)»

Попытки использовать что частность выражения терпит неудачу с QueryError: Failed to parse query, так что кажется, мне нужно взять другой подход.

Есть ли встроенный способ сделать это?

Я видел GeoPoint поля и distance функцию запроса, что почти делать то, что мне нужно, проблема, являющаяся, что мои x,y s не долготы и широты. Я думал о попытке злоупотребления этим - сопоставить все координаты с гораздо меньшим доменом, в котором система lat/long тесно приближается к картезианскому домену. Это кажется немного взломанным, поэтому я ищу что-то лучшее.

ответ

1

Нет, не существует.

API поиска не поддерживает произвольно вычисленные выражения в полях (например, x * x в вашем примере). Он поддерживает нумерацию here. Ваше отображение из декартовых координат в лат/длинные поля звучит так, будто это был бы самый правдоподобный подход.

(Полное раскрытие информации: Я нахожусь в команде.)

+0

Спасибо! У меня было такое чувство. Цените, что вы разъясняете меня. – DaveBensonPhillips

+1

Вы очень желанны! Мне жаль, что мы не предлагаем лучшую поддержку для вашего случая использования, по крайней мере прямо сейчас. –

Смежные вопросы