北京1954坐标转为经纬度坐标

种种原因最近(20200716)碰到了这个北京54坐标如何转换为经纬度坐标,网上找了不少内容,实在没有一个是比较贴心的,看到了使用Arcgis可以转换,但是测试之后还是果断放弃,真tm的费劲,果断放弃。

折腾两天之后发现一个非常sweet的软件,下面贴出来分享给各位,直接上菜吧:

Part--1软件名字:CoordTrans.exe

此软件简单易用,看了基本差不多,如果想进行其他的坐标转换就在相应的模块中选择尝试,中央子午线的设置要参考自己坐标转换点的一个比较接近的经度,软件到此位置。

在使用的时候我碰到了一个问题就是,此软件在批量读取坐标点的时候遇到了问题,没有解决。

Part-2: 批量转换Matlab程序 

function BL_to_xy()
%北京54转经纬度坐标
format long
a=6378245;%长半轴
f = 0.00335232986925914;% 扁率
L0 = 81;%中央子午线经度
data = xlsread('修改为自己的文件位置');%读取需要转换的原始数据
[row,col] = size(data);
new_data = zeros(row,5);
new_data(:,3:5) = data(:,1:3); 
for i = 1:row
    Lat = data(i,2);
    Lon = data(i,1);
    PRO = GKZS(Lat,Lon,L0,a,f);
    new_data(i,1:2) = PRO;
end
xlswrite('修改为自己的文件位置',new_data);%转换后的结果保存
end

%% Sub function 此处的子程序参考网上的分享,没有标注出来源,
%各位看到此子程序的来源可以给提供一下,谢谢!!
function PRO = GKZS(Lat,Lon,L0,a,f)
% Lat: Latitude(rad) 
% Lon: longitude(rad)
% REF//程鹏飞,成英燕,文汉江,等.2000国家大地坐标系实用宝典[M].
%    //北京:测绘出版社,2008:144-148.
%L0是中央子午线,根据不同区块自己设定
Lat = Lat*pi/180;
Lon = Lon*pi/180;
MedLon = L0*pi/180; %中央子午线经度
Eth.R0 = a;%长半轴
Eth.f = f; % 扁率
Eth.e12 = 2*Eth.f - Eth.f*Eth.f; % 第一偏心率额e^2
Eth.e22 = Eth.e12/((1 - Eth.f)*(1 - Eth.f));% 第二偏心率额e'^2
%% 高斯投影正算公式
RN = Eth.R0/sqrt(1 - Eth.e12*sin(Lat)*sin(Lat));
Lon = Lon - MedLon;
Lon2 = Lon*Lon;
Lon4 = Lon2*Lon2;
tnLat = tan(Lat);
tn2Lat = tnLat*tnLat;
tn4Lat = tn2Lat*tn2Lat;
csLat = cos(Lat);
cs2Lat = csLat*csLat;
cs4Lat = cs2Lat*cs2Lat;
Eta2 = Eth.e22*cs2Lat;
NTBLP = RN*tnLat*cs2Lat*Lon2;
coe1 = (5 - tn2Lat + 9*Eta2 + 4*Eta2*Eta2)*cs2Lat*Lon2/24;
coe2 = (61 - 58*tn2Lat + tn4Lat)*cs4Lat*Lon4/720;
x = Merdian(Eth,Lat) + NTBLP*(0.5 + coe1 + coe2);
NBLP = RN*csLat*Lon;
coe3 = (1 - tn2Lat + Eta2)*cs2Lat*Lon2/6;
coe4 = (5 - 18*tn2Lat + tn4Lat + 14*Eta2 - 58*tn2Lat*Eta2)*cs4Lat*Lon4/120;
y = NBLP*(1 + coe3 + coe4) + 500000;%此处有修改,后续在笔记中加以体现
%
PRO=[x y];
end
%% sub function
function X0 = Merdian(Eth,Lat)
% REF//过家春.子午线弧长公式的简化及其泰勒级数解释[J].测绘学报,2014,43(2):125-130.
S0 = Eth.R0*(1 - Eth.e12);
e2 = Eth.e12;
e4 = e2*e2;
e6 = e4*e2;
e8 = e6*e2;
e10 = e8*e2;
e12 = e10*e2;
A1 = 1 + 3*e2/4 + 45*e4/64 + 175*e6/256 + 11025*e8/16384 + 43659*e10/65536 + 693693*e12/1048576;
B1 = 3*e2/8 + 15*e4/32 + 525*e6/1024 + 2205*e8/4096 + 72765*e10/131072 + 297297*e12/524288;
C1 = 15*e4/256 + 105*e6/1024 + 2205*e8/16384 + 10395*e10/65536 + 1486485*e12/8388608;
D1 = 35*e6/3072 + 105*e8/4096 + 10395*e10/262144 + 55055*e12/1048576;
E1 = 315*e8/131072 + 3465*e10/524288 + 99099*e12/8388608;
F1 = 693*e10/1310720 + 9009*e12/5242880;
G1 = 1001*e12/8388608;
X0 = S0*(A1*Lat - B1*sin(2*Lat) + C1*sin(4*Lat) - D1*sin(6*Lat) +...
    E1*sin(8*Lat) - F1*sin(10*Lat) + G1*sin(12*Lat));
end
%% Writed by themingyi 20200715

如有任何问题欢迎评论互动!

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
坐标转换问题 坐标转换问题的详细了解对于测量很重要,那么请和我一起来讨论这个问题。 首先,我们要弄清楚几种坐标表示方法。大致有三种坐标表示方法:经纬度和高程,空间直角坐标,平面坐标和高程。 我们通常说的WGS-84坐标经纬度和高程这一种,北京54坐标是平面坐标和高程着一种。 现在,再搞清楚转换的严密性问题,在同一个椭球里的转换都是严密的,而在不同的椭球之间的转换这时不严密的。举个例子,在WGS-84坐标北京54坐标之间是不存在一套转换参数可以全国通用的,在每个地方会不一样,因为它们是两个不同的椭球基准。 那么,两个椭球间的坐标转换应该是怎样的呢?一般而言比较严密的是用七参数法,即X平移,Y平移,Z平移,X旋转,Y旋转,Z旋转,尺度变化K。要求得七参数就需要在一个地区需要3个以上的已知点,如果区域范围不大,最远点间的距离不大于30Km(经验值),这可以用三参数,即X平移,Y平移,Z平移,而将X旋转,Y旋转,Z旋转,尺度变化K视为0,所以三参数只是七参数的一种特例。在本软件中提供了计算三参数、七参数的功能。 在一个椭球的不同坐标系中转换需要用到四参数转换,举个例子,在深圳既有北京54坐标又有深圳坐标,在这两种坐标之间转换就用到四参数,计算四参数需要两个已知点。本软件提供计算四参数的功能。 现在举个例子说明:在珠江有一个测区,需要完WGS-84坐标到珠江坐标系(54椭球)的坐标转换,整个转换过程是 这样的: WGS-84经纬度 WGS-84空间直角 七参数转换 北京54空间直角 北京54经纬度 坐标投影 北京54平面坐标 四参数转换 珠江平面坐标 三个已知点 计算七参数 一个已知点 计算三参数 投影参数设置 两个已知点 计算四参数 本软件使用说明: 本软件采用文件化管理,用户可以将一种转换作为一个文件保存下来,下次使用时从文件菜单中选择打开这个文件来调用所有已有的转换参数。 实例一: 转换要求: 用户在一个佛山测区内使用RTK GPS接收机接受了一些点的WGS-84的坐标,现在希望将其转换为北京54和佛山坐标系下的坐标。用户有佛山测区的一些控制点,这些控制点有WGS-84坐标,也有北京-54坐标也有佛山坐标。 分析: WGS-84坐标北京54坐标是不同两个椭球的坐标转换,所以要求得三参数或七参数,而北京54和佛山坐标都是同一个椭球,所以他们之间的转换是地方坐标转换,需要求得地方转化四参数,因为要求得到的北京54是平面坐标所以需要设置投影参数。: 步骤: 1. 新建坐标转换文件,便于下次使用转换是不用重新输入,直接打开即可。 2. 设置投影参数。 3. 用一个已知点(WGS84坐标北京54坐标),计算不同椭球转换的三参数(或七参数)。 4. 确定转换参数。 5. 打开七参数转换,完WGS84到北京54的转换。 6. 利用多个已知点(北京54坐标和佛山坐标),计算同一个椭球的地方坐标转换(四参数)。 7. 确定转换参数 8. 同时打开七参数和四参数。完WGS-84到佛山坐标的转换。 实例二: 转换要求: 用户在一个测区内有一些点的北京54坐标,现在希望将其转换为国家80坐标。用户有测区的一些控制点,这些控制点既有北京-54坐标也有国家80坐标。 文件转换 用户如果需要转换的是一个文件里的所有的点,可以用文件转换来完。 1. 确定转换关系: 按照上面的步骤完1~8步的操作,这样就确立了转换关系,也就是说文件里所有的点都按照上面确定的转换关系来完转换。 2. 确定转换格式: 在主界面中选择文件转换,点击格式按钮。 新建格式:在名称,扩展名中输入相应的内容,然后自己选择数据列表中的内容并添加来确定格式,如果列表中没有的就用其他来表示,完后点击完新建。 选择格式:在格式列表中选择格式 文件转换方式:转换后的文件有三种方式,如原来的文件是C:\File.txt文件,用户选择其中的一种,这样转换后就会根据这个方式来完新建文件。却省是在文件扩展名后+1,即转换后会新生一个C:\File.txt1文件。 在上述工作完后,单击确定按钮即可。 3. 选择转换文件并完转换 单击浏览按钮,打开文件选择对话框,选择文件并确定,在左边会显示文件,用户单击 =〉按钮即可完转换,右边会显示出转换后的文件名和路径,用户可以通过双击列表中的文件即可查看文件内容。 实例三: 转换要求: 用户在番禹工作,要求完从WGS-84到国家80的转换,由于测区范围比较大,需要进行七参数转换。 注意:这个例子同样适合于直接从WGS-84坐标转换为地方坐标转换。 分析: 首先分析坐标:因为七参数转换模型的特点,要求转换的坐标不能相差太大, WGS-84的坐标为:023:09:33.6274 112:55:41.2119 62.536 国际80坐标为: 562589.8110 290115.8140 70.3590 用WGS-84不加任何参数转化为平面坐标为:2562588.851341 390232.479605 可以看到 X的大数差-2000000 Y的大数差-100000 所以改变投影参数里的X,Y常数改正为 X常数:0-2000000=-2000000 Y常数:500000-100000=400000 一、设置投影参数 二、计算七参数 选择坐标转换菜单下的“计算七参数“,打开如图对话框 选择好源坐标和目标坐标的类型,源坐标和目标坐标的椭球基准,输入源坐标和目标坐标,点击“增加“按钮,就会将刚才的公共点坐标输入到列表中,同样的方法至少输入三个已知点到列表中,点击“计算“按钮,就可以看到计算的结果,同时在”RMS”中会显示使用这套参数後计算後每个点的坐标中误差,如果发现误差过大,可能坐标中由输入错误的,这时可以通过在列表中选择不同的站点计算,直到满意为止。完后点击“确定“按钮。 三、七参数设置 单击“确定“按钮即可设置好了七参数 四、完转换 选择“七参数转换“打钩,就可以完了,完后点击保存,下次就可以使用同样的参数。 上述的方法同样适合于从WGS-84直接转换为地方坐标,关键是确定好投影参数的X,Y常数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值