分享

终极探讨导航搜星定位快与慢的问题

 云中明月亮 2012-12-01
搜星快慢其实大家都差不多,只要都在室外空旷处(想想也是呀,硬件技术水准都差不多,这搜星能力不就取决于GPS天线的接受灵敏度嘛)。真正慢的是搜到星星之后的定位(正确计算出经纬度坐标参数值)。于是,一个非常重要的的东东不得不提了:星历(解释参见下文)。所有定位快或者慢的手机,其实说到底就是这个星历是否及时的最快速度地获得了,而且获得的是此时此地最合适正确的星历。这个星历呀,还居然是个需要不停地更新的玩意啦,所谓短效星历,就是指仅仅只有4个小时有效的,过了这个时段,就必须重新更新星历。想想也明白呀,既然这个星历可以看作某种意义上的卫星分布图,而GPS卫星其实并不是绕地球轨道上祘车载导航}雇轿佬茄剑?个都在飞速移动着呢,那么好,此刻头顶上某个方向上的某个卫星,过不了多久不就是跑到天空另一个角落位置去了呀,呵呵,所以呀,难怪,我每次搜星定位很快的(数秒即可)状态,始终维持不了多久,每天上班路上试试,好像已经很快了,没想到下班路上再试试,又慢啦。时过境迁嘛,这呀叫做时过。还有呢,我上飞机前搜星定位好爽,然后一个多小时之后,从上海飞到北京了,打开手机打开导航,哎呀,怎么又是花了我老半天(数分钟乃至10分钟之久)才定位成功啊?呵呵,这也完全正确,这叫境迁嘛。因为,星历(卫星图)当你大幅度跨越上千公里之外,即使时间很短(没有超过四小时),可是,抬头望天,这从上海看头顶上某颗星星的位置,难道和在北京看同一颗会是一模一样的位
置吗(即使同一刻时间)?当然不是嘛(咱说的是地球人造卫星,不是遥远的行星恒星哦,卫星距离地球很近,就会有北京与上海的位置差异,要是太阳那么遥远,那地球也就是一个点了,在哪儿看太阳都一样位置的啦)。
    好了,结论有了,导航搜星定位,每次都要有星历配合,如果这个星历是有效的,那么一定很快,如果距离上一次使用导航的时间越短,那么这次启用导航的搜星定位就越快,因为上一次的导航坐标数据和星历参数统统都是最正确最接近的(都存在缓存空间内给下一次导航使用),最快可以拿来比对计算出此次的坐标参数来的(GPS导航的算法公式就是利用最新的和缓存的数据大量多次运算比较,多个卫星信号数据同时运算比较,从而得出误差最小的坐标参数,保证最好的定位精度)。一旦星历过时作废(时间久了卫星飞远了)或过地理位置作废(从上海短时间横移到北京),那么导航就必须重新获得星历,重新清空失效的缓存数据,获取全新的卫星时间数据来计算了。星历怎么拿到?很简单,卫星从天上发出信号就带了星历的。当然,这是需要GPS接收后做大量运算后还原出来的。另一种呢,就是所谓A-GPS方式了,直接从国际上的导航服务器获得相应的星历数据,这个时候就要求使用无线网络了。这样获取的星历是现成的数据,可以适当省去前面说的大量运算,基本上直接拿来就可以利用的了。于是,那个神奇的gps.conf文件就起作用了。因为它定义了到哪个服务器去拿,服务器越快越近,则你收到的也快,随后定位也相应的快了。
    回过来说说现象吧,有时候最新的星历已经拿到了(从gps.conf定义的NTP服务器拿到或者单纯卫星数据死算出来),这个时候一旦定位过之后,关导航也好,甚至关手机也好,短时间内再次打开手机导航,导航会直接拿缓存(关机不会丢失)过的星历以及参考坐标数据做运算比对标准,于是,你常常可以瞬间就又一次成功定位了(俗称秒定),而此时根本已经无视那个gps.conf的存在与否的了,都是一样的快(难怪我删掉那个文件也一样的快)。有时候,改了这个文件,可以搜星定位快了,这是一种可能性,是改之前指向的服务器的确又远又慢又拥挤,甚至停机,那么改了后可能是快了一些。又有时候,定位等了老半天不行,改了一下文件再试试,发现突然快了,其实很多时候是已经缓存了一定量的数据和运算结果,你换一次该文件也好,不换也好,其实只是退出导航重新进入后,那些中途运算的结果直接就拿来比对运算了,加上最新的数据,会一下子加快运算的结果的,从而快速定位成功了。我猜测导航运算的时候,会使用最多的最差异化的数据来运算比较坐标值,得到精度最好的结果后就实现定位。所以两次不同时间(不是时间跨度很大的那种)的打开导航,运算时的上一次数据参考意义上更有助于定位。我自己的经验也是,假如打开导航等了片刻还没有定位,就干脆退出导航,重新进去,往往你会发现重新进去后定位又快了很多,这其实还包括一层意思就是当你仅仅只打开导航死等定位的时候,向服务器求星历的信号的确已经发出去了,但在等待状态下,而因为服务器与手机的通讯不良问题导致互相在等待或失去联系,这样就会等很久,重新退出再进入,无非就类似于网页访问时的等待迟迟不出现网页,此时来一次刷新动作,立马就出现需要的网页了,星历也一样,类似又刷新了一下星历请求,或许就马上获得了需要的数据了。还有一种情况就是,利用纯卫星信号重新获取星历的时候,如果在空旷之地能收到很多卫星,则相应也快一些,否则就慢很多(定位时间可以从5分钟到20分钟不等)。所以,为了尽量快速定位,快速获得星历,请永远打开Desire HD的“设置---位置---使用无线网络”,舍不得这点流量,换来的就是每次定位时间的超长。本质上这手机集成谷歌系统优化的就是A-GPS,需要你使用无线网络和基站的帮衬来快速定位。很多机油反映说做了一次恢复出厂之后,再也没有办法定位了,呵呵,我也有一次类似经历,恢复出厂后一口气等了30多分钟才实现定位的唉,原因很简单,所有缓存数据都没有,使用无线网络默认关闭了,然后硬碰硬只好从纯卫星信号上解析还原出星历文件,且当时放在屋子窗口搜到的星星太少(4~6颗且信号不稳定),所以才费了那么多功夫。如果要是放到室外空旷地,我相信会明显缩短定位时间,如果加上使用打开无线网络且打开GPRS,则又能加快定位,若是3G上网的话,还能进一步快。所以,以上种种,都是某些机油们遇到的一些现象。
    那么,这个gps.conf文件究竟选哪一个?其实也不绝对,一看你位于哪里,二看这些服务器是否有变化,有时候一段时间用这个好些,另一段时间可能另一个好些,不能简单下结论。不管怎么样,如果不是每天都大量多次使用导航的话,一定会有遇到星历失效必须重新下载星历,而偏巧网络不稳定或别的原因,出现搜星定位速度变慢的现象,真正最快速最简单的办法又没有?据说是别使用这些短效星历(四小时左右),直接获取使用长效星历(长达7天),那么就起码7天内可以无忧无虑了,任何时候一打开导航,数秒内就可以实现定位了。可惜,我至今没找到安卓平台上的长效星历,哪位有这方面的东东,请共享出来啦!衷心希望大家都能实现导航搜星每次都秒定,呵呵!
    GPS启动分为热启动、温启动和冷启动3种,上次关机前的位置信息(经纬度,高度)已知(所以在车库内关机下次就一定是冷启动了);
或者当前时间、年历、星历已知(需要实时时钟支持),再或者是距离上次关机时间不超过4小时(时间过长则星历变化了,即以前的卫星看不到了)。据反复测试,Desire HD典型的冷启动时间约数分钟或数十分钟,温启动时间约几十秒,热启动时间约几秒。 (注:即使手机拔电池关机也不一定就是冷启动,这里的冷、热启动只是GPS自身的概念)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多