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

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

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

Сообщение Hatch »

Помогите, пожалуйста, с алгоритмом решения такой задачи:
Существует код, который рассчитывает кратчайшее расстояние между 2-мя точками. Есть таблица с координатами точек береговой линии. Необходимо, чтобы расстояния рассчитывалось только по воде, избегая сушу.
При этом путь по воде был кратчайшим
andreichernov
Активный участник
Сообщения: 110
Зарегистрирован: 16 дек 2007, 11:06
Репутация: 11
Откуда: Самара
Контактная информация:

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

Сообщение andreichernov »

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

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

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

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

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

Сообщение geologic »

Вообще-то суда редко ходят по кратчайшей прямой (ортодромии), формулы которой соблазнительно мелькают на всех сайтах, и еще реже - вдоль береговой линии. Так что ваши прикидки будут весьма далекими от практики. Ходят в общем случае по локсодромии (а это дуга на шарике), а в реальности - по проложенным единожды маршрутам - ну, как фуры по трассам. Вам стоит, возможно, поискать сетку судовых маршрутов на нужный регион, и работать по ней. Иначе насчитаете сказочный бюджет вашим корабелам ;)
andreichernov
Активный участник
Сообщения: 110
Зарегистрирован: 16 дек 2007, 11:06
Репутация: 11
Откуда: Самара
Контактная информация:

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

Сообщение andreichernov »

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

Не могли бы Вы, Hatch, уточнить задачу.
geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

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

Сообщение geologic »

Если о речных, тогда логично использовать линии фарватеров, чтобы тоже не с нуля. Однако, может быть перед Hatch стоит какая-то исследовательская задача, или вообще интересует упрощенный подход для студенческой работы: тогда скучные реалии может и ни к чему. Тогда поиграться, как вы предложили, было бы весьма интересно - особенно с буфером и от глубин. Каботажный вариант, тсказать, для некоего участка ;)
Hatch
Новоприбывший
Сообщения: 6
Зарегистрирован: 11 июн 2009, 16:08
Репутация: 0

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

Сообщение Hatch »

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

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

Андрей, первые 2 пункта понятны.
По регулярной сетке создал массив точек с атрибутом море/не море. Далее выбираю точку отправления и точку назначения (скажем, из Новороссийска в Мумбаи).
А вот как создать "веерный алгоритм поиска ломаной кратчайшего пути в коридоре" не ясно совершенно.
geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

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

Сообщение geologic »

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

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

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

Сообщение Hatch »

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

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

Проблема в том, что данную задачу требуется решить системно.
У меня в базе около 5 тысяч точек и проложить маршруты "руками" было бы титанической работой. Я уверен можно рассчитать это автоматически,
И Андрей Чернов описал "на пальцах" алгоритм решения.
……вот только догадаться как это сделать я не могу :?
andreichernov
Активный участник
Сообщения: 110
Зарегистрирован: 16 дек 2007, 11:06
Репутация: 11
Откуда: Самара
Контактная информация:

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

Сообщение andreichernov »

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

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

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

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