A A A A Автор Тема: Определение ПСТ по TLE  (Прочитано 8362 раз)

0 Пользователей и 1 Гость просматривают эту тему.

art193

  • Гость
Определение ПСТ по TLE
« : 31 Окт 2008 [15:11:31] »
   Подскажите, пожалуйста, математические формулы определения подспутниковой точки (широта и долгота в градусах) на основе данных, имеющихся в TLE. Просто какие значения брать из TLE и что с ними делать, чтоб получить координаты ПСТ, по возможности с примером.

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 546
  • Благодарностей: 69
  • Александр Лапшин
    • Сообщения от Sleepwalker
Re: Определение ПСТ по TLE
« Ответ #1 : 01 Ноя 2008 [11:26:41] »
Вам как нужно, что бы было правильно и точно, или достаточно сильно приближенных значений?

art193

  • Гость
Re: Определение ПСТ по TLE
« Ответ #2 : 01 Ноя 2008 [14:39:29] »
   Точности достаточно до двух знаков после запятой... (пр. 160,23 з.д.)

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 546
  • Благодарностей: 69
  • Александр Лапшин
    • Сообщения от Sleepwalker
Re: Определение ПСТ по TLE
« Ответ #3 : 01 Ноя 2008 [16:21:36] »
Дело не в точности, а в корректности. Если делать как положено, то нужно иметь ввиду, что TLE данные предполагают использование определенной модели - SGP/SDP, и никакой другой. Описание модели можно посмотреть здесь http://amsat.org/amsat/ftp/docs/spacetrk.pdf
Если вопрос корректности не стоит то можно тупо вытащить орбиту из элементов по формату описанному http://www.space-track.org/tle_format.html и воспользоваться преобразованием оскулирующих элементов (на самом деле они средние) в прямоугольные координаты в инерциальной системе (METE). Из нее уже получаются координаты ПСТ. Какая уж получится точность, не известно :)
« Последнее редактирование: 01 Ноя 2008 [16:24:52] от Sleepwalker »

art193

  • Гость
Re: Определение ПСТ по TLE
« Ответ #4 : 01 Ноя 2008 [23:24:55] »
   Описание модели SGP/SDP есть, но как из них получить ПСТ? Соответствующего описания там нет, да и не силен я сильно не то, чтобы в английском, сколько в самой астрономии, поэтому и спрашиваю про готовые мат. формулы. Или объясните, пожалйста, что делать с результатами расчетов по модели SGP/SDP, чтоб получить подспутниковую точку.

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 546
  • Благодарностей: 69
  • Александр Лапшин
    • Сообщения от Sleepwalker
Re: Определение ПСТ по TLE
« Ответ #5 : 02 Ноя 2008 [12:09:40] »
На выходе модели Вы получите прямоуголные координаты в инерциальной СК, далее, зная звездное время, используя пример можно получить ПСТ.

получение ПСТ рассмотрено тут:
оригинал http://celestrak.com/columns/v02n03/
перевод http://space.kursknet.ru/ts_kelso/russian/v02n03/v02n03.sht

пример:
VECTOR CSGP4_SDP4::CalculateLatLonAlt(VECTOR vPOS, double time)
{
// Reference:  The 1992 Astronomical Almanac, page K12.
static VECTOR vLLA;
double lat,lon,alt;
double theta,r,e2,phi,c;
        double f = 1/298.26 ;//{Earth flattening (WGS '72)}

vLLA.x = vLLA.y = vLLA.z = vLLA.w = 0.0;
lat = lon = alt = 0.0;
theta = r = e2 = phi = c = 0.0;

theta = atan2(vPOS.y,vPOS.x);
// theta = AcTan(vPOS.y,vPOS.x);
lon = Modulus(theta - ThetaG(time),2.0*PI);

r = sqrt(sqr(vPOS.x) + sqr(vPOS.y));
e2 = f*(2.0 - f);
lat = AcTan(vPOS.z,r);
do {
phi = lat;
c = 1.0/sqrt(1.0 - e2*sqr(sin(phi)));
lat = AcTan( vPOS.z + xkmper*c*e2*sin(phi),r);
} while (fabs(lat - phi) > 1E-10);//1E-7); For speeding up calculation 7 digit
//is exact enough (123.45
alt = r/cos(lat) - xkmper*c;

vLLA.x = lat*180.0/PI;   // radians
vLLA.y = lon*180.0/PI;   // radians
vLLA.z = alt; // kilometers
vLLA.w = theta*180.0/PI; // radians
return vLLA;
}

double CSGP4_SDP4::ThetaG(double jd)
{
// Reference:  The 1992 Astronomical Almanac, page B6.
double UT,TU,GMST, dummy;
  UT = modf(jd + 0.5, &dummy);
  jd -= UT;
  TU = (jd - 2451545.0)/36525.0;
  GMST = 24110.54841 + TU * (8640184.812866 + TU * (0.093104 - TU * 6.2E-6));
  GMST = Modulus(GMST + secday*omega_E*UT,secday);
  return (2.0*PI*GMST/secday);
}

« Последнее редактирование: 02 Ноя 2008 [12:11:42] от Sleepwalker »

art193

  • Гость
Re: Определение ПСТ по TLE
« Ответ #6 : 03 Дек 2008 [04:12:27] »
   Так я и не понял, откуда и что там получается. Пишу (пытаюсь...) на Паскале, данную вами функцию переделал, остальное взял с примера, закаченного с этого сайта (там на Паскале расчет дан), запускаю, но результаты не соответствуют (в частности Орбитроновским). Может вы для ясности распишете последовательность вызова функций и передаваемые параметры...

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 546
  • Благодарностей: 69
  • Александр Лапшин
    • Сообщения от Sleepwalker
Re: Определение ПСТ по TLE
« Ответ #7 : 03 Дек 2008 [07:50:26] »
   Так я и не понял, откуда и что там получается. Пишу (пытаюсь...) на Паскале, данную вами функцию переделал, остальное взял с примера, закаченного с этого сайта (там на Паскале расчет дан), запускаю, но результаты не соответствуют (в частности Орбитроновским). Может вы для ясности распишете последовательность вызова функций и передаваемые параметры...

Ничего не понятно. Какие результаты не соответствуют? На каком шаге? Какие исходные данные?
Прямоугольные координаты в МЕТЕ совпадают ? Начинать сверяться нужно на этом шаге.

art193

  • Гость
Re: Определение ПСТ по TLE
« Ответ #8 : 15 Дек 2008 [14:31:11] »
Пределал все под Делфи. Все работает, нормально... Но ПСТ получить не удалось :-(.
Последовательность действий по вызову функций следующая:
1. Определяю Две Линии Элементов;
2. Конвертирую их при помощи Convert_Satellite_Data;
3. В зависимости от значения ideep вычисляю SGP4 или SDP4;
4. Конвертирую полученные данные при помощи Convert_Sat_State;
5. Получаю ПСТ при помощи CalculateLatLonAlt, присланную Вами.

Значения после Convert_Sat_State соответствуют примеру и другим программам расчета SGP4 и SDP4, расчет делаю для одного значения tsince=0, как я понимаю, его должно быть достаточно. Значения ПСТ, полученные таким образом, не соответствую реальности... В чем я ошибаюсь???

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 546
  • Благодарностей: 69
  • Александр Лапшин
    • Сообщения от Sleepwalker
Re: Определение ПСТ по TLE
« Ответ #9 : 15 Дек 2008 [14:50:20] »
Пределал все под Делфи. Все работает, нормально... Но ПСТ получить не удалось :-(.
Последовательность действий по вызову функций следующая:
1. Определяю Две Линии Элементов;
2. Конвертирую их при помощи Convert_Satellite_Data;
3. В зависимости от значения ideep вычисляю SGP4 или SDP4;
4. Конвертирую полученные данные при помощи Convert_Sat_State;
5. Получаю ПСТ при помощи CalculateLatLonAlt, присланную Вами.

Значения после Convert_Sat_State соответствуют примеру и другим программам расчета SGP4 и SDP4, расчет делаю для одного значения tsince=0, как я понимаю, его должно быть достаточно. Значения ПСТ, полученные таким образом, не соответствую реальности... В чем я ошибаюсь???

Окей. Тогда давайте сюда для примера XYZ после Convert_Sat_State и юлианскую дату эпохи элементов.

Upd: Есть подозрение, что Вы в параметр time для расчета ПСТ подаете tsince. Туда юлианскую дату нужно.
« Последнее редактирование: 15 Дек 2008 [14:53:50] от Sleepwalker »

art193

  • Гость
Re: Определение ПСТ по TLE
« Ответ #10 : 15 Дек 2008 [15:02:40] »
Пример TLE:
1 26056U 00002A   08340.23853098  .00000088  00000-0  10000-3 0  4865
2 26056 000.5746 083.1707 0002318 142.0726 134.7604 00.99643563 32538

SDP4

X     42346,1467857657
Y     16,9057018686055
Z     -421,648252175922

XDOT  -0,000684032094947279
YDOT  3,06777284853136
ZDOT  0,00366539951216375

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 546
  • Благодарностей: 69
  • Александр Лапшин
    • Сообщения от Sleepwalker
Re: Определение ПСТ по TLE
« Ответ #11 : 15 Дек 2008 [15:36:38] »
Кстати, а какого порядка ошибки?

Хм, у меня по этим данным немного другие координаты, расходимся на 20 км.

Поглядите в функции ПСТ, нет ли путаницы с осями Y,Z
Судя по тому, что Вы дали, XZ - экваториальная плоскость, а в той функции ПСТ экв. п-ть XY.

Upd: Пардон, с плоскостями все правильно
« Последнее редактирование: 16 Дек 2008 [10:06:52] от Sleepwalker »

art193

  • Гость
Re: Определение ПСТ по TLE
« Ответ #12 : 23 Дек 2008 [11:50:37] »
   Ну, если с плоскостями все нормально, значит получается что у меня неверное определение времени... Ведь все остальное вроде нормально. Кстати, а ошибка в 20 км - это на поверхности Земли? Надо будет потом сравнить получившиеся ПСТ, чтоб определить разницу в градусах...
   Разъясните, пожалуйста, какое время использовать. Я брал значение функции Now, возвращаемое типом данных double. Чувствую, что ошибался, да?

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 546
  • Благодарностей: 69
  • Александр Лапшин
    • Сообщения от Sleepwalker
Re: Определение ПСТ по TLE
« Ответ #13 : 23 Дек 2008 [12:01:53] »
   Ну, если с плоскостями все нормально, значит получается что у меня неверное определение времени... Ведь все остальное вроде нормально. Кстати, а ошибка в 20 км - это на поверхности Земли? Надо будет потом сравнить получившиеся ПСТ, чтоб определить разницу в градусах...
   Разъясните, пожалуйста, какое время использовать. Я брал значение функции Now, возвращаемое типом данных double. Чувствую, что ошибался, да?

Now ? А дайте описание этого метода.
Это должна быть юлианская дата. Для эпохи TLE это будет 2454805.7385309837 или календарная дата 2008/12/5 5:43:29.077 UTC
ПСТ на эту дату
широта:   0.561 Ю
долгота:  160.271 З
« Последнее редактирование: 23 Дек 2008 [12:04:45] от Sleepwalker »

art193

  • Гость
Re: Определение ПСТ по TLE
« Ответ #14 : 23 Дек 2008 [13:04:13] »
  Функция Now возвращает количество дней, прошедших с 1900-го года и равно 39805,9135139699 (сегодня в районе 09:55 UTC). Юлианская отличается на два порядка...
  Подставил ваше значение времени, но результат все равно не сошелся... получилось
XPOS  1,02113946271229
YPOS  -14,3281751429875
ZPOS  -6375,06677027515, т.е.
широта:   1.021 Ю
долгота:  14.328 З
   Что может не соответствовать?
 

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 546
  • Благодарностей: 69
  • Александр Лапшин
    • Сообщения от Sleepwalker
Re: Определение ПСТ по TLE
« Ответ #15 : 23 Дек 2008 [13:07:49] »
  Функция Now возвращает количество дней, прошедших с 1900-го года и равно 39805,9135139699 (сегодня в районе 09:55 UTC). Юлианская отличается на два порядка...
  Подставил ваше значение времени, но результат все равно не сошелся... получилось
XPOS  1,02113946271229
YPOS  -14,3281751429875
ZPOS  -6375,06677027515, т.е.
широта:   1.021 Ю
долгота:  14.328 З
   Что может не соответствовать?
 

Хм
XPOS, YPOS, ZPOS это что за координаты ? ПСТ в прямоугольном гринвиче?

Тут деваться то некуда, откуда не соответствие не пойму...

VECTOR vPOS = {
 42346,1467857657
 16,9057018686055
 -421,648252175922
}

double time = 2454805.7385309837l;

Чему это выражение равно
lon = Modulus(theta - ThetaG(time),2.0*PI);
?
« Последнее редактирование: 23 Дек 2008 [13:14:30] от Sleepwalker »

art193

  • Гость
Re: Определение ПСТ по TLE
« Ответ #16 : 23 Дек 2008 [13:32:53] »
  Расчет Юлианской даты получился путем сложения 2415019 (на 1 января 1900 года) со значением Now, а координаты все равно не бьют...

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 546
  • Благодарностей: 69
  • Александр Лапшин
    • Сообщения от Sleepwalker
Re: Определение ПСТ по TLE
« Ответ #17 : 23 Дек 2008 [13:35:15] »
Да черт с ней с датой. Вы посчитайте выход ПСТ, c теми данными, что я дал. Первое, что может вызвать вопрос это среднее звездное время. Поэтому интересует чему будет равен lon = ...
« Последнее редактирование: 23 Дек 2008 [13:36:49] от Sleepwalker »

art193

  • Гость
Re: Определение ПСТ по TLE
« Ответ #18 : 23 Дек 2008 [13:41:56] »
 lon=-0,25007383205

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 546
  • Благодарностей: 69
  • Александр Лапшин
    • Сообщения от Sleepwalker
Re: Определение ПСТ по TLE
« Ответ #19 : 23 Дек 2008 [13:42:28] »
lon=-0,25007383205

ок, сейчас сверюсь...