Расстояние и азимут | |
---|---|
Dutch Автор Сообщений: 212 Откуда: Волгодонск Дата регистрации: 25.10.2010 |
У меня есть справочник Spr_BS, в который занесён список населённых пунктов. Поля справочника такие - Пункт, Расстояние(км), Азимут(градусов). Данные указаны относительно некой постоянной отправной точки "А" - это город в котором расположен офис компании. Из этой точки совершаются поездки в населённые пункты указанные в справочнике Spr_BS.
Ситуация следующая: Я нахожусь в отправной точке А. Мне нужно попасть в точку Б, информация о ней мне известна из справочника Spr_BS. Задача: 1)Определить, какие населённые пункты встретятся мне по пути. "Попути", пусть это будет коридор в 20 км вправо и влево от вектора следования к пункту Б. 2)Определить, какие населённые пункты встречаются в радиусе 10 км от пункта Б. Это нужно для того, что бы при поездке в пункт Б можно было увидеть список пунктов находящихся "относительно" по пути. Имея такой список можно будет посетить эти пункты, если есть необходимость. Я понимаю что дорога извивается, да и информации маловато... Но задача носит не критический характер, а служит лишь для упрощения моей жизни. Поэтому приближённые данные вполне устроят. Ну и пример: Пункт:г.Ростов-на-Дону Расстояние: 230 Азимут:260 Исправлено 4 раз(а). Последнее : Dutch, 02.08.12 22:49 |
Re: Расстояние и азимут | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Землю считаем круглой, или наплевать (ходим по "плоской" карте, при мелких расстояниях погрешность будет несущественна)? Максимальные расстояния будут порядка сотен км, или нескольких тысяч? Т.к. например попасть в точку-антипод можно по ЛЮБОМУ азимуту, и потому понятие "коридора" будет бессмысленно. Летаем, или таки по дорогам движемся? Т.к. банальнейшая речка с одним единственным мостом на 100 км течения превращает саму идею "движения по кратчайшему" в фикцию.
Вообще для автотранспорта имеет смысл пользоваться навигаторами - т.е. софтом прокладывающим маршрут по дорогам, а не "напрямки топать". Для начала хотя бы вот это почитай. ------------------ WBR, Igor |
Re: Расстояние и азимут | |
---|---|
Dutch Автор Сообщений: 212 Откуда: Волгодонск Дата регистрации: 25.10.2010 |
Максимальное расстояние 300 км. Земля плоская.
Исправлено 1 раз(а). Последнее : Dutch, 03.08.12 00:52 |
Re: Расстояние и азимут | |
---|---|
Dutch Автор Сообщений: 212 Откуда: Волгодонск Дата регистрации: 25.10.2010 |
Мне не нужно прокладывать маршрут. У меня только две задачи. Ничего другого мне не нужно. |
Re: Расстояние и азимут | |
---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону Дата регистрации: 05.05.2005 |
Азимута недостаточно, необходимо составить таблицу абсолютных координат всех населенных пунктов относительно отправной точки. В таком случае задача сводится к вычислению пересечения множеств точек нас. пунктов и площади фигуры (прямоугольника).
------------------ Совершенство - это не тогда, когда нельзя ничего прибавить, а тогда, когда нечего убавить. Исправлено 2 раз(а). Последнее : Влад Колосов, 03.08.12 12:21 |
Re: Расстояние и азимут | |
---|---|
Mitchman Сообщений: 9978 Откуда: Николаев Дата регистрации: 24.05.2002 |
дык азимут с расстоянием это теже координаты
отсюда все координаты в 20 км коридоре(в обе стороны т.е. общей шириной 40 км) будут Расстояние*Sin(Abs(Азимут-АзимутНаправления))<=20 And ( Растояние*Cos(Азимут-АзимутНаправлеия)<РасстояниеНаправление And Abs(Азимут-АзимутНаправлеия)<90) по поводу находящихся в радиусе 10 км от точки (РасстояниеНаправление-Расстояние*Cos(Азимут-АзимутНаправления))^2+(Расстояние*Sin(Азимут-АзимутНаправления))^2<=100 где РасстояниеНаправление - радиус основного направления Расстояние - радиус проверяемого направления АзимутНаправления - азимут основного направления Азимут - Азимут проверяемого направления ------------------ - «свидомые украинцы озабочены не столько созданием украинской культуры, сколько уничтожением русской» - Олесь Бузина Исправлено 4 раз(а). Последнее : Mitchman, 03.08.12 13:31 |
Re: Расстояние и азимут | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Влад, помимо азимута есть расстояние - т.е. координаты заданы полно (и они полярные).
Для первой задачи более точным будет не "чистый прямоугольник", а прямоугольник с двумя полукругами по торцам Прелесть полярных координат в том, что их удобно "крутить" - т.е. простым/дешевым +- угла перевести любой вектор (проведенный из начала координат) к нулевому лучу. Формулу же "попадания в прямоугольник" надобно выводить... ------------------ WBR, Igor |
Re: Расстояние и азимут | |
---|---|
Mitchman Сообщений: 9978 Откуда: Николаев Дата регистрации: 24.05.2002 |
вроде вывел выше - редактируя да для более быстрого отсева можно использовать для 20км коридора предварительный отсев направлений по Азимут +-90град от Азимута направления(и можно убрать тогда саму проверку в условии) Abs(Азимут-АзимутНаправления)<=90 или BETWEEN(Азимут, АзимутНаправления-90, АзимутНаправления+90) для 10 км радиуса предварительный отсев Азимут +-Arcsin(10/РасстояниеНаправления) от АзимутаНаправления Abs(Азимут-АзимутНаправления)<=Arcsin(10/РасстояниеНаправления) или BETWEEN(Азимут, АзимутНаправления-Arcsin(10/РасстояниеНаправления), АзимутНаправления+Arcsin(10/РасстояниеНаправления)) (формула не имеет смысла при РасстояниеНаправления<10 - в этом случае азимуты могут быть всенаправленны, значит фильтровать нечего) это если надо ускорить выборку из записей базы ------------------ - «свидомые украинцы озабочены не столько созданием украинской культуры, сколько уничтожением русской» - Олесь Бузина Исправлено 6 раз(а). Последнее : Mitchman, 03.08.12 14:02 |
Re: Расстояние и азимут | |
---|---|
Dutch Автор Сообщений: 212 Откуда: Волгодонск Дата регистрации: 25.10.2010 |
Задал вот такие параметры:
Значение Result = .T., значит эта точка попадает в коридор - всё верно. А теперь увеличиваем значение параметра m.Расстояние. Result будет иметь значение .T. вплоть до m.Расстояние = 1500 - это не верно. Коридор получается черезчур растянутым в длинну. Он должен был оборваться гдето на 235-255 километрах. Только когда m.Расстояние > 1600 коридор заканчивается. Где ошибка? Исправлено 1 раз(а). Последнее : Dutch, 03.08.12 15:24 |
Re: Расстояние и азимут | |
---|---|
Рома Сообщений: 1079 Дата регистрации: 06.06.2001 |
Не вдаваясь в формулы - судя по qq3, азимуты у тебя в градусах, но тогда qq1 и qq2 непонятно что вычисляют. У sin/cos параметр в радианы надо перевести как минимум. |
Re: Расстояние и азимут | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Визуализация сего безобразия.
Просто любое "направление" простым +- "азимута" сводится к изображенному "нулевому" (тут рисуется "математическая" система полярных координат - в геодезии принято нулевой луч рисовать вверх, как "направление на север", да и сам угол в обратную сторону отсчитывается - по часовой стрелке - впрочем, это не имеет ровно никакого значения). Как видно, в "коридор" по любому входят круги у начальной и конечной точек (по определению "коридора", эти точки находятся на расстоянии до 20км от точки маршрута). Потому "вторую задачу" имеет смысл решать только в случае когда "радиус окрестности" будет БОЛЬШЕ чем "ширина коридора" в первой задаче, иначе эта область будет полностью входить в "коридор". ------------------ WBR, Igor |
Re: Расстояние и азимут | |
---|---|
Mitchman Сообщений: 9978 Откуда: Николаев Дата регистрации: 24.05.2002 |
PS просто нать было в хелпе глянуть что в Фоксе параметры задаются в тригонометрии в радианах, да тут еще одна загвоздка при разнице Азимутов нать учитывать переход с 0 на 360, т.е. если основной азимут меньш 90 то для азимутов больше 180ти применить вычитание 360 ти прежде чем подставить в формулу или как я выше выделить разницу азимутов(угол между ними) ну и для второй части в фоксе теже правила ------------------ - «свидомые украинцы озабочены не столько созданием украинской культуры, сколько уничтожением русской» - Олесь Бузина Исправлено 4 раз(а). Последнее : Mitchman, 03.08.12 17:22 |
Re: Расстояние и азимут | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Приведенная формула косячит при переходе через 0 и использовании диапазона углов от 0 до 2*pi()
Кроме того 90 в последнем сравнении надо заменить на pi()/2 раз уж в SIN/COS передаём радианы, а не градусы. Например, берём: РасстояниеНаправления = 200 АзимутНаправления = 0 Расстояние = 100 Азимут = 10*PI()/180 Получаем (как и положено) попадание в прямоугольник. Меняем: Азимут = -10*PI()/180 Опять же получаем попадание (что вполне логично, по причине симметрии). Меняем: Азимут = 350*PI()/180 Получаем НЕпопадание. Т.к. формула не учитывает "заворачивание" азимута. Тогда как это точно такой же угол что и -10. И ещё - данная формула (естественно) не учитывает "круги" у стартовой и финишной точек. Это IMHO неправильно в плане решения "общей" задачи - надо дополнительно проверить точку на попадание в эти 2 круга (для круга около стартовой точки, где азимут по сути неопределён, "попадание" определяется просто через "Расстояние <= 20") - вторая формула вроде как правильная, и от "заворачивания углов" не страдает вовсе, т.к. напрямую значения углов не пользует - только тригонометрическим функциям их скармливает, а они это всё понимают как надо. Только надо уточнить, что в ней 100 это требуемый_радиус_круга^2 а то вдруг кто не понял P.S. Пока писал, уже сам всё и поправил ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 03.08.12 17:53 |
Re: Расстояние и азимут | |
---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону Дата регистрации: 05.05.2005 |
Если координаты преобразовать в абсолютные, то коридор описывается функциями вида y = a*x, где а определяется азимутом движения, т.е. тангенс угла азимута.
Затем прогоняем все координаты по этой формуле и всё. Плюс-минус на коридор. ------------------ Совершенство - это не тогда, когда нельзя ничего прибавить, а тогда, когда нечего убавить. |
Re: Расстояние и азимут | |
---|---|
Mitchman Сообщений: 9978 Откуда: Николаев Дата регистрации: 24.05.2002 |
не верно в таком случае отрезок определяющий путь будет опрделяться как Y=a+bX где ab соотвествующие константы а коридор будет определяться как Y=a(+-)d+bX где +-d горизонтальный сдвиг изначального пути, и равен Sin(наклона отрезка)*на ширину коридора, кроме того надо отсеч начало и конец маршрута - отсюда вычисления в декартовых координатох выходят сложнее полярных ------------------ - «свидомые украинцы озабочены не столько созданием украинской культуры, сколько уничтожением русской» - Олесь Бузина Исправлено 2 раз(а). Последнее : Mitchman, 03.08.12 18:13 |
Re: Расстояние и азимут | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Я бы не сказал что они "выходят сложнее" - и там и там без тригонометрических функций никак. А уж пара их, или все 4 - особой роли не играет. При том, исходя из постановки задачи, конечно же "перевод" является лишним шагом (хотя и "лёгким" для направления полярные->декартовы - обратно несколько сложнее в системе без функции типа atan2). Ну разве что "рисовать" точки на плоскости надо - там без перевода не обойтись...
P.S. Чем-то похожую задачу решали, только там суть была в нахождении "соседей" - тож по "наклонённому прямоугольнику" - но т.к. координаты в базе были заданы декартовые (ну на самом деле не совсем "плоские", а WGS84 - т.е. "географические" - но для требуемых порядков расстояний и типичных положений можно было упростить шарик до плоскости), то первым шагом отсекали "ненаклонный" прямоугольник - т.к. точек много, область большая, а "потеницальных соседей" сравнительно мало - потому 2 прохода вполне оправданы - на первом "оптимизируемый" простой отбор x between x1 and x2 and y between y1 and y2 - а уж внутри по полной прогармме - с косинусами/синусами/квадратами/корнями Но тут, как я вижу, такой подход позволит в среднем отбросить около 3/4 "пространства точек" - раве что из общего 300км круга очень часто будут выбирать маршруты существенно короче 300км - тогда 2-х ступенчатый отбор мог бы помочь и имело бы смысл дополнительно хранить и декартовы координаты точек. Конечно если точек реально много - для пары сотен даже смысла нет тужиться, и полный перебор сойдёт ------------------ WBR, Igor |
Re: Расстояние и азимут | |
---|---|
Dutch Автор Сообщений: 212 Откуда: Волгодонск Дата регистрации: 25.10.2010 |
Точек на данный момент не более 100. Если проект будет одобрен начальством (что очень маловероятно, но учитывать хотелось бы), их количество может вырости до количества базовых станций компании "ТЕЛЕ2 россия" - несколько тысяч.
|
Re: Расстояние и азимут | |
---|---|
Mitchman Сообщений: 9978 Откуда: Николаев Дата регистрации: 24.05.2002 |
для этого предваоительный выбор описывал принцип выше
------------------ - «свидомые украинцы озабочены не столько созданием украинской культуры, сколько уничтожением русской» - Олесь Бузина |
Re: Расстояние и азимут | |
---|---|
Dutch Автор Сообщений: 212 Откуда: Волгодонск Дата регистрации: 25.10.2010 |
В этом примере, коридор заканчивается при параметре m.Расстояние > 40. А должен примерно при 235 - 255. |
Re: Расстояние и азимут | |
---|---|
Mitchman Сообщений: 9978 Откуда: Николаев Дата регистрации: 24.05.2002 |
проверям математически при Угле меж азимутами 30 градусов уход от оси основногонаправления есть 1/2 от длины расстояния, т.е. максимальное расстояние при котором не уйдем за 20 км от оси будет 40 км Sin(30)=1/2 - это любой школьник в начале тригонометрии знает потому то я и поставил 40 ------------------ - «свидомые украинцы озабочены не столько созданием украинской культуры, сколько уничтожением русской» - Олесь Бузина Исправлено 1 раз(а). Последнее : Mitchman, 05.08.12 12:56 |
© 2000-2024 Fox Club  |