Search code examples
algorithmgeolocation

Calculating new longitude, latitude from old + n meters


I want to create 2 new longitude and 2 new latitudes based on a coordinate and a distance in meters, I want to create a nice bounding box around a certain point. It is for a part of a city and max ±1500 meters. I therefore don't think the curvature of earth has to be taken into account.

So I have 50.0452345 (x) and 4.3242234 (y) and I want to know x + 500 meters, x - 500 meters, y - 500 meters, y + 500 meters

I found many algorithms but almost all seem to deal with the distance between points.


Solution

  • The number of kilometers per degree of longitude is approximately

    (pi/180) * r_earth * cos(theta*pi/180)
    

    where theta is the latitude in degrees and r_earth is approximately 6378 km.

    The number of kilometers per degree of latitude is approximately the same at all locations, approx

    (pi/180) * r_earth = 111 km / degree 
    

    So you can do:

    new_latitude  = latitude  + (dy / r_earth) * (180 / pi);
    new_longitude = longitude + (dx / r_earth) * (180 / pi) / cos(latitude * pi/180);
    

    As long as dx and dy are small compared to the radius of the earth and you don't get too close to the poles.