Преобразование экваториальных координат в alt-az происходит очень медленно - PullRequest
2 голосов
/ 19 февраля 2020

Я пытаюсь преобразовать экваториальные координаты объекта в координаты alt-az для заданного времени и местоположения в (надеюсь) <5 se c времени выполнения или, в идеале, <1 se c времени выполнения. </p>

Следуя учебнику по астропии для преобразования координат , я настроил следующий код:

from astropy import units as u
from astropy.coordinates import SkyCoord,EarthLocation, AltAz
from astropy.time import Time

target = SkyCoord(9.81625*u.deg, 0.88806*u.deg, frame='icrs')

location = EarthLocation(lat='31d57.5m', lon='-111d35.8m', height=0*u.m)
obs_time = Time('2010-12-21 1:00')

alt_az_frame = AltAz(location=location, obstime=obs_time)
target_alt_az = target.transform_to(alt_az_frame)

print(target_alt_az.alt, target_alt_az.az)

Этот код выполняется за 20 секунд, почти все из которых получены из строка target.transform_to(alt_az_frame).

Есть ли более подходящий способ использовать функцию transform_to для ускорения кода или мне следует вообще отказаться от использования астропии и писать код с нуля? Я понимаю, что в SkyCoord объекты встроено множество дополнительных функций, большая часть которых мне, скорее всего, не нужна - просто удобно использовать предварительно созданный стандартизированный код.

1 Ответ

6 голосов
/ 19 февраля 2020

После некоторой отладки кажется, что это происходит из-за того, что astropy.utils.iers.iers s conf.iers_auto_url - неверный URL. Вот мое простое решение вашей проблемы.

from astropy.utils.iers.iers import conf
# The desired url may change in the future
conf.iers_auto_url = 'ftp://cddis.gsfc.nasa.gov/pub/products/iers/finals2000A.all'

# Run your code here

В качестве альтернативы, вы можете сделать что-то вроде conf.remote_timeout = 0.1 или conf.auto_download = False (использовать данные резервного копирования).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...