yanniwang

利用GPS实现空间两点测距功能

0
阅读(4317)

 

测距仪广泛用于电力、水利、建筑、地质航海,铁路等方面。目前市场上90%的产品都采用激光测距原理,激光测距精度较高,但是也有其局限性,大多适用于几十米到几百米的距离。利用GPS提供的经纬度信息可以计算出空间距离,虽然测量精度较低,但对于公里以上级的距离来说,其测量带来的误差是完全可以忽略的,可见,GPS测距仪在远距离测量市场具有广阔的前景。
 
GPS测距原理
 
假设地球是一个标准球体,半径为R,并设东经为正,西经为负,北纬为正,南纬为负,地球上A、B两点经纬度分别为(a,b)和(x,y)。

 

可以计算AB对于球心所张的角α的余弦大小为
cosα=cosb*cosy*cos(a-x)+sinb*siny
因此AB两点的球面距离为
R*{arccos[cosb*cosy*cos(a-x)+sinb*siny]}
 
						GPS接收机给出的经纬度都是度分形式,
如纬度:4544.1122表示纬度为45度44.1122分,转换为度为单位应将44.1122除以60后加到45度上,
下面程序段中包含了度分转换及计算距离的c代码。
						 

ARC = 3.1415926/180.0;

 

    intlat1 = floor(lat1/100.0);

    intlat2 = floor(lat2/100.0);

    intlon1 = floor(lon1/100.0);

    intlon2 = floor(lon2/100.0);

 

    x1=(lat1/100.0-intlat1)*10.0/6.0 + (double)intlat1 ;

    y1=(lon1/100.0-intlon1)*10.0/6.0 + (double)intlon1 ;

    x2=(lat2/100.0-intlat2)*10.0/6.0 + (double)intlat2 ;

    y2=(lon2/100.0-intlon2)*10.0/6.0 + (double)intlon2 ;

 

    c1 = sin(x1*ARC)*sin(x2*ARC);

    c2 = cos(x1*ARC)*cos(x2*ARC)*cos((y1-y2)*ARC);

    c3 = c1+c2;

 

Distance = 6371.004*acos(c3);