У меня есть кажущаяся сложная задача - попытаться выработать путь, по морю, от одного морского порта до другого морского порта. Конечная цель - нарисовать это на карте Google (или Bing) в виде полилинии.
Путь должен быть:
- Будьте правдоподобны, так как корабль не может пройти по земле (очевидно)
- Не запускать слишком близко к береговой линии. Корабли не могут зайти так близко к берегу.
- Не слишком сложный. Это будет заложено на Картах Google, поэтому полилиния 2000 точек не будет.
- Быть коротким, но не за счет вышеуказанных трех пунктов.
Итак, моя первая идея заключалась в получении данных о береговых линиях по всему миру. Такая вещь доступна здесь. К сожалению, это неполное. OpenStreetMap показывает, что эти данные и береговые линии для таких вещей, как Карибские острова, отсутствуют.
Я также подумал о Geocoding (недостаточно надежный плюс, я бы сжег тысячи запросов, пытающихся построить маршрут)
Моя следующая идея заключалась в том, чтобы каким-то образом использовать Карты Google и проверить, является ли точка синей или нет. GMaps.NET, отличный компонент .NET Mapping, позволил мне достичь этого, создав растровое изображение того, что он отображает и тестирует цвет пикселя.
Первая проблема заключается в том, что точность этого тестирования ударов не хуже, чем разрешение изображения изображения, на которое я тестирую. Для портов, расположенных близко друг к другу, это отлично подходит для портов дальше, точность страдает.
Вторая проблема, предполагая, что я использую какой-то метод "синего пиксельного тестирования", является алгоритмом, подходящим для поиска маршрута. Алгоритм A * выглядит многообещающе, но я не уверен, как продвинуть путь "от" до ближайшего к побережью. И как уменьшить сложность полилинии.
Итак... любой ввод: идеи, мысли, ссылки, образец кода и т.д. приветствуются. Спасибо.
(Я должен добавить, что это для сайта путешествия. Точность не слишком важна, я не направляю доставку или что-то еще)