出处:张闯, 吕东辉, 顼超静. 太阳实时位置计算及在图像光照方向中的应用[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 <= 2C = 30.6;
end
if (B == 0) && (Y > 2)C = 31.8;
end
N = 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. [转载]根据两点的经纬度求方位角和距离,等

    转:http://blog.sina.com.cn/s/blog_658a93570101hynw.html 原文地址:根据两点的经纬度求方位角和距离,等作者:多乎哉不多也多亦不多乎实乃少也 最近自己 ...

  2. 两个经纬度偏角_[转载]根据两点的经纬度求方位角和距离,等

    最近自己做的一个小东西要用到经纬度方面的计算,查遍中文网页见到的要么基本上是一帮惜字如金装大爷的"砖家",要么就是像贴膏药一样,啪,一大堆代码往上一贴,一点说明都没有,让人看不懂, ...

  3. 读取rinex的观测时间

    读取观测值文件的观测时间,直接上码 package com.xxx.utils;import java.io.BufferedReader; import java.io.FileReader; im ...

  4. C#语言平面坐标计算,平面坐标转化经纬度,求高手给C# 方法,将下列坐标转化成经纬度...

    平面坐标转化经纬度,求高手给C# 方法,将下列坐标转化成经纬度 平面坐标转化经纬度,求高手给C# 方法,将下列坐标转化成经纬度 53950.65966 98691.8174 53978.58712 9 ...

  5. 300年一遇日全食 洋山港观测时间最长

    <!-- enpproperty <articleid>2980908</articleid><date>2009-06-03 09:09:26.0</ ...

  6. c语言计算日出日落时间_利用日期、经纬度求日出日落时间 C语言程序代码

    展开全部 #define PI 3.1415926 #include #include using namespace std; int days_of_month_1[]={31,28,31,30, ...

  7. 根据经纬度求最近点的三种解法java实现

    文章目录 1. geoHash 2. kdTree算法求最近点 3.暴力法 4.利用elasticsearch或者lucene 1. geoHash 首先对经纬度点进行编码: 利用geoHash把经纬 ...

  8. linux 时间怎么求差值_linux批量计算时间差脚本——awk

    今天碰到一个时间差批量计算的问题,弄好后就写下来,方便积累和分享. 部分数据(一共有40多W条,gmail.csv)如上图所示,已经做过二次处理和排版. 第i行前两列时间记作A[i],后两列记作B[i ...

  9. java中调用System.currentTimeMillis()获取当前时间来求出时间差及程序执行的时间

    package com.test;import java.util.Scanner; //String的连接1000次 class StringOperate{private String str;p ...

最新文章

  1. 盘点一下全网最有趣的代码注释
  2. 三百行python代码的项目_使用300行代码创建一个分布式系统
  3. 根据按钮的状态显示hover
  4. 具有链接资源的Spring RestTemplate
  5. 我的世界服务器设置op显示,我的世界设置op权限 | 手游网游页游攻略大全
  6. PhotoKit 照片库的管理-获取图像
  7. 理论基础 —— 树 —— 树的存储结构
  8. 解决Oracle 本地可以连接,远程不能连接问题
  9. zabbix配置飞信报警
  10. 缓存DNS服务器和主从DNS服务器的快速搭建详解——续
  11. avrdude: stk500_getsync(): not in sync: resp=0x00
  12. “win+PrtSc”图片没有保存到图片文件夹中的问题
  13. python关联规则挖掘_通过Python中的Apriori算法进行关联规则挖掘
  14. oracle 2的22次方,22的2次方(2的22的2次方等于多少)
  15. Spring Security - 21 记住我功能
  16. Ubuntu查看IP地址
  17. 计算机休眠拖动鼠标不起作用,电脑待机后按鼠标无法唤醒怎么办
  18. 拍照扫描怎么弄?你可以试一下这两个方法
  19. UEFI EDK2 遇到的问题集合
  20. 花火之声不闻于耳 [线段树]

热门文章

  1. 给IOS初学者及新手的建议
  2. oracle中删除级联方法,Oracle 外键级联删除
  3. 运维python要掌握到什么程度_《运》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
  4. python中function takes exactly_Python 'takes exactly 1 argument (2 given)' Python error
  5. 树莓派4B上安装OpenWrt/LEDE
  6. 【正点原子FPGA连载】第一章 ZYNQ简介 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0
  7. 通俗讲解CDN是什么
  8. 海信android电视直播软件,2017年,海信电视看电视必装的四大直播软件
  9. SpringBoot项目实现短信发送接口开发
  10. SylixOS操作系统自学经历(一)