2015-06-18 62 views
0

我有一些衛星數據,基本上是一個衛星的地理位置,它在給定的時間繞地球轉。這是在SQLite數據庫中以緯度,經度和unixtime保存的數據。這是檢索如下:如何在一個地理區域找到衛星合格率?

latitudes = [] #Long list of latitudes 
longitudes = [] #Long list of longitudes 
unixtimes = [] #Long list of corresponding unixtimes 

所以,我很感興趣區分緯度/經度記錄每個衛星是在相當大的地理區域(每個傳遞)時間。但我不確定我會如何做到這一點。

現在我手動地通過視覺檢查位置圖,發現衛星在該區域的第一個「發生」,然後我以相同的方式發現了下一個事件。時間流逝是每個事件之間的差異。但是,這種傳遞時間隨時間而變化,所以這種方法隨着時間的推移並不準確。另一個問題是它取決於地理位置,如果我想要第一次通過的時間,以及任何其他地理位置的通過時間,我必須再次手動檢查。我已經包含了我的代碼。請注意0​​函數只是我從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。

回答

2

從你的衛星時間(5500秒),我相當肯定你的衛星是空間站。由於使用壽命較短,其他衛星通常在低空(370公里)通常處於活動狀態。

Heavens-above site有許多工具來預測空間站(和其他人)的目擊。 Spot-the-station是致力於提供預測。 Satellites calculations on-line是一個大型的工具集合,也可以幫助你。

如果對這些程序的工作感興趣,可以在源代碼中找到開源項目Predict

當然,Wikipedia必須存在,應用程序的列表和許多庫的參考與預測工具。

注:整數增量很好,但如果您使用numpy.arange,numpy可以爲您提供浮點增量。這非常靈活,您可以使用物理的非縮放值,而不會遇到整數溢出的風險。

相關問題