To clarify for those asking. VPS is made up of two different parts. One is forward cameras and downward cameras and the second part is the ultrasonic sensors on the bottom.
The forward cameras dectect obstacles in front. The bottom cameras are used for visually looking at ground below and stabalizing Mavic by matching the pitcure and for taking pitures on takeoff so it can match them on RTH and precision land.
The ultrasonic sensors (one for emitting the sound wave/one for receiving) are used for detecting the ground or obstacles below the mavic and registering the distance between the two. This tells Mavic its height (accurately) above ground /object upto about 30feet(limit of ultrasonic sensor).
Now when flying over water (or snow or glassy surface) the bottom cameras have no effect (they only for pics and visual stability)
Its the ultrasonic sensors we are concerned about.
Over water the signal is absorbed or refelected at different angles by broken waves and the receiver does not get a return echo or gets a bounced echo or even a delayed echo. Result is that the Mavic may be at 15 feet but ultrasonic sensors, due to false echos from water surface, is telling Mavic, its at 3feet or less. So mavic thinks its going to hit the ground and starts rising.
You see Mavic rise so induce down and this induces autoland sequence. Splash down.
Now you can turn of VPS, but that will disable all functions including forward vision collision cameras, OR you just go into advanced settings and turn off
"landing protection" only. This disables only the ultrasonic sensors and thus eliminates the problem of Mavic getting a false height reading when over water.
Precision landing is still turned on as is forward collision protection. Also you can now hand catch without Mavic trying to climb away from you as ultrasonic is off so it wont detect hand as obstacle.
Sorry its a long spiel but it may help explain better for those wanting to know.