
You can download searoute
from
https://github.com/eurostat/searoute
.
port = { {"Shanghai, China", 31.2304, 121.4737}, {"Guangzhou, China", 23.1291, 113.2644}, {"Rotterdam, Netherlands", 51.9225, 4.4792}, {"Antwerp, Belgium", 51.2194, 4.4025}, {"Valencia, Spain", 39.4699, -0.3763}, {"Los Angeles, USA", 33.7405, -118.2719}, {"New York/New Jersey, USA", 40.6687, -74.0451}, {"Savannah, USA", 32.0809, -81.0912}, {"Santos, Brazil", -23.9608, -46.3336}, {"Buenos Aires, Argentina", -34.6037, -58.3816}, {"Itajai, Brazil", -26.9101, -48.6703}, {"Tangier Med, Morocco", 35.8844, -5.5036}, {"Port Said, Egypt", 31.2653, 32.3019}, {"Durban, South Africa", -29.8587, 31.0218}, {"Melbourne, Australia", -37.8136, 144.9631}, {"Auckland, New Zealand", -36.8485, 174.7633}, {"Brisbane, Australia", -27.4698, 153.0251}, {"Singapore, Singapore", 1.3521, 103.8198}, {"Kaohsiung, Taiwan", 22.6273, 120.3014}, {"Busan, South Korea", 35.1796, 129.0756}, {"Hong Kong, China", 22.3193, 114.1694}, {"Tanjung Pelepas, Malaysia", 1.3673, 103.5386}, {"Jebel Ali, UAE", 25.015, 55.0633}, {"Colombo, Sri Lanka", 6.9271, 79.8612}, {"Felixstowe, UK", 51.9556, 1.3111}, {"Algeciras, Spain", 36.1408, -5.4562}, {"Vancouver, Canada", 49.2827, -123.1207}, {"Port Klang, Malaysia", 3.0089, 101.3678}, {"Laem Chabang, Thailand", 13.0846, 100.8956}, {"Tokyo, Japan", 35.6828, 139.7595}, {"Yokohama, Japan", 35.4437, 139.6380} }; Export["/Users/yourname/Desktop/searoute/text.csv", Insert[ Flatten@{#[[1,1]]<>" to "<>#[[2,1]], Round[#[[1,3]],0.1],Round[#[[1,2]],0.1], Round[#[[2,3]],0.1],Round[#[[2,2]],0.1]}&/@ Select[ Flatten[Table[{port[[i]],port[[j]]}, {i,Length@port},{j,Length@port}],1], #[[1]]!=#[[2]]& ], {"routename","olon","olat","dlon","dlat"},1] ]; RunProcess[{"java","-jar", "/Users/yourname/Desktop/searoute/searoute.jar", "/Users/yourname/Desktop/searoute/text.csv", "-res","5","-panama","1","-suez","1"}] route=Import["/Users/yourname/Desktop/searoute/out.geojson", "Data"][[2,2]]; mypath=Flatten@{#[[2,2]],StringSplit["routename"/.#[[3,2]]," to "], "distKM"/.#[[3,2]]}&/@route; myrule=Rule@@@Transpose@{Tally[mypath[[All,2]]][[All,1]], Range[Length@port]}; distMatrix=ParallelTable[If[i==j,Infinity, ToExpression@Select[mypath/.myrule, #[[2]]==i&&#[[3]]==j&][[1,-1]]], {i,Length@port},{j,Length@port}]; tour=FindShortestTour[Range[Length@port], DistanceFunction->(distMatrix[[#1,#2]]&)]; myline=ParallelTable[ If[i==j,{},Select[mypath/.myrule,#[[2]]==i&&#[[3]]==j&][[1,1]]], {i,Length@port},{j,Length@port}]; myline=myline[[#[[1]],#[[2]]]]&/@Partition[tour[[2]],2,1]; GeoGraphics[{ Red,PointSize[Large], Point[GeoPosition[port[[All,{2,3}]]]], Blue,Thick,myline}, GeoRange->"World", GeoCenter->GeoPosition[{20,-150}], GeoRange->Quantity[180,"AngularDegrees"] ]
讀者回應 ( 0 意見 )
訂閱發佈留言 (Atom)
發佈留言
Please leave your name and tell me what you thought about this site. Comments, suggestions and views are welcomed.
如果這篇文章對你有幫助,那請留個訊息給我~