How to convert latitude and longitude differences (in degrees) into distances (in meters) with C++

1 Answer

0 votes
#include <iostream>
#include <cmath>

/*
    Convert latitude/longitude differences (in degrees) into distances (in meters).

    Explanation:
    - The Earth is approximately spherical, so we can convert degrees → radians
      and multiply by Earth's radius to get arc lengths.
    - Latitude degrees always correspond to the same distance.
    - Longitude degrees shrink as you move toward the poles, so we multiply by cos(latitude).

    Formula:
        meters_lat = deg_lat * (π/180) * R
        meters_lon = deg_lon * (π/180) * R * cos(lat_in_radians)

    Where:
        R = 6378137 meters (WGS‑84 Earth radius)
*/

/* Convert degrees to radians */
double degToRad(double deg) {
    return deg * M_PI / 180.0;
}

/* Convert latitude difference (degrees) to meters */
double latDegToMeters(double latDeg) {
    constexpr double R = 6378137.0; // WGS‑84 Earth radius
    return degToRad(latDeg) * R;
}

/* Convert longitude difference (degrees) to meters, requires latitude */
double lonDegToMeters(double lonDeg, double latitudeDeg) {
    constexpr double R = 6378137.0;
    double latRad = degToRad(latitudeDeg);
    return degToRad(lonDeg) * R * std::cos(latRad);
}

int main() {
    // Example input: difference in degrees and reference latitude
    double latDeg = 0.01;      // 0.01° latitude difference
    double lonDeg = 0.01;      // 0.01° longitude difference
    double latitude = 32.0;    // Example latitude 

    double latMeters = latDegToMeters(latDeg);
    double lonMeters = lonDegToMeters(lonDeg, latitude);

    std::cout << "Latitude difference in meters: " << latMeters << "\n";
    std::cout << "Longitude difference in meters: " << lonMeters << "\n";
}



/*
run:

Latitude difference in meters: 1113.19
Longitude difference in meters: 944.043

*/

 



answered 2 days ago by avibootz
...