MATLAB 根據SP3檔案繪製星下點軌跡

2021-09-30 00:00:47 字數 3972 閱讀 9483

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',)

;set

(gca,

'xlim',[

-180

,180],

'xtick',[

-180:30

:180])

;set

(gca,

'xticklabel',)

;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;

%到頭檔案尾,則跳出迴圈

endline =

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;

endend%各系統對應衛星列數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:

95if

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',[

185385]

/255);

hold on

endend

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

若選擇的系統為北斗,則最終繪製的結果如下:

若採用m_map提供的相關底圖,可得到類似如下結果:

3 檔案命令

一 touch命令 命令名稱 touch 命令所在路徑 bin touch 執行許可權 所有使用者 語法 touch 檔名 功能描述 建立空資料夾 範例 touch japanlovemove.list 二 二 cat命令 命令名稱 touch 命令所在路徑 bin cat 執行許可權 所有使用者 ...

3 檔案包含

1.原理 2.相關函式 3.分類 本地檔案包含 4.不限制檔案 檔案可以為jpg png x等 5.重點 找到可控檔案 6.偽協議 7.具體場景 日誌檔案 8.具體場景 session base64 中的 可有可沒有,在php中不重要,所以,可使用base64讓字元消失 單個字母解釋為空 可以嘗試多...

3 檔案指標

函式 作用tellg 返回讀取檔案指標的當前位置 tellp 返回寫入檔案指標的當前位置 seekg 指標偏移量 將讀取檔案指標移到指定位置 預設為從開頭算起 seekg 指標偏移量,參照位置 將讀取檔案指標移到從參照位置算起的指定位置 seekp 指標偏移量 將寫入檔案指標移到指定位置 seekp...