关于GPS空距的计算
枞阳县信鸽协会 管理员
----------------------------------------------------------------------------
关于GPS的空距算法,网上有很多帖子,但其中许多由于来回转载,公式有偏差,细心的网友通过公式的对照就可以发现。在下面的是在中国信鸽网摘录下来的正确公式,笔者把这个公式放到FOXPRO6.0中,经过少量的语法改动,就可以得出正确的空距。目前计算空距有以下几种:
1、通过软件计算,这种方法也是很多信鸽协会采用的,但要保证软件的版本在《中国信鸽协会关于统一GPS计算公式的通知》之后,否则计算仍然存在偏差。
2、通过网上提供的在线计算,比如重庆信鸽网还有信鸽分速计算器2007等,但由于小数位数的保留不同,计算同样存在误差,笔者经过核对,信鸽分速计算器2007提供的计算结果比较精确。
3、笔者自己通过EXCEL表的计算功能,把公式变化后代入到EXCEL中,这样只要提供经度和纬度就可以自动转化成空距,结果在小数点后三位都保持精确。
中国信鸽协会关于统一GPS计算公式的通知
附:GPS计算公式
*para u_x1,u_y1,u_x2,u_y2
priv u_dxy,u_x,u_y,u_mx1,u_mx2,u_my1,u_my2,tmpany
if u_x1=0 .and. u_y1=0
u_xy=0
return u_xy
endif
u_dxy=3.141592654 && 圆周率
tmpany=str((u_x1-int(u_x1))*10000,4)
u_mx1=int(u_x1)+(val(left(tmpany,2))/60)+(val(right(tmpany,2))/3600)
tmpany=str((u_y1-int(u_y1))*10000,4)
u_my1=int(u_y1)+(val(left(tmpany,2))/60)+(val(right(tmpany,2))/3600)
tmpany=str((u_x2-int(u_x2))*1000000,6)
u_mx2=int(u_x2)+(val(left(tmpany,2))/60)+(val(substr(tmpany,3,2))/3600)+(val(right(tmpany,2))/360000)
tmpany=str((u_y2-int(u_y2))*1000000,6)
u_my2=int(u_y2)+(val(left(tmpany,2))/60)+(val(substr(tmpany,3,2))/3600)+(val(right(tmpany,2))/360000)
u_x=(round((111.3200144*cos(dtor(u_my1))+111.3200144*cos(dtor(u_my2)))*(u_mx1-u_mx2)/2,7))**2
u_y=(round(110.9481458*(u_my1-u_my2),7))**2
*u_x=((12756.334*u_dxy/360*cos(dtor(u_my1))+12756.334*u_dxy/360*cos(dtor(u_my2)))*(u_mx1-u_mx2)/2)**2
*u_y=(12713.721*u_dxy/360*(u_my1-u_my2))**2
tmpany=round(sqrt(u_x+u_y)*1000,0)
u_xy=iif(tmpany>=9999999,9999999,tmpany)
*u_xy=u_xy/1000
replace sv with u_xy
@ 13, 35 say u_xy
return
枞阳县信鸽协会
|
|
|
|
|
|