天和空间站凌月凌日时间计算的尝试

本文介绍了作者使用Python尝试计算天和空间站凌月时间的过程,通过两种思路实现:空间站和月球在天球的赤经和赤纬差值极小,以及两者夹角为0。虽然计算存在误差且未考虑月相等因素,但代码能初步估算凌月时间,并表达了与爱好者交流和进一步优化的愿望。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近对空间站过境、凌日月时间计算产生了兴趣,之前写了空间站过境的代码,接着该空间站凌月时间计算了。在网上搜索没有现成的,暂时也没找到相关算法的介绍。网上找到只有这个可以查询国际空间站凌日月时间的网站。找不到就自己尝试办法吧。凌月无非就是在地面观察点看到两者的位置重合了,两条思路:1.空间站和月球在天球的赤经和赤纬差值极小即可,2.两者从观察点看的夹角为0,根据这两条思路尝试写代码。首先可以把查询时间段内能过境本地的时间筛选出来,这个已经在空间站过境时间计算的代码里实现,并且可已简化计算,只要把过境最高点大于10°(太低了看不到)的升降到地平线时的时间算出来即可。然后分别计算各时间段内两者赤经赤纬差值最小值或夹角最小值。值越小说明两者距离越近。
下面是自己尝试写的代码,代码比较乱,没怎么整理,计算后在stellarium上模拟。(编程和天文都是纯业余爱好,轻喷)

"""
使用skyfield计算空间站凌日月时间
delcomp 2021-06-25
"""
# Topos 已弃用 建议使用wgs84
from skyfield.api import load, wgs84
from skyfield.searchlib import find_maxima, find_minima, _find_discrete, find_discrete
from skyfield.trigonometry import position_angle_of
from skyfield.constants import tau, DAY_S
from pytz import timezone
import numpy as np
import os
import time
from datetime import datetime, timedelta
from my_function import BD09_to_GCJ02, LatLng2DMS, GCJ02_to_GPS84, BD09_to_WGS84

start_time = time.perf_counter()

# 百度地图经纬度
LAT = xx.xx1
LNG = xxx.xx

STATION = 'TIANHE'
# STATION = 'ISS (ZARYA)'
DAYS = 300
ELEVATION = 0  # 观察点高度
ALT_DEF = 10  # 指定的最低高度
DT_FSTR = '%Y-%m-%d %H:%M:%S'  # 时间格式化串

beijing = timezone('Asia/Shanghai')  # 中国时区
stations_url = 'http://celestrak.com/NORAD/elements/stations.txt'
stations_file = 'stations.txt'
ts = load.timescale()
# satellites = load.tle_file(stations_url, reload=True)
if not os.path.exists(stations_file):
    print('本地文件不存在,下载stations文件...')
    satellites = load.tle_file(stations_url, reload=True)
else:
    satellites = load.tle_file(stations_file)
    print('加载本地stations文件!')
    # 根据卫星名称构建卫星字典
    by_name = {
   
   sat.name: sat for sat in satellites}
    tianhe = by_name[STATION]
    # 文件旧了,更新
    t = ts.now()
    days = t - tianhe.epoch
    print('{:.3f} days away from epoch'.format(days))
    if abs(days) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值