我有一條看似棘手的挑戰,試圖從一個海港到另一個海港,制定出一條海路。最終目標是將其繪製在Google(或Bing)地圖上作爲折線。從肋骨點A到肋緣點B查找路徑
的路徑需要:
- 是合理的,如船不能在陸地上(顯然)去
- 不能運行太靠近海岸線。船隻不能走近岸邊
- 不要太複雜。它將被繪製在谷歌地圖上,所以2000點多段線不會這樣做。
- 是最短的,而不是在以上三點
所以,我第一個想法是上獲得世界各地的海岸線數據的費用。這樣的東西可用here。不幸的是,它不完整。 OpenStreetMap顯示這些數據,加勒比羣島等海岸線缺失。
我也想過地理編碼(沒有足夠的可靠再加上我將通過數千燒試圖繪製路線的請求)
我的下一個想法就是以某種方式使用谷歌地圖和測試點是否藍色或不。一個很好的.NET Mapping組件,允許我通過創建一個它渲染和測試像素顏色的位圖來實現這一點。
第一個問題是這個命中測試的準確性只與我測試的圖像的分辨率圖像一樣好。對於彼此靠得很近的港口來說,這對於更遠的港口來說很好,準確度會受到影響。
第二個問題,假設我使用某種'藍色像素測試'的方法,是什麼算法適合尋找路線。 A* algorithm看起來很有希望,但我不知道如何推動從出口到海岸附近的路徑。也不知道如何降低折線的複雜性。
所以... 任何輸入:想法,想法,鏈接,示例代碼等將受到歡迎。謝謝。
(我要補充一點,這是一個旅遊網站,準確度不是太重要,我不是導演運輸或任何東西)
還有http://www.openseamap.org,如果你不知道它... –
如果你使用最短路徑算法,如A *或Dijkstra的最短路徑,你可以推動船隻通過使節點之間的鏈接比現實生活中的鏈接更長,以便在靠近海岸的節點之間建立鏈接。這將對應於考慮路線風險的船長作爲一個因素,以及消耗的燃料和時間。請注意,如果將此模型設置爲圖路徑查找問題,路線可能會受圖的結構影響 - 請參閱曼哈頓距離。 – mcdowella
感謝openseamap.org鏈接,但不幸的是,它基於OpenStreeMap使用的相同的不完整海岸線數據。 – NickH