根據觀測時間,經緯度,求太陽高度角

2021-07-15 02:34:50 字數 1791 閱讀 7082

出處:張闖, 呂東輝, 頊超靜. 太陽實時位置計算及在影象光照方向中的應用[j]. 電子測量技術, 2010, 33(11):87-89.

演算法描述如上,不過有兩處錯誤:

l = (d+e/60)/15;        %經度訂正

omega = (tt-12)*15;%太陽時角

**如下:

nf = 2010; %年份 

y = 3; %月

%r = 25; %日

d = 121; %觀測處經度的度值

e = 0.4*60; %觀測處經度的分度值

phi = 31;%觀測地的緯度

%s=16; %觀測時的時值

%f=32; %觀測時的分值

r = [17 17 19 19 25 25 25];

s = [14 14 9 10 15 15 16];

f = [20 30 56 11 41 47 32];

%% 計算t

n0 = 79.6764+0.2422*(nf-1985)-floor((nf-1985)/4);

%積日n

a = nf/4;

b = a-floor(a);

c = 32.8;

if y <= 2

c = 30.6;

endif (b == 0) && (y > 2)

c = 31.8;

endn = floor(30.6*y-c+0.5)+r;

%積日修正值dn

l = (d+e/60)/15; %經度訂正

w = (s+f)/60; %時刻訂正

dn = (w-l)/24;

t = n-n0+dn

%t = (floor(30.6*y-c+0.5)+r)+((s+f/60)-(d+e/60)*15)/24-(79.6764+0.2422*(nf-1985)-floor((nf-1985)/4));

%% 日角

theta = 2*pi*t/365.2422;

theta = theta*(pi/180);

%% 太陽赤緯

delta = 0.3723+23.2567*sin(theta)+0.1149*sin(2*theta)-0.1712*sin(3*theta)-0.758*cos(theta)+0.3656*cos(2*theta)+0.0201*cos(3*theta)

%% 時差

eq = 0.0028-1.9857*sin(theta)+9.9059*sin(2*theta)-7.0924*cos(theta)-0.6882*cos(2*theta);

%% 太陽時角

lc = 4*(d-120);

tt = (s+f/60+lc/60+eq/60);

omega = (tt-12)*15;

%% 轉換為弧度制

delta = delta*(pi/180);

phi = phi*(pi/180);

omega = omega*(pi/180);

%% 太陽高度角

hs = asind(sin(phi)*sin(delta)+cos(phi)*cos(delta).*cos(omega))

驗證資料:

根據經緯度獲取當地時間

計算時間 1 先根據經度計算出時區 2 然根據本地時區推算出其他地方時間 已中國上海為例 東區快乙個小時 西區慢乙個小時 東經和西經,分別用 e 和 w 表示。東經為正數,西經為負數。計算的區時 已知區時 已知區時的時區 要計算區時的時區 注 東時區為正,西時區為負 function znoe ti...

mysql根據經緯度求兩地距離

1.兩點距離 1.4142135623730951 select st distance point 0,0 point 1,1 select st distance point 120.10591,30.30163 point 120.13026,30.25961 mysql 5.6 新增 2.兩...

sql server 根據經緯度求任意兩點的距離

create function dbo.getearthdistance lat為緯度,lng為經度,ab為任意兩點 lata real,lnga real,latb real,lngb real returns float asbegin 所求距離 千公尺 declare distance rea...