我有一些卫星数据,这些数据本质上是一颗卫星在给定时间绕地球一周的地理位置。这是在SQLite数据库中以纬度,经度和unixtime保存的数据。检索方式如下:
latitudes = [] #Long list of latitudes
longitudes = [] #Long list of longitudes
unixtimes = [] #Long list of corresponding unixtimes
因此,我有兴趣区分卫星每次在相当大的地理区域(每次通过)时的纬度/经度记录。但是我不确定我将如何做到这一点。
现在,通过目视检查位置图,我手动找到了该区域中卫星的第一次"出现",然后我以同样的方式找到了下一次出现。然后,流逝的时间就是每个事件之间的差异。但是,此流逝时间会随时间而变化,因此此方法随时间推移并不准确。另一个问题是它取决于地理位置,如果我想要第一次通过的时间,以及任何其他地理位置的经过时间,我必须再次手动检查。我已经包含了我的代码。请注意,seq
函数只是我从 SO 检索到的一个函数,它使我能够迭代非整数增量。
def seq(start, end, step):
assert(step != 0)
sample_count = abs(end - start) / step
return itertools.islice(itertools.count(start, step), sample_count)
gridsize = 5 #Unit: degrees
upperleftlong = #Upper corner of geographical area
upperleftlat = #Upper corner of geographical area
lowerrightlong = #Lower corner of geographical area
lowerrightlat = #Lower corner of geographical area
passrate = 5500 #Time between passings in seconds
start = 1498902400 #Time of first passing
end = 1498905700 #Approximately passing length
numberofpassings = 600 #Number of passings that should be checked for
for p in range(0,numberofpassings+1):
start = 1398903400+passrate*p
end = 1398905400+passrate*p
for i in seq(lowerrightlat, upperleftlat+gridsize, gridsize):
for j in seq(upperleftlong, lowerrightlong+gridsize, gridsize):
positions = getPositionsFromDB(j,i,start,end,gridsize,databasepath, con)
那么,有没有人有一种聪明的方式来表示通过率、通过时间并发现属于每次通过的地理位置?
我正在使用Python和SQLite。
从你的卫星周期(5500秒)开始,我相当确定你的卫星是空间站。由于寿命短,很少有其他卫星通常在低空(370公里)活跃。
天上站点有许多工具来预测空间站(和其他空间站)的目击。Spot-the-station是专用的,并提供预测。在线卫星计算是一个庞大的工具集合,也可以提供帮助。
如果对此类程序的工作原理感兴趣,可以使用开源项目Predict
提供源代码。当然,维基百科必须存在,有一个应用程序列表,以及许多带有预测工具的库的引用。
注意:整数增量很好,但如果使用 numpy.arange,numpy 可以为您提供浮点增量。这更加灵活,您可以使用物理的非缩放值,而不会遇到整数溢出的风险。