Найти путь по морю от прибрежной точки A до прибрежной точки B

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

Путь должен:

  • быть правдоподобным, поскольку корабль не может пройти над сушей (очевидно)
  • Не подходить слишком близко к береговой линии. Корабли не могут заходить так далеко от берега
  • Не слишком сложно. Он будет нанесен на Google Maps, поэтому ломаная линия в 2000 точек не подходит.
  • Быть самым коротким, но не за счет перечисленных выше трех пунктов

Итак, моя первая идея заключалась в получении данных о береговых линиях по всему миру. Такая штука доступна здесь . К сожалению, он неполный. OpenStreetMap показывает эти данные, а береговые линии для таких вещей, как Карибские острова, отсутствуют.

Я также думал о геокодировании (недостаточно надежно, плюс я прожигал бы тысячи запросов, пытаясь построить маршрут)

Моя следующая идея заключалась в том, чтобы каким-то образом использовать Карты Google и проверить, является ли точка синий или нет. GMaps.NET , отличный компонент сопоставления .NET, позволил мне добиться этого путем создания растрового изображения того, что он отображает, и тестирования цвета пикселя.

Первая проблема заключается в том, что точность этого теста попадания равна только разрешающей способности изображения, которое я тестирую. Для портов, расположенных близко друг к другу, это нормально, для более удаленных портов страдает точность.

Вторая проблема , если предположить, что я использую какой-то метод «тестирования синих пикселей», заключается в том, какой алгоритм подходит для поиска маршрута. Алгоритм A * выглядит многообещающим, но я не уверен, как продвинуть путь «наружу» от существа к побережью. Ни как уменьшить сложность ломаной линии.

Итак ... любой ввод : идеи, мысли, ссылки, примеры кода и т. Д. Приветствуются. Спасибо.

(Должен добавить, что это сайт о путешествиях. Точность не слишком важна, я не управляю доставкой или чем-то еще)

17
задан geocodezip 23 June 2018 в 15:56
поделиться