Путаница с использованием dec / ra для вычисления подлунного местоположения

Мне нужно вычислить кажущийся азимут и углы возвышения, а также сублунные широты и долготы для заданной даты / времени. Углы азимут / эллипс, которые я получаю, в целом согласуются с другими источниками (MoonCalc.org, Horizons и т. Д.), Но нет хороших источников сравнения для сублунных широт и долготы. Что еще более важно, я сомневаюсь, что широта / долгота, которую я получаю, использую значения dec / ra, потому что ra практически не меняется в течение длительного времени.

Вот основной звонок, который я делаю:

roc.date='2018/1/1 01:00:00'
moon=ephem.Moon(roc)
print('rocMoonTest: %s UTC-4, lat/lon = %0.4f [+N], %0.4f [+E]' %
    (roc.date, math.degrees(roc.lat), math.degrees(roc.lon)))
print('Moon dec/ra     = %s [+N], %s [+W]' % (moon.dec, moon.ra ))
print('Moon a_dec/a_ra = %s [+N], %s [+W]' % (moon.a_dec, moon.a_ra ))
print('Moon g_dec/g_ra = %s [+N], %s [+W]' % (moon.g_dec, moon.g_ra ))
print('Moon az/el      = %0.4f, %0.4f' %
    (math.degrees(moon.az), math.degrees(moon.alt)))

И затем я повторяю это каждые 3 часа. Ниже представлен результат:

rocMoonTest: 2018/1/1 01:00:00 UTC-4, lat/lon = 43.0000 [+N], -78.0000 [+E]
Moon dec/ra     = 18:53:07.1 [+N], 5:43:03.33 [+W]
Moon a_dec/a_ra = 19:22:21.3 [+N], 5:39:38.43 [+W]
Moon g_dec/g_ra = 19:22:44.7 [+N], 5:40:41.41 [+W]
Moon az/el      = 105.3953, 43.0670

rocMoonTest: 2018/1/1 04:00:00 UTC-4, lat/lon = 43.0000 [+N], -78.0000 [+E]
Moon dec/ra     = 19:07:55.4 [+N], 5:49:00.24 [+W]
Moon a_dec/a_ra = 19:32:24.2 [+N], 5:47:42.22 [+W]
Moon g_dec/g_ra = 19:32:35.1 [+N], 5:48:45.29 [+W]
Moon az/el      = 169.5907, 65.8406

rocMoonTest: 2018/1/1 07:00:00 UTC-4, lat/lon = 43.0000 [+N], -78.0000 [+E]
Moon dec/ra     = 19:13:15.7 [+N], 5:54:49.89 [+W]
Moon a_dec/a_ra = 19:41:07.2 [+N], 5:55:47.50 [+W]
Moon g_dec/g_ra = 19:41:05.5 [+N], 5:56:50.65 [+W]
Moon az/el      = 246.5737, 49.4664

Как и ожидалось и подтверждено углами аз / эл, Луна движется с востока на запад по мере вращения Земли и достигает максимальной высоты где-то в течение этого периода. Однако ни одно из различных значений dec / ra существенно не меняется. За этот 6-часовой промежуток я ожидаю увидеть примерно 6-часовое изменение ra. Очевидно, когда я использую любое из этих значений ra для вычисления долготы, я получаю неправильный ответ. Похоже, что система отсчета для dev / ra не вращается вместе с Землей. Однако в документации указано, что я должен этого ожидать.

Кто-нибудь хочет объяснить, где я ошибся в своем понимании различных переменных прямого восхождения и каков наиболее прямой способ вычислить сублунные широты и долготы? Заметьте, я бы предпочел избегать использования подхода, который поворачивает кажущееся положение азимутального / электронного угла в геодезическое широта / долгота.


person SDBrown    schedule 14.09.2018    source источник
comment
Не могли бы вы более конкретно процитировать документацию, в которой прямое восхождение (RA) описывается как изменяющееся при повороте Земли? Насколько я понимаю, правильное восхождение объекта - это его положение относительно звезд, поэтому для прямого восхождения Луны на 360 ° потребуется ~ 1 месяц.   -  person Brandon Rhodes    schedule 15.09.2018
comment
Брэндон, это было главным недоразумением с моей стороны. Исходя не из сообщества астрономов-наблюдателей, а скорее из сообщества сторонников дистанционного зондирования, я не знал о системе отсчета для прямого восхождения и о том, что она не привязана к Земле. Похоже, что включение звездного времени - это недостающий ингредиент в моих расчетах.   -  person SDBrown    schedule 15.09.2018
comment
Я рад, что мы обнаружили источник путаницы, и вы снова можете двигаться вперед! Тогда я напишу небольшой ответ, чтобы другие люди, задающие тот же вопрос, могли легко найти ответ в будущем.   -  person Brandon Rhodes    schedule 16.09.2018


Ответы (3)


Измерение «Прямое восхождение» производится не против вращающейся поверхности Земли, а против неподвижных звезд на небе - это своего рода долгота, но начало которой находится в точке на карте звездного неба, где находятся два великих «экватора Земли». небо », экватор Земли и« экватор Солнечной системы », эклиптика (которая не является истинным экватором Солнечной системы, потому что это плоскость орбиты Земли, а не средневзвешенное значение всех планетных орбит ), Пересекать.

Поскольку точка их пересечения с течением времени перемещается, система прямого восхождения каждый год очень немного отличается, и сильно различается по векам и тысячелетиям. Таким образом, прямое восхождение и склонение (небесная широта) всегда должны указываться относительно некоторой даты, определенного точного момента, например, B1950 или J2000.

Теперь существует фиксированная система координат для прямого восхождения и убывания, которая не перемещается, ICRS, которая ориентирована как J2000, но определяется с использованием положений квазаров, которые (мы предполагаем) не будут перемещаться измеримо в течение жизни нашего вида.

person Brandon Rhodes    schedule 16.09.2018

относительно этой части вашего вопроса

какой самый прямой способ вычислить сублунную широту / долготу?

Вот мой код для расчета подлунной точки.

greenwich = ephem.Observer()
greenwich.lat = "0"
greenwich.lon = "0"
greenwich.date = datetime.utcnow()

#add Moon Sub Solar Point
moon = ephem.Moon(greenwich)
moon.compute(greenwich.date)
moon_lon = math.degrees(moon.ra - greenwich.sidereal_time() )
# map longitude value from -180 to +180 
if moon_lon < -180.0 :
  moon_lon = 360.0 + moon_lon 
elif moon_lon > 180.0 :
  moon_lon = moon_lon - 360.0

moon_lat = math.degrees(moon.dec)
print "moon Lon:",moon_lon, "Lat:",moon_lat

Надеюсь, это поможет. Я также использую тот же подход для вычисления субсолнечной точки. У меня отлично работает.

РЕДАКТИРОВАТЬ: Да ... широта Гринвича установлена ​​на ноль, ПОТОМУ ЧТО это не имеет значения для этого расчета.

person Liam Kennedy    schedule 23.04.2019

Вы можете укрепить свое мышление в направлении этого подхода, взглянув на эту другую ссылку:

Расчет субсолнечной точки

Это дает в основном то же решение, но для sub_solar_point, также от Лиама Кеннеди (где он дал ненулевой лат для Гринвича), а также с ответом от Брэндона Роудса, который обернул библиотеку xephem в python, чтобы дать нам pyephem, и до тех пор, пока в последнее время активно его поддерживал. Сейчас Брэндон больше внимания уделяет своей следующей итерации, чистой библиотеке Python под названием skyfield, в которой используются последние доступные эфемериды с более интуитивно понятным API.

https://pypi.org/project/skyfield/

https://rhodesmill.org/skyfield/installation.html

Хотя я не могу внести это сейчас, могу ли я предложить сравнение результатов pyephem и skyfield, возможно, в одной-двух цифрах matplotlib, IOW, насколько разными / улучшенными могут быть результаты Skyfield?

person always_learning    schedule 18.12.2019