我需要知道时间SMAP在未来卫星经过一定的位置。
我相信这就是所谓的收购计划,但我不确定。例如哨兵1收购计划。
我发现这网页你可以跟踪SMAP的实际位置和得到一个10天的预测但我更需要一个官方的源。
江南体育网页版地球科学堆栈交换是一个问答网江南电子竞技平台站对于那些感兴趣的地质学、气象学、海洋学、环境科学。注册只需要一分钟。
报名加入这个社区@gerrit指出,Pytroll项目有几个包可能是有用的。回答你的问题,接下来的立交桥下12小时以上一个给定的位置,您可以使用Pyorbital (https://github.com/pytroll/pyorbital):
从pyorbital。或bital import Orbital from datetime import datetime orb = Orbital("SMAP") orb.get_next_passes(datetime.now(), length=12, lon=16, lat=55, alt=0.05)
时间长度,经度和纬度度,alt在公里。这将显示(写这篇文章的时候):
[(datetime。datetime(2020 2, 24岁,13日,14日,54岁,147587),datetime。datetime(2020 2, 24岁,13日,23日,23日,955297),datetime。datetime(2020 2, 24岁,13日,19日,8,924860)),(datetime。datetime(2020 2, 24岁,14日,48岁,41岁,249324),datetime。datetime(1 2020、2、24日,15日,24日,171709),datetime。datetime(2020 2, 24岁,14日,55岁,1,725148)),(datetime。datetime(16 2020 2, 24日,25日,14日,798347),datetime。datetime(2020 2, 24岁,16日,39岁,0,109628),datetime。datetime(2020 2, 24岁,16日,32岁的5,434271)),(datetime。datetime(5 2020、2、24日,18日,14日,617775),datetime。datetime(2020 2, 24岁,18日,15日,43岁,280401年),datetime。datetime(10 2020、2、24日,18日,27日,671621))
每个元组(上升、下降,最高点)
。
现在我们也有pytroll-schedule包,如果你需要一个完整的收购计划,这将允许你例如把重点放在卫星:https://github.com/pytroll/pytroll-schedule
这不是一个卫星收购计划,但它可能让你开始。我使用Python包Skyfield的子卫星SMAP基于最近的点两个线元素集从Celestrak。
请随时留言问题如果需要调整!
我不是一个日期和时间在Python中,专家次
对象有几个转换和格式化方法如果你想让一个表。
# !/usr/bin/env python # - * -编码:utf - 8 - *——从skyfield。api导入主题,负载进口numpy np matplotlib进口。pyplot plt #主要来自https://rhodesmill.org/skyfield/earth-satellites.html resource_satellites_url = ' https://celestrak.org/NORAD/elements/resource.txt ' resource_satellites = load.tle (resource_satellites_url) SMAP = resource_satellites (SMAP的)打印(SMAP)打印(“框架SMAP发现的时代:”,SMAP.epoch.utc_jpl ()) ts = load.timescale = ts.now()天()——SMAP。时代印刷(' {:。3f} days away from epoch'.format(days)) # still from that example: bluffton = Topos('40.8939 N', '83.8917 W') t0 = ts.utc(2020, 2, 23) t1 = ts.utc(2020, 2, 24) t, events = SMAP.find_events(bluffton, t0, t1, altitude_degrees=30.0) for ti, event in zip(t, events): name = ('rise above 30°', 'culminate', 'set below 30°')[event] print(ti.utc_jpl(), name) # WARNING I've hard coded a date here, if you run this later the TLE retrieved # will be newer and so will be less accurate. You'd like the TLE you use to be within # a few weeks (if not a few days) of your date for best accuracy. minutes = range(24*60+1) times = ts.utc(2020, 2, 24, 0, minutes, 0) # Example; every minute for 24-feb-2020 subsat_pts = SMAP.at(times).subpoint() lat, lon = subsat_pts.latitude.degrees, subsat_pts.longitude.degrees subsat_pts_now = SMAP.at(ts.now()).subpoint() lat_now, lon_now = subsat_pts_now.latitude.degrees, subsat_pts_now.longitude.degrees # fudging around to keep the plot from wrapping arond the Earth breakpoints = lon[1:] - lon[:-1] > 10. # for SMAP this means that longitude has wrapped lat, lon = lat[:-1], lon[:-1] lon[breakpoints] = np.nan if True: plt.figure() plt.plot(lon, lat) plt.title('SMAP map every minute for 24-feb-2020, dot is for ts.now()') plt.xlabel('longitude (degs)') plt.ylabel('latitude (degs)') plt.plot([lon_now], [lat_now], 'ok') # put a dot for right now plt.show()