Мне известно об этом: порядок (lng, lat), сферический ($ nearSphere, $ centerSphere, $ box остается неизменным) и расстояния используют радианы.
я + 10k точек (широта, долгота), и я создаю приложение, которое показывает вам k ближайших точек к местоположению пользователя.
Я думаю, что это очень распространенная проблема, и я не хочу изобретать велосипед. Я изучаю Quadtrees. Кажется, это хороший подход для решения этой пространственной проблемы.
Я использую эти инструменты:
Python 2.5MySQLMongoDbПостроить Quadtree не так сложно:http://donar.umiacs.umd.edu/quadtree/points/pointquad.html Но как только я создал дерево и сохранил его в БД (MySQL или MongoDb), как мне выполнить запрос?
Мне нужно выполнить такие запросы:
Найти все точки в пределах 10 км от местоположения пользователя.Найдите 6 (или не менее 6) ближайших точек к местоположению пользователя.Каков стандартный и общий подход к этому?
РЕДАКТИРОВАТЬ 1:
Я загрузил + 10 тыс. Баллов в MongoDB (Геопространственное индексирование), и на первый взгляд все работает отлично. Во всяком случае я нашелPostGIS:
PostGIS является расширением системы объектно-реляционной базы данных PostgreSQL, которая позволяет хранить объекты ГИС (географические информационные системы) в базе данных.
Думаю, я попробую PostGis.
Я также нашелSimpleGeo, Вы можете хранить точки / места в облаке и затем запрашивать их через API:https://simplegeo.com/docs/tutorials/python#how-do-radial-nearby-query