Я получил некоторые спутниковые данные, которые, по сути, являются географическим положением спутника, который вращается вокруг Земли в данный момент. Это данные, сохраненные с широтой, долготой и unixtime в базе данных SQLite. Это получается следующим образом:
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.