Forum Webscript.Ru

Программирование => Теория, алгоритмы и стандарты => Тема начата: Error202 от 07 Сентября 2008, 15:25:34

Название: Нас.пункту в радиусе по координатам
Отправлено: Error202 от 07 Сентября 2008, 15:25:34
Можно ли определить какие населенные пункты находятся в определенном радиусе от определенных координат?

Имеется: База всех населенных пунктов с координатами...

Например:
Входные данные: Москва, радиус 150км...
Выходные данные:
Москва
Дмитров
Королев
Мытищи
Пушкино
Талдом
Химки
...
Название: Нас.пункту в радиусе по координатам
Отправлено: brainkiller от 07 Сентября 2008, 19:51:15
Перво-наперво, привязать всё множество населённых пунктов к координатной сетке.

Для нахождения искомого подмножества выбрать населённые пункты, удовлетворяющие условию

 150^2 >= (x0 - x1)^2 + (y0 - y1)^2
Название: Нас.пункту в радиусе по координатам
Отправлено: Error202 от 07 Сентября 2008, 22:18:11
СУПЕР!!! СПАСИБО!!!

Осталось только теперь придумать, как из MySQL выбрать населённые пункты, удовлетворяющие этому условию... :(
Название: Нас.пункту в радиусе по координатам
Отправлено: brainkiller от 08 Сентября 2008, 13:37:01
Ну так из MySQL можно выбрать те, у которых x0 - 150 <= x <= x0 +150 и y0 - 150 <= y <= y0 +150, а потом к полученному подмножеству применить наше условие. :)
Название: Нас.пункту в радиусе по координатам
Отправлено: ravshaniy от 08 Сентября 2008, 21:41:17
да не в принципе можно и в транзакцию уложить, или функцию написать или процедуру если возможно, смотря какой мускл

можно либо в тмп таблицу сохранить рассчет справа от знака сравнения и потом из нее выборку сделать если это разовый рассчет.

Либо, учитывая что эти данные никогда не меняются, ввести в таблицу поле удаление_от_москвы, одной транзакцией уложить в это поле значения. и потом уже его использовать.
Название: Нас.пункту в радиусе по координатам
Отправлено: brainkiller от 22 Сентября 2008, 14:41:23
Цитировать
ввести в таблицу поле удаление_от_москвы


А если требуется находить удаление от произвольного города?
Название: Re: Нас.пункту в радиусе по координатам
Отправлено: anferova.y от 22 Сентября 2019, 08:04:10
Ну так из MySQL можно выбрать те, у которых x0 - 150 <= x <= x0 +150 и y0 - 150 <= y <= y0 +150, а потом к полученному подмножеству применить наше условие. :)

Не вижу никаких проблем, делай выборку и проверяй. Ключевые параметры ты же знаешь изначально, а далее дело техники. В зависимости от версии MySQL можно и часть задач в SQL запрос оставить)