Ho la sfida apparentemente difficile di cercare di elaborare un percorso, via mare, da un porto marittimo a un altro porto marittimo. L'obiettivo finale è di tracciare questo su una mappa di Google (o Bing) come una polilinea.Trova percorso via mare dal punto costiero A al punto costiero B
Il percorso ha la necessità di:
- essere plausibile, come una nave non può andare sulla terra (ovviamente)
- Non correre troppo vicino alla linea di costa. Le navi non possono arrivare così vicino alla riva
- Non essere troppo complesso. Sarà tracciato su Google Maps, quindi una polilinea a 2000 punti non funzionerà.
- essere la più breve, ma non a scapito dei suddetti tre punti
Quindi, la mia prima idea era ottenere dati sulle linee di costa di tutto il mondo. Una cosa del genere è disponibile here. Purtroppo è incompleto comunque. OpenStreetMap mostra questi dati e le coste per cose come isole caraibiche sono mancanti.
Ho anche pensato di Geocoding (non abbastanza affidabile, più vorrei bruciare migliaia di richieste che cercano di tracciare un percorso)
mio prossima idea era quella di utilizzare in qualche modo Google Maps e verificare se un punto è blu o non. GMaps.NET, un ottimo componente .NET Mapping, mi ha permesso di ottenere ciò creando una bitmap di ciò che rende e verifica il colore di un pixel.
Primo problema è che l'accuratezza di questo test di successo è valida solo come l'immagine di risoluzione dell'immagine a cui si prova. Per le porte vicine l'una all'altra, questo va bene per le porte più lontane, la precisione soffre.
Secondo problema, supponendo che io utilizzi una sorta di metodo di "test dei pixel blu", è l'algoritmo giusto per trovare una rotta. Il A* algorithm sembra promettente, ma non sono sicuro di come spingere il percorso "fuori" dall'essere verso la costa. Né come ridurre la complessità della polilinea.
Quindi ... qualsiasi input: idee, pensieri, collegamenti, codice di esempio, ecc. Sarebbe il benvenuto. Grazie.
(devo aggiungere che questo è per un sito di viaggi. La precisione non è troppo importante, non sto dirigendo spedizione o nulla)
C'è anche http://www.openseamap.org, nel caso non lo sapessi ... –
Se usi un algoritmo di percorso più breve, come A * o il percorso più breve di Dijkstra, puoi spingere le navi fuori dalla riva, rendendo i collegamenti tra i nodi più lunghi di quanto non siano nella vita reale per i collegamenti tra i nodi che si trovano vicino alla costa. Ciò corrisponderebbe al capitano che prende in considerazione il rischio del percorso come fattore, insieme al carburante consumato e al tempo impiegato. Si noti che se si modella questo come un problema di individuazione del percorso del grafico, la rotta può essere influenzata dalla struttura del grafico - vedere la distanza di Manhattan. – mcdowella
Grazie per il link openseamap.org, ma sfortunatamente si basa sugli stessi dati di costa incompleti utilizzati da OpenStreeMap. – NickH