测GPS定位距离

目前手头的一个项目要用到GPS地理定位信息,很自然的就需要知道两个地点之间的距离,于是上网找了一下,同样自然的就有一些算法贴出来。。(网络真是帮了大忙,省得我再去翻几何书自己研究算法了!公式早都忘光了。)

算法如下:(我已经把它转换为C++代码)

namespace gps
{
#include <math.h>

 // 计算弧度
 double rad(double d)
 {
  const double PI = 3.1415926535898;
  return d * PI / 180.0;
 }

 // 从两个gps坐标点(经纬度)获得两点的直线距离,单位是米
 int CalcDistance(float fLati1, float fLong1, float fLati2, float fLong2)
 {
  const float EARTH_RADIUS = 6378.137;

  double radLat1 = rad(fLati1);
  double radLat2 = rad(fLati2);
  double a = radLat1 - radLat2;
  double b = rad(fLong1) - rad(fLong2);
  double s = 2 * asin(sqrt(pow(sin(a/2),2) + cos(radLat1)*cos(radLat2)*pow(sin(b/2),2)));
  s = s * EARTH_RADIUS;
  s = (int)(s * 10000000) / 10000;
  return s;
 }
}


设两点A、B的经、纬度分别为(jA,wA)(jB,wB),则半径为R的球面上两点间的最短距离(大圆弧)为:
弧AB=R*arccos[sin(wA)sin(wB)+cos(wA)cos(wB)*cos(jA-jB)]
图见附件。


地球赤道上环绕地球一周走一圈共40075.04千米,而@一圈分成360°,而每1°(度)有60,每一度一秒在赤道上的长度计较如下:
  40075.04km/360°=111.31955km
  111.31955km/60=1.8553258km=1855.3m
  而每一分又有60秒,每一秒就代表     1855.3m/60=30.92m
  肆意两点间隔计较公式为
  d=111.12cos{1/[sinΦAsinΦB十cosΦAcosΦBcos(λB—λA)]}
  此中A点经度,纬度分别为λA和ΦA,B点的经度、纬度分别为λB和ΦB,d为间隔。
  其次,从北顶点到南顶点,可以画出许多南边和北边标的目的的与地球赤道铅直的大圆圈,这叫作“经圈”;组成这些圆圈的线段,就叫经度。公元1884平面坐标图年,国际上划定以经由过程英国伦敦附近的郊区的格林尼治天体台的经度作为计较经度的起航点,即经度零度零分零秒,也称“本初子午线”。在它东面的为东经,共180度;在它西面的为西经,共180度。因为地球是圆的,以是东经180度和西经180度的经度是同一条经度。列国公定180度经度为“国际日子变动线”。为了制止同一地域施用两个差别的日子,国际日子变线在遇陆地时略有离开正道。
  每一经度和纬度还可以再细分为60分,每一分再分为60秒和秒的小数。利用经纬线,咱们就可以确定地球上每个处所的具体位置,并且把它在地图或者地球仪上暗示出来。例如问北京的经纬度是几多?咱们很容易从地图上查出来是东经116度24分,北纬39度54分。在沧海中飞行的船舶,只要把地点地的经度测出来,就可以确定船在海洋中的位置和进步标的目的。
  纬度共有90度。赤道为0度,向南边和北边极摆列,圈子越小,度数越大
    北顶点到南顶点,可以画出许多南边和北边标的目的的与地球赤道铅直的大圆圈,这叫作“经圈”;组成这些圆圈的线段,就叫经度。公元1884年,国际上划定以经由过程英国伦敦附近的郊区的格林尼治天体台的经度作为计较经度的起航点,即经度零度零分零秒,也称“本初子午线”。在它东面的为东经,共180度;在它西面的为西经,共180度。因为地球是圆的,以是东经180度和西经180度的经度是同一条经度。列国公定180度经度为“国际日子变动线”。为了制止同一地域施用两个差别的日子,国际日子变线在遇陆地时略有离开正道。
  国际上划定,把经由过程英国首都伦敦格林尼治天体台原址的那一条经度定为0°经度,也叫本初子午线。从0°经度算起,向东、向西各分作180°,以东的180°归属东经,习气上用“E”作代号,以西的180°归属西经,习气上用“W”作代号。东经180°和西经的180°重合在一条经度上,那就是180°经度。在地图上判读经度时应注重:从西向东,经度的度数由小到大为东经度;从西向东,经度的度数由大到小,为西经度;除0°和180°经度外,其余经度都能精确区别是东经度照旧西经度。差别的经度具备差别的处所时。偏东的处所时要早,偏西的处所时要迟。每1五个经度便相差1个钟头
  卫星经度代表直播卫星地点的位置 因为直播的卫星轨道是同步轨道  以是纬度是0  只要申明其经度就可以懂得它的位置了.经度数据和地球的同样  好比说你地点地经度是东经
115.5°  那末就代表卫星6B在你的斜上方
  俯仰角的巨细可以由以下公式推算 θ=arctg(h/R)A/2
  此中θ--天线的俯仰角
  h--天线的高度
  R--小区的笼罩半径
  A天线的铅直平面半功率角
 上式是将天线的主瓣标的目的瞄准小区边缘时得出的.在现实的调解事情中一般在由此得出的俯仰角角度的根蒂根基上再加之1-2度使旌旗灯号更有用地笼罩在本小区以内.
  在地平坐标系中,经由过程南点、北点的地平经圈称子午圈。子午圈被天顶、天底等分为两个180°的半圆。以北点为中点的半个圆弧,称为子圈,以南点为中点的半个圆弧,称为午圈。在地平坐标系中,午圈所起的效用至有关本初子午线在地舆坐标系中的效用,是地平经度(方位)度量的肇始面。
  方位角:是指卫星天线,在平行面做0°-360°扭转。方位角调解时抛物面在平行面做摆布运动。
  通常咱们经由过程计较软件或者在资猜中获得的成果应该因此正南标的目的为规范,将卫星天线的指向偏东或者偏西调解1个角度,该角度便是所说的的方位角。至于到尽头是偏东照旧偏西,决定于于接收地与欲接收卫星之间的经度瓜葛,以咱们地点的北半球为例,若接收地经度大于欲接收卫星经度,则方位角应向南偏西转过某个角度;与之相反,则应向东转过某个角度。正南标的目的用指南针来标定,可是因为地舆南磁极和地磁力场南磁极并不是完全重合,以是选好方位角然后还得做一些批改才可能接收到最强的卫星旌旗灯号。
  极化角,就是高频头相对规范位置(对于C头,0刻度一般处于上下摆布四个点,差别厂家的位置可能差别,ku头,0刻度,或者箭头指向正上方)所扭转的角度,顺时针为正,逆时针为负,定见上,大凡正南偏东的卫星,极化角都是正的,偏西的卫星,极化角都是负的,但极化角只是个定见值,现实操作时还要举行细调。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值