antarctica / PolarRoute

Long-distance maritime polar route planning, taking into account complex changing environmental conditions.
https://antarctica.github.io/PolarRoute/
MIT License
17 stars 3 forks source link

Waypoint outside of mesh crashes PolarRoute even if it's not used #304

Closed hjabbot closed 1 month ago

hjabbot commented 1 month ago

If a waypoint is provided in the waypoints.csv that does not lie within the mesh boundary, it will stop PolarRoute from running. This even occurs if the waypoint isn't selected as a source or destination.

Ideally, PolarRoute would continue on and just not read in the waypoint. Perhaps it should error if the waypoint is outside the boundary and also is required as a source/destination, although it would still be nice to have PolarRoute run through any possible source/destination pairs regardless of the existence of an impossible waypoint.

gecoombs commented 1 month ago

Could you post the traceback with the error message and line number it occurs on @hjabbot ? This case should probably be handled by the _validate_wps method in route_planner.py but maybe the error happens before that method is run?

hjabbot commented 1 month ago

Here ya go

Traceback (most recent call last):
  File "/home/habbot/Documents/Work/BAS/repos/sdadt/venv_dev/bin/optimise_routes", line 8, in <module>
    sys.exit(optimise_routes_cli())
             ^^^^^^^^^^^^^^^^^^^^^
  File "/home/habbot/Documents/Work/BAS/repos/sdadt/PolarRoute/polar_route/utils.py", line 238, in wrapper
    res = func(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^
  File "/home/habbot/Documents/Work/BAS/repos/sdadt/PolarRoute/polar_route/cli.py", line 170, in optimise_routes_cli
    dijkstra_routes = rp.compute_routes(args.waypoints.name)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/habbot/Documents/Work/BAS/repos/sdadt/PolarRoute/polar_route/utils.py", line 238, in wrapper
    res = func(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^
  File "/home/habbot/Documents/Work/BAS/repos/sdadt/PolarRoute/polar_route/route_planner/route_planner.py", line 594, in compute_routes
    assert point.within(mesh_boundary), \
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Waypoint A outside of mesh boundary! POINT (-4 64)
gecoombs commented 1 month ago

Ok this seems like a simple enough fix, I can put something together today. Not sure if it's urgent enough to require a hotfix?

hjabbot commented 1 month ago

Probably not, may have been useful earlier for the pipelining but they've worked around it so no urgent need at the moment