Помогите плиз! Расчет расстояния по воде

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
Hatch
Новоприбывший
Сообщения: 6
Зарегистрирован: 11 июн 2009, 16:08
Репутация: 0

Помогите плиз! Расчет расстояния по воде

Сообщение Hatch » 11 июн 2009, 16:28

Помогите, пожалуйста, с алгоритмом решения такой задачи:
Существует код, который рассчитывает кратчайшее расстояние между 2-мя точками. Есть таблица с координатами точек береговой линии. Необходимо, чтобы расстояния рассчитывалось только по воде, избегая сушу.
При этом путь по воде был кратчайшим

andreichernov
Активный участник
Сообщения: 110
Зарегистрирован: 16 дек 2007, 11:06
Репутация: 11
Откуда: Самара
Контактная информация:

Re: Помогите плиз! Расчет расстояния по воде

Сообщение andreichernov » 19 июн 2009, 09:42

алгоритм известен.
1) растеризуете воду- получаете маску воды (1-вода, 0- нет) или только воду ниже определенной глубины
2) фиксируете 2 точки на краю этого коридора
2) запускаете веерный алгоритм поиска ломаной кратчайшего пути в коридоре. На пальцах суть - как будто Вы ниточку положили в этот коридор а потом потянули за концы пока не натянется - результат будет полилини минимальной длины.

Можно тот же алгоритм запускать, не растеризуя воду (не делая п.1).

реализован ли такой алгоритм где-то в стандартных ГИС - не знаю. У меня студенты делали в Ингео.

С уважением, Чернов Андрей

geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

Re: Помогите плиз! Расчет расстояния по воде

Сообщение geologic » 19 июн 2009, 10:44

Вообще-то суда редко ходят по кратчайшей прямой (ортодромии), формулы которой соблазнительно мелькают на всех сайтах, и еще реже - вдоль береговой линии. Так что ваши прикидки будут весьма далекими от практики. Ходят в общем случае по локсодромии (а это дуга на шарике), а в реальности - по проложенным единожды маршрутам - ну, как фуры по трассам. Вам стоит, возможно, поискать сетку судовых маршрутов на нужный регион, и работать по ней. Иначе насчитаете сказочный бюджет вашим корабелам ;)

andreichernov
Активный участник
Сообщения: 110
Зарегистрирован: 16 дек 2007, 11:06
Репутация: 11
Откуда: Самара
Контактная информация:

Re: Помогите плиз! Расчет расстояния по воде

Сообщение andreichernov » 19 июн 2009, 19:48

Да, это верно. Я думал, речь идет о речных перевозках.

Не могли бы Вы, Hatch, уточнить задачу.

geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

Re: Помогите плиз! Расчет расстояния по воде

Сообщение geologic » 22 июн 2009, 10:10

Если о речных, тогда логично использовать линии фарватеров, чтобы тоже не с нуля. Однако, может быть перед Hatch стоит какая-то исследовательская задача, или вообще интересует упрощенный подход для студенческой работы: тогда скучные реалии может и ни к чему. Тогда поиграться, как вы предложили, было бы весьма интересно - особенно с буфером и от глубин. Каботажный вариант, тсказать, для некоего участка ;)

Hatch
Новоприбывший
Сообщения: 6
Зарегистрирован: 11 июн 2009, 16:08
Репутация: 0

Re: Помогите плиз! Расчет расстояния по воде

Сообщение Hatch » 22 июн 2009, 11:00

Большое спасибо!

Конечно, я понимаю, что это далековато от реальности. :)
Но в рамках данной задачи требуется рассчитать расстояния по морю именно по кратчайшей прямой. Такая точность сейчас устраивает.

Андрей, первые 2 пункта понятны.
По регулярной сетке создал массив точек с атрибутом море/не море. Далее выбираю точку отправления и точку назначения (скажем, из Новороссийска в Мумбаи).
А вот как создать "веерный алгоритм поиска ломаной кратчайшего пути в коридоре" не ясно совершенно.

geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

Хм, так у вас на карте мира все это???

Сообщение geologic » 22 июн 2009, 11:30

Тогда все же учтите, что "кратчайшая прямая" - дуга большого круга, она же ортодромия - не выглядит прямой на большинстве карт, только на глобусе. Прямой на большинстве карт мира - цилиндрических - выглядит локсодромия (линия с одинаковым азимутом, по сути часть спиральной дуги), и если с этим не разобраться, в расчетах будут заметные расхождения.

Как "разобраться" ГИС-средствами я не уверен, что знаю: наверное, нужна равнопромежуточная проекция - а они конические, т.е. на четверть мира, не более. В общем, маршруты проложить вы сможете, посчитать их длину - отдельная навгео задачка.

Hatch
Новоприбывший
Сообщения: 6
Зарегистрирован: 11 июн 2009, 16:08
Репутация: 0

Re: Помогите плиз! Расчет расстояния по воде

Сообщение Hatch » 22 июн 2009, 12:51

Карты как таковой сейчас нет. Есть только база данных портов с географическими координатамии и регулярная сетка точек также с координатами и атрибутом море/не море.

Насколько я помню из лекций по мат. картографии ортодромия выглядит прямой только в гномонической проекции.

Проблема в том, что данную задачу требуется решить системно.
У меня в базе около 5 тысяч точек и проложить маршруты "руками" было бы титанической работой. Я уверен можно рассчитать это автоматически,
И Андрей Чернов описал "на пальцах" алгоритм решения.
……вот только догадаться как это сделать я не могу :?

andreichernov
Активный участник
Сообщения: 110
Зарегистрирован: 16 дек 2007, 11:06
Репутация: 11
Откуда: Самара
Контактная информация:

Re: Помогите плиз! Расчет расстояния по воде

Сообщение andreichernov » 22 июн 2009, 15:52

Hatch, прошу прощения, но подробную реализацию алгоритма я не смогу описать в рамках комментариев.
Более того, я не знаю, реализован ли он в какой-либо ГИС в стандартном комплекте.
Может быть Вам действительно провести руками карту морских путей - создать граф, соединяющий Ваши 5000 портов ?
разумеется, не "каждый с каждым", а присоединив их гроздьями к узлам морских путей...
думаю, пару недель работы...

Ответить

Вернуться в «Общий - ПО»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя