计算某经纬度1公里内的对象

从具体的某站到其他基站的距离,可以简单的遍历一次 得到其他站点和目标站点的距离.再做判断就可以了,已知2点坐标,获得他们的距离的方法:

2点分别为P1(Lat1, Lng1) , P2(Lat2, Lng2)


公式的单位都是弧度。

  
/** 【简注】  根据已知两点经纬度求距离.   经纬度输入以度为单位
*                     使用此函数,需要包含头文件
*     #include <math.h>
*    
* 【参数】 double lat1 第一个点的纬度
* 【参数】 double lng1 第一个点的经度
* 【参数】 double   lat2 第二个点的纬度
* 【参数】 double lng2 第二个点的经度
* 【返回】 double dm     两点间的距离,单位为千米。
*/ 
double CJwd2Doc::GetDistance(double lat1, double lng1,   double lat2, double lng2)
{  
double radlat1 = lat1*3.1415926/180.0;
double radlat2 =   lat2*3.1415926/180.0;
double radlng1 =   lng1*3.1415926/180.0;
double radlng2 = lng2*3.1415926/180.0;  

double ff = (radlat1+radlat2)/2.0;
double gg =   (radlat1-radlat2)/2.0;
double ll = (radlng1-radlng2)/2.0;  
double ss =   pow((sin(gg)),2)*pow((cos(ll)),2)+pow((cos(ff)),2)*pow((sin(ll)),2);
double   cc =   pow((cos(gg)),2)*pow((cos(ll)),2)+pow((sin(ff)),2)*pow((sin(ll)),2);
double   ww = atan(sqrt(ss/cc));  
double banjin = 6378.135;  //地球半径km
double dist =   2*ww*banjin;
double rr = sqrt(ss*cc)/ww;
double h1 =   (3*rr-1)/(2*cc);
double h2 = (3*rr+1)/(2*ss);
double xx =   1/298.257223543; //修正率
double dm;  
if(ww!=0)
dm =   dist*(1+xx*h1*pow((sin(ff)),2)*pow((cos(gg)),2)-xx*h2*pow((cos(ff)),2)*pow((sin(gg)),2));
else
dm   = 0;  
return dm;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值