From ddffc1222b118c456c04e3cb91840cdf8a6a05c6 Mon Sep 17 00:00:00 2001 From: march3 Date: Thu, 31 Aug 2023 11:24:47 +0800 Subject: [PATCH] =?UTF-8?q?Python=E8=B6=85=E4=BA=BA-=E5=AE=87=E5=AE=99?= =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/celestial_data_service.py | 41 ++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/common/celestial_data_service.py b/common/celestial_data_service.py index 2fa45e0..465e827 100644 --- a/common/celestial_data_service.py +++ b/common/celestial_data_service.py @@ -206,32 +206,33 @@ def set_earth_rotation(earth, dt): earth.planet.rotation_y = -total_hours * 15 - angle_of_day + 15 # 精确调整 -def get_astropy_time(str_time): +def conv_to_astropy_time(str_time): + # 安装 astropy 包 + # pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com astropy + from astropy.time import Time # 时间 from datetime import datetime return Time(datetime.strptime(str_time + '+0800', '%Y-%m-%d %H:%M:%S%z'), format='datetime') -# pip install Astropysics - -if __name__ == '__main__': - # 安装天文包 +def get_earth_pos_vel(dt): + """ + 根据日期时间获取地球的 + @param dt: + @return: + """ + # 安装 astropy 包 # pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com astropy from astropy.coordinates import get_body_barycentric_posvel # 获取天体的坐标pos和速度vel - from astropy.time import Time # 时间 from astropy.coordinates import solar_system_ephemeris import astropy.units as u # 单位 import pytz - - # 获取当前时间 - t = Time.now() - # 指定日期时间 - # t = get_astropy_time('2050-01-01 12:00:00') - - print("北京时间:", t.to_datetime(timezone=pytz.timezone('Asia/Shanghai'))) + print('----------------------------------------') + print("北京时间:", dt.to_datetime(timezone=pytz.timezone('Asia/Shanghai'))) # 打印天体名 # print("天体名:", solar_system_ephemeris.bodies) + # ('earth', 'sun', 'moon', 'mercury', 'venus', 'earth-moon-barycenter', 'mars', 'jupiter', 'saturn', 'uranus', 'neptune') # 获取地球的坐标和速度 - earth_pos_vel = get_body_barycentric_posvel('earth', t) + earth_pos_vel = get_body_barycentric_posvel('earth', dt) print("地球坐标(公里):", [earth_pos_vel[0].x.to(u.km), earth_pos_vel[0].y.to(u.km), earth_pos_vel[0].z.to(u.km)]) @@ -239,5 +240,15 @@ if __name__ == '__main__': [earth_pos_vel[1].x.to(u.km / u.second), earth_pos_vel[1].y.to(u.km / u.second), earth_pos_vel[1].z.to(u.km / u.second)]) - + print('----------------------------------------') # print("速度(公里/秒):", posvel[1] * AU / SECONDS_PER_DAY) + + +if __name__ == '__main__': + from astropy.time import Time # 时间 + + # 获取当前时间 + dt = Time.now() + # 指定未来的日期时间 + # dt = conv_to_astropy_time('2050-01-01 12:00:00') + get_earth_pos_vel(dt) -- GitLab