Как можно использовать SPICE для расчета восхода и захода солнца?

Я видел, как здесь упоминалось , что SPICE можно использовать для расчета восхода и захода солнца. Как?

Согласно официальной документации , SPICE используется для расчета:

  • Преобразование системы времени
  • Положения космических аппаратов и природных тел
  • Ориентация космического корабля и приборов
  • Преобразования системы отсчета
  • Углы освещения

Я знаю, что восход и закат можно рассчитать по координатам Солнца и уравнению восхода солнца .

Мне было интересно, есть ли у SPICE специальный алгоритм для этой цели?

Это интересный и законный вопрос; используя SPICE, вы можете указать местоположение на многих телах Солнечной системы, используя широту и долготу, и рассчитать высоту и азимут другого тела, и, по крайней мере, для Земли вы можете сделать поправку на атмосферную рефракцию, и я верю, что SPICE поможет вам найти время, когда высота равна нулю (восход/закат). Вот пример того, как это делается с веб-сайтом JPL Horizons, который, я думаю, сам использует SPICE. Но мне интересно, если в дополнение к вашему вопросу, который вы задали, вам было бы интересно также попробовать
…что-то, что может быть намного проще? Если вы хотите побаловаться с Python, загляните на rhodesmill.org/skyfield/almanac.html Skyfield использует те же эфемериды разработки JPL , что и Horizons и SPICE, но он намного проще и интуитивно понятен в использовании, потому что он современный. Реализация Python, а не что-то, изначально разработанное для карьерных планировщиков миссий JPL, использующих мейнфреймы в 1980-х годах . Какая разница 40 лет!

Ответы (1)

Я не эксперт SPICE, но вот несколько возможных решений (если, конечно, вы не хотите попробовать методы Skyfield Almanac !)

Первая возможность, но все это может не сработать

этот ответ ссылается на этот комментарий , ссылается на учебные пособия SPICE, обновленные 11 декабря 2019 г., ссылается на подсистему SPICE Geometry Finder (GF) презентации из 69 слайдов; Поиск времени наступления заданных геометрических условий на январь 2020 года.

  • Многие программы SPICE вычисляют геометрический параметр в заданное время t, т.е. x = f(t). Пример: 30 марта 2011 г., 14:57:08, на какой высоте находится космический корабль над Марсом?
  • Подсистема поиска геометрии делает обратное: она находит время, когда происходят указанные геометрические события.

GF предоставляет два основных типа API для поиска событий.

  • Логическое: геометрическое условие (событие) истинно или ложно. - Числовое: геометрическая величина имеет заданное значение, находится в заданном диапазоне или достигла локального или глобального максимума или минимума.

В вашем случае вы бы указали положение на теле, а затем искали время, когда высота была 0 или 0+/- маленькая.

Другая возможность, похоже, это именно то, что вы ищете

  • https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/cspice/spkcpo_c.html

    Примеры

    Численные результаты, показанные для этих примеров, могут различаться на разных платформах.
    Результаты зависят от ядра SPICE, используемого в качестве входных данных, компилятора и вспомогательных библиотек, а также от конкретной арифметической реализации машины .

    1. Вычислите кажущийся солнечный азимут и возвышение, как видно из заданной точки поверхности на земле.

      Описание задания

      В этом примере мы будем использовать местоположение станции DSN
      DSS-14 в качестве точки поверхности.

      Мы выполним вычисление солнечного азимута и высоты двумя способами:

      • Использование ядра кадра станции для спецификации
        топоцентрической системы отсчета с центром в DSS-14.

      • Поточное вычисление преобразования из привязанной к земле и центрированной по земле системы отсчета ITRF93 в топоцентрическую систему отсчета с центром в DSS-14.

      Обратите внимание, что результаты двух вычислений будут немного отличаться. Есть три источника различий:

      1. Положение станции зависит от времени из-за движения тектонических плит, и эпохи положений станций, используемые для определения осей топоцентрической системы отсчета, в этих двух случаях различны. Это приводит к различной ориентации осей кадра относительно кадра ITRF93.

      2. В этих двух вычислениях используются разные радиусы Земли; это приводит к вычислению различных геодезических широт станции. Это различие также влияет на ориентацию топоцентрического кадра относительно ITRF93.

      3. Движение станции между ET и эпохой, в которой указан кадр DSS-14_TOPO, вносит очень небольшой сдвиг --- порядка 10 см --- в вектор положения станции-солнца, выраженный в кадре ITRF93.

и там еще много чего.

Кажется, вы можете сделать то же самое в Python, используя SpicyPy

Найдите азимут и высоту видимого положения Луны, как видно со станции DSN DSS-13, выполнив следующие шаги:

  1. Найти вектор видимого положения Луны относительно станции DSN DSS-13 в топоцентрической системе отсчета DSS-13_TOPO в эпоху ET. Используйте коррекции светового времени и звездной аберрации.

Для этого шага вам потребуется загрузить SPK-файл станции, содержащий векторы положения геоцентрической станции, а также ядро ​​кадра, задающее топоцентрические опорные кадры с центром на соответствующих станциях DSN. (Также потребуются другие ядра; вы должны выбрать их.)

  1. Преобразуйте вектор положения в широтные координаты. Используйте подпрограмму spiceypy.reclat для этого вычисления.

  2. Вычислите азимут и высоту Луны следующим образом: азимут является отрицательным значением топоцентрической долготы и лежит в диапазоне 0-360 градусов; высота равна топоцентрической широте. Отобразите результаты в градусах.

Спасибо за подробный ответ