大家有没有想过一个问题,已知观测者的位置(地理坐标(b,l)),天体的位置也已知(赤道坐标(α,δ)),怎么求在某一给定时间(utc(y-m-d,h:m:s))天体的方位角和高度角(A,h)?
其实这个问题就是坐标系的变换,就是如何把以观测值为中心的天体的赤道坐标系(α,δ)转到地平坐标系(A,h),直接想象怎么转换的话是有点困难的 ,我们可以借助一个中间的坐标系,时角坐标系(t,δ),来实现二者的转换。
1.赤道坐标系转到时角坐标系
时角坐标系和赤道坐标系的第二个坐标参数赤纬是相同的,不同的是第一个参数时角t和赤经α,不过时角t和和赤经α可以通过恒星时
utc时间和儒略日的关系为:
或者:
其中y,m,d分别代表年月日,h=h+m/60+s/3600(此处m代表分钟)
格林尼治恒星时和儒略日之间的关系为:
上面这个公式以时间(小时:分钟:秒)为单位,可以把其中的分钟和秒化为小时,这样就可以使用一个数字表示;下面还要把时间转为对应的角度,小时转为角度只需乘以15。
其中:
格林尼治恒星时转到地方恒星时:(恒星时是顺时针增大,经度是逆时针增大,所以加,这里的单位是角时)
天体的时角为:(赤经加上时角等于恒星时)
2.时角坐标系转到地平坐标系
一些天球坐标系以及它们之间的转换:
Astronomical coordinate systemsencyclopedia.thefreedictionary.com![58c45751f4215a0b853e958aedd5e73c.png](https://i-blog.csdnimg.cn/blog_migrate/e76a9b2852e7d51ed3d7fdd6b7def582.png)
我们要求的地平坐标系是左手系,第一轴指向为正北,第二轴指向为正东,第三轴指向为天顶,方位角为以第一轴为起点,顺时针旋转的角度,范围为[0,360)。
![238f073728109df3d06ab9bf9be19497.png](https://i-blog.csdnimg.cn/blog_migrate/036fff102cf1ed19d303097dca587b88.png)
结果根据赤纬值计算其在日落时角t呢?在以观测者天顶Z、北极点P、天体的位置σ三个点为球面三角形PZσ的三个点,已知PZ、Pσ、Zσ,利用球面三角知识,很容易推出:
其中z是天顶距,和高度角互余,即
从而可以导出:
实际计算的时候由于程序自带的atan函数返回的范围是
下面的代码使用了三种方法来计算金星的方位角和高度角:
(1)直接使用ephem库直接输出
(2)使用ephem库得到金星的赤经赤纬,构造一个天体,使用ephem库的az和alt函数输出
(3)使用本文给出的方法
from
结果:
根据公式直接计算: 276:54:07.1 38:45:11.1
ephem函数构造天体 276:40:58.0 39:07:22.9
ephem函数已有天体 276:40:58.0 39:07:11.1
公式计算儒略日: 2458949.96275463
ephem函数计算 2458949.9627546296
公式计算恒星时: 2.131514935979037
ephem函数计算 2.123473429491178
角度差: 0.4607443826814002
可以看出,公式得到的结果和ephem函数计算的结果有一点差距,但误差在角分级别,原因在于恒星时计算还不够精确,儒略日计算基本没有差异。
只要给出观测者位置,天体的位置,观测时间,就可以给出天体的方向;反过来,给出观测者位置,观测时间,指向,就可以给出天上那一点的赤经赤纬,这也是手机上的一些天文APP如stellarium、star walk、星图等能识别出星星的原理。
需要说明的一些内容:
1.由于地球极移的影响,观测值位置也在变化
2.由于岁差章动的影响,天上星星的相对位置也在改变
3.上面使用的观测时间是utc,实际应该先转为ut1,再去求时角,因为地球并不是匀速自转
4.上面求得的方位角高度角没有考虑大气折射、视差、光行差、引力弯曲等一些因素的影响
有空我再实际验证一遍上面的公式,之前很早就想过这个问题,发现实际写下来发现没那么简单,要考虑的东西挺多的,涉及了天体测量学的很多问题。