Помогите плиз! Расчет расстояния по воде
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 11 июн 2009, 16:08
- Репутация: 0
Помогите плиз! Расчет расстояния по воде
Помогите, пожалуйста, с алгоритмом решения такой задачи:
Существует код, который рассчитывает кратчайшее расстояние между 2-мя точками. Есть таблица с координатами точек береговой линии. Необходимо, чтобы расстояния рассчитывалось только по воде, избегая сушу.
При этом путь по воде был кратчайшим
Существует код, который рассчитывает кратчайшее расстояние между 2-мя точками. Есть таблица с координатами точек береговой линии. Необходимо, чтобы расстояния рассчитывалось только по воде, избегая сушу.
При этом путь по воде был кратчайшим
-
- Активный участник
- Сообщения: 110
- Зарегистрирован: 16 дек 2007, 11:06
- Репутация: 11
- Откуда: Самара
- Контактная информация:
Re: Помогите плиз! Расчет расстояния по воде
алгоритм известен.
1) растеризуете воду- получаете маску воды (1-вода, 0- нет) или только воду ниже определенной глубины
2) фиксируете 2 точки на краю этого коридора
2) запускаете веерный алгоритм поиска ломаной кратчайшего пути в коридоре. На пальцах суть - как будто Вы ниточку положили в этот коридор а потом потянули за концы пока не натянется - результат будет полилини минимальной длины.
Можно тот же алгоритм запускать, не растеризуя воду (не делая п.1).
реализован ли такой алгоритм где-то в стандартных ГИС - не знаю. У меня студенты делали в Ингео.
С уважением, Чернов Андрей
1) растеризуете воду- получаете маску воды (1-вода, 0- нет) или только воду ниже определенной глубины
2) фиксируете 2 точки на краю этого коридора
2) запускаете веерный алгоритм поиска ломаной кратчайшего пути в коридоре. На пальцах суть - как будто Вы ниточку положили в этот коридор а потом потянули за концы пока не натянется - результат будет полилини минимальной длины.
Можно тот же алгоритм запускать, не растеризуя воду (не делая п.1).
реализован ли такой алгоритм где-то в стандартных ГИС - не знаю. У меня студенты делали в Ингео.
С уважением, Чернов Андрей
-
- Гуру
- Сообщения: 852
- Зарегистрирован: 15 сен 2005, 13:19
- Репутация: 6
- Откуда: москва
- Контактная информация:
Re: Помогите плиз! Расчет расстояния по воде
Вообще-то суда редко ходят по кратчайшей прямой (ортодромии), формулы которой соблазнительно мелькают на всех сайтах, и еще реже - вдоль береговой линии. Так что ваши прикидки будут весьма далекими от практики. Ходят в общем случае по локсодромии (а это дуга на шарике), а в реальности - по проложенным единожды маршрутам - ну, как фуры по трассам. Вам стоит, возможно, поискать сетку судовых маршрутов на нужный регион, и работать по ней. Иначе насчитаете сказочный бюджет вашим корабелам 

-
- Активный участник
- Сообщения: 110
- Зарегистрирован: 16 дек 2007, 11:06
- Репутация: 11
- Откуда: Самара
- Контактная информация:
Re: Помогите плиз! Расчет расстояния по воде
Да, это верно. Я думал, речь идет о речных перевозках.
Не могли бы Вы, Hatch, уточнить задачу.
Не могли бы Вы, Hatch, уточнить задачу.
-
- Гуру
- Сообщения: 852
- Зарегистрирован: 15 сен 2005, 13:19
- Репутация: 6
- Откуда: москва
- Контактная информация:
Re: Помогите плиз! Расчет расстояния по воде
Если о речных, тогда логично использовать линии фарватеров, чтобы тоже не с нуля. Однако, может быть перед Hatch стоит какая-то исследовательская задача, или вообще интересует упрощенный подход для студенческой работы: тогда скучные реалии может и ни к чему. Тогда поиграться, как вы предложили, было бы весьма интересно - особенно с буфером и от глубин. Каботажный вариант, тсказать, для некоего участка 

-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 11 июн 2009, 16:08
- Репутация: 0
Re: Помогите плиз! Расчет расстояния по воде
Большое спасибо!
Конечно, я понимаю, что это далековато от реальности.
Но в рамках данной задачи требуется рассчитать расстояния по морю именно по кратчайшей прямой. Такая точность сейчас устраивает.
Андрей, первые 2 пункта понятны.
По регулярной сетке создал массив точек с атрибутом море/не море. Далее выбираю точку отправления и точку назначения (скажем, из Новороссийска в Мумбаи).
А вот как создать "веерный алгоритм поиска ломаной кратчайшего пути в коридоре" не ясно совершенно.
Конечно, я понимаю, что это далековато от реальности.

Но в рамках данной задачи требуется рассчитать расстояния по морю именно по кратчайшей прямой. Такая точность сейчас устраивает.
Андрей, первые 2 пункта понятны.
По регулярной сетке создал массив точек с атрибутом море/не море. Далее выбираю точку отправления и точку назначения (скажем, из Новороссийска в Мумбаи).
А вот как создать "веерный алгоритм поиска ломаной кратчайшего пути в коридоре" не ясно совершенно.
-
- Гуру
- Сообщения: 852
- Зарегистрирован: 15 сен 2005, 13:19
- Репутация: 6
- Откуда: москва
- Контактная информация:
Хм, так у вас на карте мира все это???
Тогда все же учтите, что "кратчайшая прямая" - дуга большого круга, она же ортодромия - не выглядит прямой на большинстве карт, только на глобусе. Прямой на большинстве карт мира - цилиндрических - выглядит локсодромия (линия с одинаковым азимутом, по сути часть спиральной дуги), и если с этим не разобраться, в расчетах будут заметные расхождения.
Как "разобраться" ГИС-средствами я не уверен, что знаю: наверное, нужна равнопромежуточная проекция - а они конические, т.е. на четверть мира, не более. В общем, маршруты проложить вы сможете, посчитать их длину - отдельная навгео задачка.
Как "разобраться" ГИС-средствами я не уверен, что знаю: наверное, нужна равнопромежуточная проекция - а они конические, т.е. на четверть мира, не более. В общем, маршруты проложить вы сможете, посчитать их длину - отдельная навгео задачка.
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 11 июн 2009, 16:08
- Репутация: 0
Re: Помогите плиз! Расчет расстояния по воде
Карты как таковой сейчас нет. Есть только база данных портов с географическими координатамии и регулярная сетка точек также с координатами и атрибутом море/не море.
Насколько я помню из лекций по мат. картографии ортодромия выглядит прямой только в гномонической проекции.
Проблема в том, что данную задачу требуется решить системно.
У меня в базе около 5 тысяч точек и проложить маршруты "руками" было бы титанической работой. Я уверен можно рассчитать это автоматически,
И Андрей Чернов описал "на пальцах" алгоритм решения.
……вот только догадаться как это сделать я не могу
Насколько я помню из лекций по мат. картографии ортодромия выглядит прямой только в гномонической проекции.
Проблема в том, что данную задачу требуется решить системно.
У меня в базе около 5 тысяч точек и проложить маршруты "руками" было бы титанической работой. Я уверен можно рассчитать это автоматически,
И Андрей Чернов описал "на пальцах" алгоритм решения.
……вот только догадаться как это сделать я не могу

-
- Активный участник
- Сообщения: 110
- Зарегистрирован: 16 дек 2007, 11:06
- Репутация: 11
- Откуда: Самара
- Контактная информация:
Re: Помогите плиз! Расчет расстояния по воде
Hatch, прошу прощения, но подробную реализацию алгоритма я не смогу описать в рамках комментариев.
Более того, я не знаю, реализован ли он в какой-либо ГИС в стандартном комплекте.
Может быть Вам действительно провести руками карту морских путей - создать граф, соединяющий Ваши 5000 портов ?
разумеется, не "каждый с каждым", а присоединив их гроздьями к узлам морских путей...
думаю, пару недель работы...
Более того, я не знаю, реализован ли он в какой-либо ГИС в стандартном комплекте.
Может быть Вам действительно провести руками карту морских путей - создать граф, соединяющий Ваши 5000 портов ?
разумеется, не "каждый с каждым", а присоединив их гроздьями к узлам морских путей...
думаю, пару недель работы...
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость