如何在一个地理区域找到卫星通过率?

时间:2015-06-18 13:48:52

标签: python sqlite satellite

我是上帝的一些卫星数据,基本上是在给定时间环绕地球的卫星的地理位置。这是在SQLite DB中使用纬度,经度和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。

1 个答案:

答案 0 :(得分:2)

从你的卫星期间(5500秒),我相当确定你的卫星是空间站。由于寿命较短,很少有其他卫星通常在低海拔(370公里)处活动。

Heavens-above site有很多工具可以预测空间站(和其他人)的目击。 Spot-the-station致力于提供预测。 Satellites calculations on-line是一大堆工具,也可以提供帮助。

如果对此类程序的工作感兴趣,可以使用源代码开源项目Predict

当然,Wikipedia必须存在,包含应用列表,以及对具有预测工具的许多库的引用。

注意:整数增量很好,但是如果你使用numpy.arange,numpy可以给你浮点增量。这样更灵活,您可以使用物理的非缩放值,而不会遇到整数溢出的风险。