Я разрабатываю приложение на Google App Engine, и мне нужно найти все точки, которые есть в коробке.
Базовый поиск SQL будет выглядеть так:
minlatitude <широта И maxlatitude> широта И minlongitude <долгота И maxlongitude> долгота
Но этот запрос неэффективен и запрещен (нельзя использовать неравенство в 2 разных полях) в Google App Engine.
Итак, я закодировал широту / долготу в иерархическом порядке http://en.wikipedia.org/wiki/Geohash.
Но использование Geohash имеет некоторые проблемы:
Да, он найдет все ваши очки, находящиеся в коробке, но он также найдет точки вне коробки.
Давайте рассмотрим пример:
Ящик с нижним левым углом (1, 1) -> geohash1 = s00twy01mtw0
и верхний правый угол (10, 10) -> geohash2 = s1z0gs3y0zh7
примет точку P как (2, 11) -> geohashP = s0rg6k1fye42
потому что geohash1
даже если P не в коробке.
Есть идеи об эффективном способе получить все очки, которые есть в коробке (и только их)?
Сейчас я думаю о последующей обработке дополнительных неправильных точек после запроса.