fth
Фев. 22, 2011 20:18:15
Дано множество точек на глобусе заданных в виде широты и долготы и хранящихся в БД.
Необходимо вывести список всех этих точек отсортированных по дальности от некоторой заданной точки.
Возможно ли решить как-либо эту задачу не высчитывая каждый раз расстояние между точками или не составляя матрицу расстояний между всеми точками?
Sleepwalker
Фев. 23, 2011 09:46:43
Может и есть какой-то хитрый алгоритм для этого …
Я бы использовал какую-то spatial database (например PostGIS для Postgres) и одним запросом все это выводил. Никакой матрицы Вам самому не прийдется строить.
helm2004
Фев. 23, 2011 10:29:50
Вторым вариантом есть использование noSQL баз данных, например, MongoDB или Matisse, где данные можно хранить в json формате.
zheromo
Фев. 23, 2011 22:04:03
helm2004
Может и есть какой-то хитрый алгоритм для этого …
может в сторону geohash посмотреть, правда придется этот хэш заранее создать
а так вполне подходит
zheromo
Фев. 23, 2011 22:06:18
ну и на разные гео расширения (для постгреса точно есть) но по этому поводу ничего толком сказать не смогу, так как не использовал, просто в курсе, что они есть
helm2004
Фев. 23, 2011 23:39:42
zheromo я такого не писал, но если дадите 100 гривен какому нибуть детскому дому от моего имени, то ладно, аффтар я.
zheromo
Фев. 24, 2011 01:37:24
helm2004
100
можно в рубли по курсу, заранее извиняюсь
vvp91
Фев. 24, 2011 09:10:53
Казалось бы, причем тут django?
—
В запросе сортировать по квадрату расстояния , учесть западную и восточную долготу (longitude) и северную и южную широту (latitude) можно разными знаками.
helm2004
Фев. 24, 2011 09:48:59
vvp91 Дёргать БД, при большой нагрузке(может он пишет для диспетчеров аэропортов), когда все маршруты знакомы, а аэропорта появляются не часто, когда известна марка самолёта и параметры аэропорта который этот самолёт готов принять, то лучше всё это хранить в отсортированом виде, для пущей производительности и здоровью во благо.
helm2004
Фев. 24, 2011 09:51:03
vvp91, и да ваша формула не правильна, ибо Земля естмь шар, а из сего значит что растояние между точками будет дуга :)