空间直角坐标转大地坐标和NEU坐标 matlab实现

您所在的位置:网站首页 win10系统选哪个版本玩游戏好用点 空间直角坐标转大地坐标和NEU坐标 matlab实现

空间直角坐标转大地坐标和NEU坐标 matlab实现

#空间直角坐标转大地坐标和NEU坐标 matlab实现| 来源: 网络整理| 查看: 265

这篇文章主要实现XYZ转BLH及XYZ转NEU两个功能,是为了简化一下有需要的同志的工作,原理方面不过多赘述,直接将代码附上

function [B,L,H] = xyz2blh(X,Y,Z) %function: % 将坐标由空间直角坐标系转换为地心坐标系 % input: % X、Y、Z-->空间直角坐标系坐标 % output: % B、L、H-->地心坐标系坐标 %所用常数(CGCS2000坐标系) a=6378137; % e2=0.00669438002290; %第一偏心率的平方 e2=0.0066943799013; %第一偏心率的平方(WGS84) %1.计算大地经度L if (X==0) && (Y>0) L=90; elseif X==0 && Y1e-10 t_B0=t_B1; t_B1=(a*e2*t_B0/sqrt(1+t_B0^2-e2*t_B0^2)+Z)/sqrt(X^2+Y^2); end B=atan2(t_B1,1); %3.计算大地高 N=a/sqrt(1-e2*(sin(B))^2); H=sqrt(X^2+Y^2)/cos(B)-N;

考虑到由空间直角坐标系与北天东坐标系间的转换也比较常用,特补充记录一下

function p1_NEU = xyz2neu(p0_XYZ,p1_XYZ) %function: % 将p1点坐标由空间直角坐标系转换为站心坐标系(站心坐标系原点为p) % input: % p0_XYZ-->测站点坐标 % p1_XYZ-->空间点坐标 % output: % N、E、U-->地心坐标系坐标 % 1.构造旋转矩阵R x0=p0_XYZ(1); y0=p0_XYZ(2); z0=p0_XYZ(3); x1=p1_XYZ(1); y1=p1_XYZ(2); z1=p1_XYZ(3); [B,L,~]=xyz2blh(x0,y0,z0); %调用函数得到纬度B、经度L R=[-sin(B)*cos(L) -sin(B)*sin(L) cos(B) -sin(L) cos(L) 0 cos(B)*cos(L) cos(B)*sin(L) sin(B)]; % 2.实现转换 p1_NEU=R*[x1-x0;y1-y0;z1-z0]; end


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3