Search code examples
c#androidgps

Adding distance to a GPS coordinate


I'm trying to generate some points at random distances away from a fixed point using GPS.

How can I add distance in meters to a GPS coordinate? I've looked at UTM to GPS conversion but is there a simpler method to achieve this?

I'm working on Android platform just in case.

Cheers, fgs


Solution

    • P0(lat0,lon0) : initial position (unit : degrees)
    • dx,dy : random offsets from your initial position in meters

    You can use an approximation to compute the position of the randomized position:

     lat = lat0 + (180/pi)*(dy/6378137)
     lon = lon0 + (180/pi)*(dx/6378137)/cos(lat0)
    

    This is quite precise as long as the random distance offset is below 10-100 km

    Edit: of course in Java Math.cos() expects radians so do use Math.cos(Math.PI/180.0*lat0) if lat0 is in degrees as assumed above.