How to go straight indoor without GPS

I want to create a boat to go along a river in auto mode. But when go across wide bridges ,GPS goes bad , the boat can not go straight ,and will crash to the river bank. So ,how can I make the boat go straignt when under a bridge? I supposed 3 method:

  1. disable gps when under bridge, and only use compass.maybe guided_nogps mode?
    2.using optical flow face up ,to make sure boat gose straight.maybe i need to add some in the ArduRover code.
    3.using camera face to front ,asist to go ahead.Need graph tech.

which one is better? or exist other way? thanks.