从GPS(经度,纬度,时间戳)和(方位角,天顶角)获取天空中点的银河坐标?
给定以下信息:
观察者的位置是通过GPS提供的经度和纬度。
观察者在某个时间(同样是GPS提供的)看向天空中的一个物体,这个物体的方位角和天顶角也被记录下来。
我该如何获取这个天空点的银河坐标呢?
这可以通过PyEphem来实现吗?
我觉得这段代码差不多可以做到:
from datetime import datetime
import ephem
observer = ephem.Observer()
observer.pressure = 0
observer.lon = str(4.95569830927)
observer.lat = str(52.3545603701)
observer.elevation = 56.8426188165
observer.date = ephem.Date(datetime.utcfromtimestamp(1409097608))
ra, dec = observer.radec_of(str(azimuth), str(zenith))
但是,我该如何从这里获取银河坐标呢?
1 个回答
2
你可以使用快速参考中描述的坐标转换工具来生成银河坐标:
http://rhodesmill.org/pyephem/quick.html#coordinate-conversion
下面这个脚本可以接受任意的方位角和天顶角,并将它们转换为银河坐标,结果与NASA的计算器一致,地址是 http://lambda.gsfc.nasa.gov/toolbox/tb_coordconv.cfm
from datetime import datetime
import ephem
azimuth = '45:00'
zenith = '84:00'
ninety = ephem.degrees('90:00')
observer = ephem.Observer()
observer.pressure = 0
observer.lon = str(4.95569830927)
observer.lat = str(52.3545603701)
observer.elevation = 56.8426188165
observer.date = ephem.Date(datetime.utcfromtimestamp(1409097608))
ra, dec = observer.radec_of(str(azimuth), ninety - ephem.degrees(str(zenith)))
# print ra
# print dec
e = ephem.Equatorial(ra, dec, epoch='2000')
g = ephem.Galactic(e)
print g.lon
print g.lat
这里有三个小提示:
要注意,PyEphem总是提到“高度和方位角”,而不是“天顶距离和方位角”,所以脚本需要从90°中减去天顶距离来得到高度。
我认为这些结果与NASA之间的微小误差是由于PyEphem所基于的
libastro
库本身的原因。如果你想自己试试那个NASA计算器,记得它需要将RA以度数表示(!),你可以通过
print ephem.degrees(ra)
这条语句强制PyEphem以度数显示。