北京1954坐标转为经纬度坐标_北京54坐标转换经纬度-程序员宅基地

技术标签: 坐标转换  学习笔记  Matlab代码  北京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

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/themingyi/article/details/107420963

智能推荐

GDBus之dbus服务创建_gdbus g_dbus_server_new_sync-程序员宅基地

文章浏览阅读1.7k次。GDBus 创建dbus服务示例dbus服务响应Method、Property、Signal_gdbus g_dbus_server_new_sync

js跳转页面方法(转)_auto.js跳转抖音个人界面 site:blog.csdn.net-程序员宅基地

文章浏览阅读344次。3布丁足迹;秒后自动跳转……function countDown(secs){ tiao.innerText=secs; if(--secs>0) setTimeout("countDown("+secs+")",1000); } countDown(3);   按钮式:    链接式:  返回上一步_auto.js跳转抖音个人界面 site:blog.csdn.net

关于Centos7上python2.7的pip安装问题_python2.7最高支持pip什么版本-程序员宅基地

文章浏览阅读239次。今天在服务器上安装pip包,遇到很多问题,查阅资料大多说pip版本过低导致,直接更新pip后,问题更加严重再次查资料,最后发现是pip版本过高的问题,python2.7版本最高支持到20.3.4使用easy_install来安装指定版本的pip,问题解决参考来源:https://www.cnblogs.com/hxlasky/p/14504677.html..._python2.7最高支持pip什么版本

“前端智能为安防产生新的数据价值”-程序员宅基地

文章浏览阅读938次。笔者按:文章中很多图片无法观看,读者可前往下面的原文地址阅读。文中有一个视频,读者可以从下面地址下载获得:https://pan.baidu.com/s/1o8sXZGA文章转载自:智慧安防网,地址:链接地址 2017年12月14日,“第五届中国·深圳智慧城市建设高峰论坛”在深圳大中华喜来登酒店盛大开幕!来自全国各地的政企领袖、行业大咖、权威专家、企业代表、媒体_前端智能

数据结构:构造二叉树(前跟中跟,中跟后跟)_中根后根构造二叉树-程序员宅基地

文章浏览阅读4.4k次,点赞8次,收藏26次。先从前序的第一个结点开始,其为根节点,然后在中序中找到该元素,一分为二,中序左边为左子树,右边为右子树,然后从前序中找第二个元素为根结点左子树的根,然后重复上面这个过程,发现出现NULL,跳到右子树。但是,如果在先根遍历中加入反映兄弟结点间的左右次序的信息(如以“^”标明空子树),则可以唯一确定一颗二叉树。当一个结点的左右孩子链都已建立,则以当前结点为根的一棵子树就已建立,返回上一层结点。二叉树的广义表表示语法如下图,其中元素表示结点,“^”表示空子树。,则创建一个结点,该结点的左孩子结点元素是。_中根后根构造二叉树

NetSuite高级打印模板设置_netsuite 如何调整打印模版-程序员宅基地

文章浏览阅读648次。NetSuite有高级打印和普通打印模板两种设置本文通过html进行修改,普通打印模板支持的单据相比高级要多:例如请购单;纸张大小:在高级打印模板设置的时候,只有信纸、A4、A5三种纸张可以进行选择,但是我们可以通过原代码修改 将打印的大小进行修改,源代码的size 修改大小之后,关闭原代码,不能预览,因为没有合适的size;现在只是测试过,但是还没有在针式打印机正式测试,A4纸打印机可以打印出设置大小的单据;<body header="nlheader..._netsuite 如何调整打印模版

随便推点

计算100的阶乘末位0的个数_计算100阶乘中0尾数的个数-程序员宅基地

文章浏览阅读605次。 public static void main(String[] args) throws IOException { BigInteger Num = new BigInteger("1"); int i = 1,count = 0; for(;i&lt;=100;i++) { BigInteger I = new BigInteger(i+"");//将int数i转换..._计算100阶乘中0尾数的个数

关于Free版的EclipseUML-程序员宅基地

文章浏览阅读98次。Omondo EclipseUML分为Studio版和Free版两种,我只用过Free版,对于创建EMF类图来说感觉已经够用了。不过和Eclipse的版本比起来,EclipseUML的升级比较缓慢,目前为止最新的版本还是2005年9月27日放出的,这就造成在新版本Eclipse里EclipseUML可能无法正常运行。20050927版本是针对Eclipse 3.1开发的,现在Ec..._free eclipse

第13课 接续符和转义符-程序员宅基地

文章浏览阅读89次。C语言中的接续符(\)是指示编译器行为的利器示例程序如下: 1 #in\ 2 clud\ 3 e <st\ 4 dio.h> 5 6 in\ 7 t m\ 8 ain(\ 9 )10 {11 pri\12 ntf\13 (\14 "Hello D.T.\n"15 )\16 ..._连接he和灵骑bian的第7÷4的余数个字符和h1 tao的字符数

jquery插件之文字无缝向上滚动-程序员宅基地

文章浏览阅读266次。该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧。此插件旨在实现目前较为流行的无缝向上滚动特效,当鼠标移动到文字上时,向上滚动会停止,当鼠标离开时,向上滚动继续。整体代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://..._文字无缝向上滚动插件

EM算法通俗理解-程序员宅基地

文章浏览阅读54次。https://blog.csdn.net/v_JULY_v/article/details/81708386转载于:https://www.cnblogs.com/bingws/p/10607641.html

算法竞赛进阶指南 0x67 Tarjan 算法与有向图连通性_强连通分支的有向无环图-程序员宅基地

文章浏览阅读204次。有向图G=(V,E)中,如果存在一个点r,使得从r出发,那么就可以到达所有的节点,那么称G为一个流图,记作(G,r)_强连通分支的有向无环图

推荐文章

热门文章

相关标签