经纬度求距离

本文介绍了如何使用C语言中的哈弗赛恩公式计算两点之间的经纬度距离,给出了具体的代码示例,并提到在线的经纬度距离计算工具。着重于在不同纬度和经度下的距离变化规律。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、说明

同一经度:纬度差x111km

1、在纬度相等的情况下:

赤道上:经度差*111KM;

其他维度:COS纬度数*经度差*111km

经度每隔0.00001度,距离相差约1米:

每隔0.0001度,距离相差约10米;

每隔0.001度,距离相差约100米;

每隔0.01度,距离相差约1000米;

每隔0.1度,距离相差约10000米。

2、在经度相等的情况下:

纬度每隔0.00001度,距离相差约1.1米:

每隔0.0001度,距离相差约11米

每隔0.001度,距离相差约111米;

每隔0.01度,距离相差约1113米

每隔0.1度,距离相差约11132米

二、C代码实现

const float EARTH_RADIUS_M = 6371008.7714; // 地球半径,单位:米 
// 计算两点之间的距离(单位:米)  
float getDistanceByLonLat(double lat1, double lon1, double lat2, double lon2) {
       
    float dLat = (lat2-lat1) * (M_PI / 180.0);
    float dLon = (lon2-lon1) * (M_PI / 180.0);
    float lat1Rad = lat1 * (M_PI / 180.0);  
    float lat2Rad = lat2 * (M_PI / 180.0);  


    // 使用哈弗赛恩公式计算两点之间的距离  
    float a = pow(sin(dLat / 2),2) + cos(lat1Rad) * cos(lat2Rad) * pow(sin(dLon / 2),2);
    float c = 2 * atan2(sqrt(a), sqrt(1 - a));  
    float distance = EARTH_RADIUS_M * c;  
    return distance;  
} 

int main()
{
    double lat1 = 39.855651; // 北京的纬度  
    double lon1 = 115.462863; // 北京的经度  
    double lat2 = 39.855650; // 上海的纬度  
    double lon2 = 115.462860; // 上海的经度  

    double distance = getDistanceByLonLat(lat1, lon1, lat2, lon2);  
    std::cout << "The distance between the two points is: " << distance << " M" << std::endl;  
    return 0;  
    
}

三、在线计算工具

在线经纬度距离计算 (lddgo.net)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值