Как получить требуемый диапазон запросов для quadkey/quadint, выполняющих поиск близости
У меня есть база данных, содержащая lat / lon и Quadkey[1] для более быстрого поиска. Дизайн был вдохновлен этим постом в блоге Carto [2].
Как вы можете видеть из этого блога, они делают запрос на близость, используя запрос
SELECT count(1)
FROM a2
WHERE ((quadkey >= 1013670044871163904) AND (quadkey <= 1013670049166131200)) AND ((pow(pickup_longitude - -73.985195, 2) + pow(pickup_latitude - 40.75896, 2)) < pow((180 * 300) / ((6371 * 1000) * pi()), 2))
База данных использует python-quadkey[3] для вычисления Quadkey при вставке (аналогично блогу). Тем не менее, нет упоминания о том, как они получают / рассчитывают граничные значения для Quadkey.
Я попытался вычислить ограничивающий прямоугольник (широта / долгота вверху слева и внизу справа), а затем использовал значения Quadkey, но это, похоже, дает неверные диапазоны.
Любые указатели высоко ценится!
[1] https://msdn.microsoft.com/en-us/library/bb259689.aspx
[2] https://carto.com/blog/inside/geospatial-processing-with-clickhouse/