收藏 分享(赏)

经纬度坐标与高斯坐标的转换代码.doc

上传人:精品资料 文档编号:8152970 上传时间:2019-06-11 格式:DOC 页数:8 大小:101.19KB
下载 相关 举报
经纬度坐标与高斯坐标的转换代码.doc_第1页
第1页 / 共8页
经纬度坐标与高斯坐标的转换代码.doc_第2页
第2页 / 共8页
经纬度坐标与高斯坐标的转换代码.doc_第3页
第3页 / 共8页
经纬度坐标与高斯坐标的转换代码.doc_第4页
第4页 / 共8页
经纬度坐标与高斯坐标的转换代码.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、经纬度坐标与高斯坐标的转换代码/功能说明: 将绝对高斯坐标(y,x) 转换成绝对的地理坐标 (wd,jd)。 / double y; 输入参数: 高斯坐标的横坐标,以米为单位 / double x; 输入参数: 高斯坐标的纵坐标,以米为单位/ short DH; 输入参数: 带号,表示上述高斯坐标是哪个带的/ double *L; 输出参数: 指向经度坐标的指针,其中经度坐标以秒为单位/ double *B; 输出参数: 指向纬度坐标的指针,其中纬度坐标以秒为单位void GaussToGeo(double y, double x, short DH, double *L, double *B

2、, double LP)double l0; / 经差double tf; / tf = tg(Bf0),注意要将 Bf 转换成以弧度为单位double nf ; / n = y * sqrt( 1 + etf * 2) / c, 其中 etf = e*2 * cos(Bf0) * 2double t_l0; / l0,经差,以度为单位double t_B0; / B0,纬度,以度为单位double Bf0; / Bf0double etf; / etf,其中 etf = e*2 * cos(Bf0) * 2double X_3 ;double PI=3.14159265358979;doub

3、le b_e2=0.0067385254147;double b_c=6399698.90178271;X_3 = x / 1000000.00 - 3 ; / 以兆米(1000000)为单位/ 对于克拉索夫斯基椭球,计算 Bf0Bf0 = 27.11115372595 + 9.02468257083 * X_3 - 0.00579740442 * pow(X_3,2) - 0.00043532572 * pow(X_3,3) + 0.00004857285 * pow(X_3,4) + 0.00000215727 * pow(X_3,5) - 0.00000019399 * pow(X_3,

4、6) ; tf = tan(Bf0*PI/180); / tf = tg(Bf),注意这里将 Bf 转换成以弧度为单位etf = b_e2 * pow(cos(Bf0*PI/180),2); / etf = e*2 * cos(Bf) * 2nf = y * sqrt( 1 + etf ) / b_c; / n = y * sqrt( 1 + etf * 2) / c/ 计算纬度,注意这里计算出来的结果是以度为单位的t_B0 = Bf0 - (1.0+etf) * tf / PI * (90.0 * pow(nf,2)- 7.5 * (5.0 + 3 * pow(tf,2) + etf - 9

5、 * etf * pow(tf,2) * pow(nf,4) + 0.25 * (61 + 90 * pow(tf,2) + 45 * pow(tf,4) * pow(nf,6) ;/ 计算经差,注意这里计算出来的结果是以度为单位的t_l0 = (180 * nf - 30 * ( 1 + 2 * pow(tf,2) + etf ) * pow(nf,3) + 1.5 * (5 + 28 * pow(tf,2) + 24 * pow(tf,4) * pow(nf,5) / ( PI * cos(Bf0*PI/180) ) ;l0 = (t_l0 * 3600.0); / 将经差转成秒if (L

6、P = -1000)*L = (double)(DH * 6 - 3) * 3600.0 + l0); / 根据带号计算出以秒为单位的绝对经度,返回指针else*L = LP * 3600.0 + l0; / 根据带号计算出以秒为单位的绝对经度,返回指针/-*B = (double)(t_B0 * 3600.0) ; / 将纬差转成秒,并返回指针/ 功能说明: (1)将地理坐标(wd,jd)转换成绝对的高斯坐标 (y,x)(2)本函数支持基于六度带(或三度带) 、克拉索夫斯基椭球进行转换 / 适用范围: 本函数适用于将地球东半球中北半球(即东经 0 度到东经 180 度,北纬 0 度至 90

7、度)范围内所有地理坐标到高斯坐标的转换 / 使用说明: 调用本函数后返回的结果应在满足精度的条件下进行四舍五入 / double jd; 输入参数: 地理坐标的经度,以秒为单位/ double wd; 输入参数: 地理坐标的纬度,以秒为单位/ short DH; 输入参数 : 三度带或六度带的带号/ 六度带(三度带)的带号是这样得到的:从东经 0 度到东经 180 度自西向东按每 6 度(3 度)顺序编号(编号从 1 开始) ,这个顺序编号就称为六度带( 三度带)的带号。因此,六度带的带号的范围是 1-30,三度带的带号的范围是 1-60。如果一个点在图号为 TH 的图幅中,那麽该点所处的六度

8、带的带号就可以这样得到:将该图号的第 3、4 位组成的字符串先转换成数字,再减去 30。例如某点在图幅 06490701 中,该点所在的带号就是 49-30,即 19。如果调用本函数去进行一般的从地理坐标到基于六度带高斯坐标的变换(非邻带转换) ,则参数 DH 的选取按前一段的方法去确定。 如果调用本函数去进行基于六度带邻带转换,则参数 DH 的选取先按上述方法去确定,然后看是往前一个带还是后一个带进行邻带转换再确定是加 1 还是减 1。 /void GeoToGauss(double jd, double wd, short DH, short DH_width, double *y, do

9、uble *x, double LP)double t; / t=tgBdouble L; / 中央经线的经度double l0; / 经差double jd_hd,wd_hd; / 将 jd、wd 转换成以弧度为单位double et2; / et2 = (e * 2) * (cosB * 2)double N; / N = C / sqrt(1 + et2)double X; / 克拉索夫斯基椭球中子午弧长double m; / m = cosB * PI/180 * l0 double tsin,tcos; / sinB,cosBdouble PI=3.14159265358979;do

10、uble b_e2=0.0067385254147;double b_c=6399698.90178271;jd_hd = jd / 3600.0 * PI / 180.0 ; / 将以秒为单位的经度转换成弧度wd_hd = wd / 3600.0 * PI / 180.0 ; / 将以秒为单位的纬度转换成弧度/ 如果不设中央经线(缺省参数: -1000) ,则计算中央经线,/ 否则,使用传入的中央经线,不再使用带号和带宽参数/L = (DH - 0.5) * DH_width ; / 计算中央经线的经度if (LP = -1000)L = (DH - 0.5) * DH_width ; /

11、计算中央经线的经度elseL = LP ;l0 = jd / 3600.0 - L ; / 计算经差tsin = sin(wd_hd); / 计算 sinBtcos = cos(wd_hd); / 计算 cosB/ 计算克拉索夫斯基椭球中子午弧长 XX = 111134.8611 / 3600.0 * wd - (32005.7799 * tsin + 133.9238 * pow(tsin,3) + 0.6976 * pow(tsin,5) + 0.0039 * pow(tsin,7) ) * tcos; et2 = b_e2 * pow(tcos,2) ; / et2 = (e * 2)

12、* (cosB * 2)N = b_c / sqrt( 1 + et2 ) ; / N = C / sqrt(1 + et2)t = tan(wd_hd); / t=tgBm = PI/180 * l0 * tcos; / m = cosB * PI/180 * l0 *x = X + N * t * ( 0.5 * pow(m,2) + (5.0 - pow(t,2) + 9.0 * et2 + 4 * pow(et2,2) * pow(m,4)/24.0 + (61.0 - 58.0 * pow(t,2) + pow(t,4) * pow(m,6) / 720.0 ) ;*y = N *

13、( m + ( 1.0 - pow(t,2) + et2 ) * pow(m,3) / 6.0 + ( 5.0 - 18.0 * pow(t,2) + pow(t,4) + 14.0 * et2 - 58.0 * et2 * pow(t,2) ) * pow(m,5) / 120.0 );3 度带与 6 度带 1我国采用 6 度分带和 3 度分带:1 2.5 万及 15 万的地形图采用 6 度分带投影,即经差为 6 度,从零度子午线开始,自西向东每个经差 6 度为一投影带,全球共分 60 个带,用 1,2,3 ,4,5,表示即东经0 6 度为第一带,其中央经线的经度为东经 3 度,东经 612

14、 度为第二带,其中央经线的经度为 9 度。1 1 万的地形图采用 3 度分带,从东经 1.5 度的经线开始,每隔 3 度为一带,用1, 2,3,表示,全球共划分 120 个投影带,即东经 1.5 4.5 度为第 1 带,其中央经线的经度为东经 3 度,东经 4.57.5 度为第 2 带,其中央经线的经度为东经 6 度我省位于东经 113 度东经 120 度之间,跨第 38、39、40 共计 3 个带,其中东经 115.5 度以西为第 38 带,其中央经线为东经 114 度;东经 115.5118.5 度为 39 带,其中央经线为东经117 度;东经 118.5 度以东到山海关为 40 带,其中

15、央经线为东经 120 度。地形图上公里网横坐标前 2 位就是带号,例如: 15 万地形图上的横坐标为 20345486,其中 20 即为带号,345486 为横坐标值。2当地中央经线经度的计算六度带中央经线经度的计算:当地中央经线经度6 当地带号3 ,例如:地形图上的横坐标为 20345,其所处的六度带的中央经线经度为:6203117(适用于1 25 万和 15 万地形图) 。三度带中央经线经度的计算:中央经线经度3当地带号(适用于 11 万地形图) 。3、如何计算当地的中央子午线? 当地中央子午线决定于当地的直角坐标系统,首先确定您的直角坐标系统是 3 度带还是 6度带投影公式推算:6 度带

16、中央子午线计算公式:当地经度/6=N;中央子午线 L=6 * N (带号)当没有除尽,N 有余数时, 中央子午线 L=6*N - 3 3 度带中央子午线计算公式: 当地经度/3=N;中央子午线 L=3 X N 我国的经度范围西起 73东至 135,可分成六度带十一个(13 号带23 号带) ,各带中央经线依次为(75、81 、123、129、135) ;三度带二十二 个(24 号带45 号带) 。各带中央经线依次为(72、75 、132、135) ;六度带可用于中小比例尺(如 1:250000)测图,三度带可用于大比例尺(如 1:10000 )测图,城建坐标多采用三度带的高斯投影4、如何判断投影坐标是 3 度带坐标还是 6 度带坐标如(4231898,21655933)其中 21 即为带号,同样所定义的东伪偏移值也需要加上带号,如 21带的东伪偏移值为 21500000 米。 假如你的工作区经度在 120 度至 126 度范围,则该坐标系为 6 度带坐标系,该带的中央经度为 123 度。如(2949320,36353822)其中 36 即为带号,已知该地点位于贵阳市附近,而从地图上我们看到贵阳大概的经度是东经 108 度左右,因此可以 36*3=108,所以该坐标系为 3 度带坐标系,该带的中央经度为 108 度。而不可能为 6 度带:36*6=216。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报