I am wondering if there is a c# library out there for geospatial routing between two points? I am aware that there are plenty of APIs (e.g. Google, Bing…etc.) that provide routing functionality, but I have two problems using these. Firstly, there is a limit on the number of API calls one can make each day (I need to make hundreds of thousands of calls per day), but most importantly these routing tools are land-based. I am trying to write an application that will get the user from any point on the ocean, to another point on the ocean.

I was thinking of using an A* algorithm to solve the problem, but the issue I face here is that there are no nodes / paths on the oceans – so this approach will not work. Secondly, I need a function that will find the best path from any point on the ocean to any other point, so there is no “node” to start from, as it were.

Of course, finding a path from one lat / lon to another is quite simple, but there are pesky bits of land that get in the way and I need to navigate around them.

Ideally, I would find a complete code library that has everything I need. However, if such a library doesn’t contain geospatial definitions for land masses – then I can get these quite easily.

I guess the ideal for me would be a library that exists that contains a function:

FindRoute(startingPoint, EndPoint, LandMassPolygons[])

which returns a series of waypoints for the best route.

Assuming such a thing doesn’t exist, can anyone point me in a good place to start so I can start writing my own such functions (bearing in mind that I cannot use any node/path-based / A* algorithm or derivative)?

Thanks, hive mind!

  • You will need coastline data, and probably sea lane data - harbours and straits often have rules for shipping. I'm not aware of any software that can then route using those constraints but you could write your own or hire someone. If you could find the navigation data then I could be interested (I think A*, Djikstra, CH, etc graph algorithms are a red herring)
    – winwaed
    Jul 14, 2019 at 16:05


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.