Как узнать скорость прохождения спутников над географической областью?

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


person bjornasm    schedule 18.06.2015    source источник


Ответы (1)


Судя по периоду вашего спутника (5500 секунд), я вполне уверен, что вашим спутником является космическая станция. Очень немногие другие спутники обычно активны на этой малой высоте (370 км) из-за малого срока службы.

На сайте Heavens-above есть множество инструментов для прогнозирования появления космической станции (и других). Определите станцию ​​, предназначенная для этого и предоставляет прогнозы. Онлайн-расчеты спутников - это большой набор инструментов, которые тоже могут помочь.

Если вы заинтересованы в работе таких программ, доступен проект с открытым исходным кодом Predict с исходный код.

Конечно, должна присутствовать Википедия со списком приложений и ссылками на многие библиотеки с инструменты для прогнозов.

Примечание. Целочисленные приращения - это нормально, но numpy может дать приращения с плавающей запятой, если вы используете numpy.arange. Это гораздо более гибкий подход, и вы можете работать с физическими немасштабируемыми значениями без риска столкнуться с целочисленными переполнениями.

person jcoppens    schedule 18.06.2015