【MATLAB】根据SP3文件绘制星下点轨迹
【MATLAB】根据SP3文件绘制星下点轨迹
XYZ与BLH转换的代码参考:ground track.py
@Pan Li. Email:[email protected]
@Jiahuan Hu. Email:[email protected]
本方法通过读取精密星历中的卫星坐标进行直接的星下点轨迹绘制,并实现了对GNSS系统的选择,示例所给的SP3文件便给出了GPS、GLONASS、Galileo、BDS和QZSS,可进行系统的自由选择,代码如下所示:
%%%%根据SP3文件绘制星下点轨迹 h = geoshow('landareas.shp', 'FaceColor', 'c'); grid on hold on xlabel('Longitude'); ylabel('Latitude'); set(gca,'Ylim',[-90,90],'ytick',[-90:30:90]); set(gca,'yticklabel',{'90°S','60°','30°','0°','30°','60°','90°N'}); set(gca,'Xlim',[-180,180],'xtick',[-180:30:180]); set(gca,'xticklabel',{'180°W','150°','120°','90°','60°','30°','0°','30°','60°','90°','120°','150°','180°E'}); set(gca,'Box','on'); set(gca,'FontSize',10,'Fontname', 'Times New Roman','Fontweight', 'bold'); set(gca,'GridAlpha',1,'GridLineStyle','--'); title('BDS Satllite track','FontSize',14,'Fontweight', 'bold'); %sp3文件读取 file='igs20730.sp3'; fid = fopen(file,'rt'); while 1 %头文件读取 line = fgetl(fid); answer = findstr(line(2),'##'); if ~isempty(answer) line = fgetl(fid); nsat=str2num(line(4:6)); sys = line(10:60); for i=1:5 line = fgetl(fid); sys = [sys,line(10:60)]; end end; for i=1:5 ss='GRECJ'; sns(i)=length(findstr(sys,ss(i))); end answer = findstr(line(1),'/*'); if ~isempty(answer), break; end; %到头文件尾,则跳出循环 end line = fgetl(fid); line = fgetl(fid); line = fgetl(fid); for i=1:24*4 line = fgetl(fid); for j=1:nsat line = fgetl(fid); X(i,j)=str2num(line(6:18)); Y(i,j)=str2num(line(20:32)); Z(i,j)=str2num(line(34:46)); [B0,L0]=XYZtoBLH(X(i,j),Y(i,j),Z(i,j)); B(i,j)=B0; L(i,j)=L0; end end %各系统对应卫星列数 G=1:sns(1); R=sns(1)+1:sns(1)+sns(2); E=sns(1)+sns(2)+1:sns(1)+sns(2)+sns(3); C=sns(1)+sns(2)+sns(3)+1:sns(1)+sns(2)+sns(3)+sns(4); J=sns(1)+sns(2)+sns(3)+sns(4)+1:sns(1)+sns(2)+sns(3)+sns(4)+sns(5); % for j=[G,R,E,C] for j=[C] %%%%在此选择GNSS系统(GRECJ)%%%% for i=1:95 if L(i,j)-L(i+1,j)<6&& L(i,j)-L(i+1,j)>-6 plot(L(i:i+1,j)*57.3,B(i:i+1,j)*57.3,'MarkerSize',8,'linewidth',2,'color',[18 53 85]/255); hold on end end end %WGS84坐标转换到大地经纬度 function [b,l] = XYZtoBLH(x,y,z) v=6378137.0; e2=(1.0/298.257223563)*(2-(1.0/298.257223563)); r2=x*x+y*y; b=atan(z/(sqrt(r2))); l=atan2(y,x); h=sqrt(r2+z*z)-v; end 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
若选择的系统为北斗,则最终绘制的结果如下:
网址:【MATLAB】根据SP3文件绘制星下点轨迹 https://m.mxgxt.com/news/view/1289411
相关内容
[转载]卫星的 两行星历 及转化为轨道六根数的MATLAB程序星下点轨迹
Matlab与Arduino联合应用——GUI界面(一)
matlab图像为什么格式,窝窝电影院多多影院?
董洁携子共绘星光轨迹,引领未来娱乐新篇章
家谱图绘制软件
Q萌五杀团VS英雄传说星之轨迹网易版
运动轨迹记录软件哪个好?记录运动轨迹的app有哪些?运动轨迹app推荐
关系图在线绘制软件,教你快速绘制关系图
诸神战纪之黄金骑士VS英雄传说星之轨迹网易版
随便看看
- 京圈格格关晓彤太子爷陈飞宇公子张若昀,扒一下混京圈的年轻皇族
- wo说我喜欢李:娱乐圈的人脉之称张大大再次晒出与美女明星的合照,这次是与李沁和金晨的合照,引发网友热议。 在这张合照中,张大大、李沁和金晨三位明星并肩而立,笑容灿烂。他们的颜值各有千秋,张大大阳光帅气,李沁清新脱俗,金晨则时尚抢眼。不仅如此,他们之间的深厚友情更是让人羡慕。在娱乐圈这个充满竞争和压力的地方,能够拥有如此亲密无间的友情实属难得。从照片中可以看出,三人关系十分亲密,仿佛是一艘友谊的小船...
- 人脉在娱乐圈真的太重要啦,就拿...@伱是偶维一的动态
- 一代新兵之八极少年幕后花絮
- 电视剧公主抱是怎么拍的?看到幕后花絮,导演都忍不住笑了!

