python - 计算从地面看到的卫星的天顶角和仰角
问题描述
我有卫星和地面观察者的纬度、经度和高度。我正在尝试计算从地面看到的卫星的卫星天顶角和卫星方位角。
我目前正在尝试使用astropy
. 该文档描述了如何计算太阳的天顶角和方位角。
我试图将卫星直接放在观察者上方,这样天顶角应该是 0°(或仰角 90°)。
In [41]: ground = astropy.coordinates.EarthLocation(lat=3*u.deg, lon=5*u.deg)
In [42]: sat = astropy.coordinates.EarthLocation.from_geodetic(3*u.deg, 5*u.deg, 700*u.km)
但是,显然.transform_to(AltAz(...))
并不意味着我认为的意思,因为答案不是我想要的:
In [43]: print(sat.get_itrs().transform_to(AltAz(location=ground)))
<AltAz Coordinate (obstime=None, location=(6345216.684243768, 555134.5274868822, 331574.3153428908) m, pressure=0.0 hPa, temperature=0.0 deg_C, relative_humidity=0, obswl=1.0 micron): (az, alt, distance) in (deg, deg, m)
(314.96287134, 63.2970069, 773970.24385554)>
我预计仰角接近 90°,而不是 63°。
pyorbital中也有一些例程,但它似乎不包含我正在寻找的内容。
我相信它也应该可以使用pyephem
,除了这似乎期望我从目录中获得卫星信息。我已经有了纬度,经度,高度。
我也看过,pyproj
但我认为这仅适用于大地水准面的物体。
如何计算从地面观察到的卫星的高度和方位角?
解决方案
稍微清理一下你的输入:
from astropy import units as u
from astropy.coordinates import AltAz, EarthLocation
ground = EarthLocation.from_geodetic(lat=3*u.deg, lon=5*u.deg, height=0*u.km)
sat = EarthLocation.from_geodetic(lat=3*u.deg, lon=5*u.deg, height=700*u.km)
result = sat.get_itrs().transform_to(AltAz(location=ground))
print(result)
这会产生预期的 90 度:
<AltAz Coordinate (obstime=None, location=(6345.21668424, 555.13452749, 331.57431534) km, pressure=0.0 hPa, temperature=0.0 deg_C, relative_humidity=0.0, obswl=1.0 micron): (az, alt, distance) in (deg, deg, km)
(89.99999672, 89.99991123, 700.)>
推荐阅读
- api - InputPhoneContact 没有 len()
- javascript - 将文件放入驱动器 API v3
- python - Python 中的 Cplex - 学生许可
- javascript - 使用我的库对应的 .d.ts 代码检查我的库 .js 代码
- jquery - mvc 应用程序日历在 IE 中不起作用
- c# - c#访问自定义设置文件
- sql - 查询错误 (1241):操作数应包含 1 列
- coinbase-api - 如何使用 Coinbase API 向我的用户发送付款?
- java - 接收一个整数并返回传递的数字的阶乘
- javascript - Vue.js - 在模式内引用输入以更新 Firestore 数据库