2000坐标系转经纬度工具_原创程序|坐标投影计算工具(下载地址更新)

    今天要跟大家分享的软件是一款坐标投影计算小工具,提供北京54、西安80、WGS84和CGCS2000坐标系进行高斯投影和UTM投影正反算计算(投影坐标与地理坐标相互转换),提供地理坐标度分秒格式与十进制度度格式的相互转换。本软件不提供坐标系之间的相互转换!!!

b72552d02f305772afbbfd873875ec4c.png

    坐标系和投影是测绘和GIS专业比较基础但也比较容易弄晕乎的知识点,因此在介绍该软件功能之前,先给大家普及下坐标系和投影的相关知识,讲的不对的地方,欢迎拍砖。

1、坐标系和投影

1)坐标系  

    测绘里的坐标系包括大地坐标系(全球的)和地方坐标系(局部的),地方坐标系相对复杂(参数保密),本文仅讨论大地坐标系。我国常用的大地坐标系包括北京54、西安80、WGS84和CGCS2000坐标系。

    大地坐标系是大地测量中以参考椭球面为基准面建立起来的坐标系,大地坐标系分为参心坐标系和地心坐标系2种。参心坐标系是以参考椭球的几何中心为原点的大地坐标系,比如我国的北京54坐标系和西安80坐标系,参心坐标系有大地原点(如西安大地原点);地心坐标系是以地球质心为原点建立的坐标系,比如WGS84和CGCS2000坐标系,地心坐标系没有大地原点。

   大地坐标系包括地理坐标系和投影坐标系。地理坐标系为球面坐标,坐标值是经纬度,包括度分秒格式和各种十进制格式;投影坐标系为平面坐标,坐标值是XY坐标。

d94ebca3a53897fbf19e777311afb0b3.png

2)投影      

    地理坐标按照一定的方式进行投影计算可以转换成投影坐标,我国常用的投影方式包括高斯投影和UTM投影。UTM投影与高斯投影很相似,唯一差别就是UTM投影的比例系数是0.9996,而高斯投影的比例系数是1。下面以高斯投影为例介绍坐标投影。

4af00f65330177d8faeb4708c4ce7da8.png

    假想有一个椭圆柱面横套在地球椭球体外面,并与某一条子午线(此子午线称为中央子午线)相切,椭圆柱的中心轴通过椭球体中心,然后用一定投影方法,将中央子午线两侧各一定经差范围内的地区投影到椭圆柱面上,再将此柱面展开即成为投影面(如上图所示),此投影为高斯投影。

     高斯投影坐标系中的XY轴与ArcGIS软件或AutoCAD软件中的平面坐标系(笛卡尔平面坐标系)中的XY轴刚好是相反的(请看上图右侧的坐标系)。

    高斯投影有严密的计算公式,通过高斯投影正算公式可以将地理坐标转换成投影坐标,通过高斯投影反算公式可以将投影坐标转换成地理坐标,下面要介绍的坐标投影计算软件就是根据这两个公式进行坐标转换计算,具体计算公式请问百度。

    高斯投影计算有个重要的参数就是中央子午线也叫中央经线,因此需要引入6度带和3度带的概念,6度带是自0度经线起每隔经差6度自西向东分带(见下图),依次编号1,2,3,…,60,中央经线的经度用L0表示,它们的关系是:L0=6n-3(n为带号),我国范围内6度带有11个(43~53带);3度带从1.5度经线起每隔经差3度自西向东分带,依次编号1,2,3,…,120,中央经线的经度用L0表示,它们的关系是:L0=3n(n为带号),我国范围内3度带有22个(24~45带)。

    UTM投影通常只采用6度分带,通常也只针对WGS84坐标系。

1262d23b3b872dfc939ae185fa0426ce.png

    设置投影分带的目的是为了在全球范围内统一投影分带标准,但对于坐标投影计算而言,6度带和3度带的目的只是为了计算出中央经线。其实中央经线也可以自定义,比如选取离项目范围最近的整数倍经线作为中央经线,离中央经线距离越小,投影变形越小。

    将地理坐标按照高斯投影计算公式转换成的投影坐标一般包括2种表达,一种是含投影带号的(如:Y=38457136.664, X=2455475.927),另一种是不含投影带号的(如:Y=457136.664, X=2455475.927)。

3)经验小结    

  • 每个大地坐标系都有两套坐标值,分别是地理坐标(经纬度)和投影坐标(XY坐标);

  • 相同大地坐标系的地理坐标与投影坐标可以通过投影正/反算公式进行相互转换,这种相互转换是严密的,不会产生误差;

  • 本软件的主要功能就是相同大地坐标系中地理坐标与投影坐标之间相互转换,当然ArcGIS软件也有该功能,但要先将坐标值转换成图层后再进行转换操作,步骤相对繁琐。在后面的文章中会单独介绍ArcGIS软件中坐标系和投影的相关知识。

2、软件功能介绍

    下面介绍的坐标投影计算小工具主要包括2个功能:

  • 提供地理坐标与投影坐标的相互转换(坐标正反投影计算);

  • 提供地理坐标度分秒格式与十进制度格式的相互转换。

1)坐标正反投影计算

    该功能提供北京54、西安80、WGS84和CGCS2000坐标系进行高斯投影和UTM投影正反算计算。左侧坐标列表为投影坐标,右侧坐标列表为地理坐标,中间的下拉框可以选择坐标系和投影方式,通过设置投影带和带号可以计算出中央经线,也支持手动输入中央经线进行转换(原理不是清楚的,慎用)。

463a050ad9a6651cc5ded0578f9508bd.png

    还可以选择保留小数位数和输出数据列的分割符;右侧地理坐标列表中支持输入“经度-纬度”或者“纬度-经度”的坐标格式,只需要在经纬度下拉框中选择对应的“经纬度”或“纬经度”格式;投影坐标分为“去带号”和“保留带号”2种格式,可以根据需要选择。

2)地理坐标经纬度格式转换

    该功能提供地理坐标的度分秒格式与十进制度格式之间的相互转换,该计算公式比较简单:

  • 度分秒转十进制度:十进制度=度+分/60+秒/3600;

  • 十进制度转度分秒:度=十进制度取整,分=(十进制度取小数*60)再取整,秒=(十进制度取小数*60)取小数*60。

cfe415bb86e66928a0914015a02e6935.png

    该功能可以在Excel中实现。

3、注意事项

    1)该软件对坐标输入格式有要求,坐标值通过逗号或制表符(Excel中数据列分隔方式)隔开,其他分割方式不支持;另外,度分秒的符号支持搜狗输入法中输出的度分秒符号;

    2)该软件使用时结合文本编辑器和Excel软件进行操作会更方便;

    3)该软件虽然简单易用,但需要对坐标系和投影知识比较熟悉才能正确使用;另外,该软件虽然经过了多年的实际工作验证,但本人不保证转换结果的准确,请验证后使用。

4、下载地址

链接:https://pan.baidu.com/s/1hKo2ZuTZxM1GzLPm-qIeAg

提取码:7hh5

    查看更多经验分享请关注微信公众号。

4063fa4b1088e6faec5b0053cba76801.png

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
北东地坐标系(也称为高斯投影坐标系转换经纬度坐标系需要知道该点所在的投影带以及该带的椭球参数。以下是一个简单的 C++ 代码示例,用于将北东地坐标系转换经纬度坐标系: ```C++ #include <cmath> const double pi = 3.14159265358979323846; struct GeoPoint { double longitude; // 经度 double latitude; // 纬度 }; struct GaussPoint { double x; // 北向坐标 double y; // 东向坐标 }; struct ProjParam { double a; // 椭球长半轴 double b; // 椭球短半轴 double L0; // 中央经线 double k0; // 比例因子 double e2; // 第一偏心率平方 double e1; // 第一偏心率 double e12; // 第二偏心率平方 }; // 将弧度转换为度 double rad2deg(double rad) { return rad / pi * 180.0; } // 将度转换为弧度 double deg2rad(double deg) { return deg / 180.0 * pi; } // 计算子午圈半径 double getRm(ProjParam param, double B) { double sinB = sin(deg2rad(B)); return param.a * (1 - param.e2) / pow(1 - param.e2 * sinB * sinB, 1.5); } // 将北东地坐标系的点转换经纬度坐标系的点 GeoPoint GaussToGeo(GaussPoint gauss, ProjParam param) { double x = gauss.x; double y = gauss.y; double L0 = deg2rad(param.L0); double x0 = 500000.0; double y0 = 0.0; double k0 = param.k0; double dx = x - x0; double dy = y - y0; double e2 = param.e2; double e1 = param.e1; double e12 = param.e12; double Bf = dy / (param.a * k0); double Mf = getRm(param, Bf) * Bf; double Nf = param.a / sqrt(1 - e2 * sin(Bf) * sin(Bf)); double t = tan(Bf); double tf = e12 * cos(Bf) * cos(Bf); double df = dx / (Nf * k0); double B = Bf - tf * t * (df * df - pow(df, 4.0) / 3.0); double L = L0 + df - (1 + 2 * tf + 3 * tf * tf) * t * t * df * df / 2 + (2 + 5 * tf + 28 * tf * tf + 24 * tf * tf * tf) * t * t * t * t * df * df * df / 24; GeoPoint point = {rad2deg(L), rad2deg(B)}; return point; } ``` 其中,`GaussPoint` 表示北东地坐标系的点,`GeoPoint` 表示经纬度坐标系的点,`ProjParam` 表示投影带的椭球参数。`getRm` 函数用于计算子午圈半径,`GaussToGeo` 函数用于将北东地坐标系的点转换经纬度坐标系的点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值