- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
假设地球是一个标准球体,半径为 R,并且假设东经为正,西经为负,
北纬为正,南纬为负,
则 A(x,y) 的坐标可表示为( R*cosy*cosx, R*cosy*sinx,R*siny )
B(a,b) 可表示为 (R*cosb*cosa ,R*cosb*sina,R*sinb)
于是, AB 对于球心所张的角的余弦大小为
cosb*cosy*(cosa*cosx+sina*sinx)+sinb*siny=cosb*cosy*cos(a-x)+s
inb*siny
因此 AB 两点的球面距离为
R*{arccos[cosb*cosy*cos(a-x)+sinb*siny]}
注: 1.x,y,a,b 都是角度,最后结果中给出的 arccos 因为弧度形式。
2.所谓的 东经为正,西经为负,北纬为正,南纬为负“ ”是为了计算的
方便。
比如某点为西京 145°,南纬 36°,那么计算时可用 (-145 °,-36 °)
3.AB 对球心所张角的球法实际上是求 OA 和OB 两向量的夹角
K 。
用公式 OA*OB=|OA|*|OB|*cosK
可以得到
其中地球平均半径为 6371.004 km
假设地球是个标准的球体:半径可以查出来,假设是 R:
如图:
要算出 A 到 B 的球面距离,先要求出 A 跟 B 的夹角,即角 AOB ,
求角 AOB 可以先求 AOB 的最大边 AB 的长度。在根据余弦定律可以求夹角。
AB 在三角形 AQB 中,AQ 的长度可以根据 AB 的纬度之差计算。
BQ 在三角形 BPQ 中, BP 和 PQ 可求,角 BPQ 可以根据两者的经度求出,这样 BQ 的长
度也可以求出来,
所以 AB 的长度是可以求出来的。因为三角形 ABQ 是直角三角形,已经得到两个边
知道了角 AOB 后, AB 的弧长是可以求的。
这样推出其公式就不难了
关于用经纬度计算距离:
地球赤道上环绕地球一周走一圈共 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 为距离。
至于比例尺计算就不废话了
// 这是主函数
double CChartCtrl::CalcltDstns(float fStarPtx, float fStarPty, float fEndPt
x, float fEndPty)
{
// 已知起始点坐标 (fStartPtx, fStartPty) 及到达点坐标 (fEndPtx,fEndPty)
// 计算航程 dbDstns.
// 起始点 , 到达点坐标 : 经纬度
// 航程 : 海里 (1852 米)
//Created by zhl
//2002.7.3
//precision:0.0001 海里
//check param
double dbDir=CalcltDirct(fStarPtx,fStarPty,fEndPtx,fEndPty);
double delta_fy
文档评论(0)