PyEphem - Curso de Python Astron

PyEphem
Curso de Python Astronómico
César Husillos Rodrı́guez
IAA-CSIC
Mayo de 2015
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
1 / 64
Índice
1
2
3
4
5
6
7
8
9
10
César Husillos Rodrı́guez (IAA-CSIC)
¿Qué es PyEphem?
Antes de empezar...
Caja de herramientas
Cálculo de coordenadas
celestes
Transformación de coordenadas
Tránsitos, salidas y puestas
Miscelánea
Otras constantes PyEphem
Referencias
Ejercicios
PyEphem
Mayo de 2015
2 / 64
¿Qué es PyEphem?
Índice
1
2
3
4
5
6
7
8
9
10
César Husillos Rodrı́guez (IAA-CSIC)
¿Qué es PyEphem?
Antes de empezar...
Caja de herramientas
Cálculo de coordenadas
celestes
Transformación de coordenadas
Tránsitos, salidas y puestas
Miscelánea
Otras constantes PyEphem
Referencias
Ejercicios
PyEphem
Mayo de 2015
3 / 64
¿Qué es PyEphem?
¿Qué es y para qué sirve?
Es un paquete que contiene variables, constantes y funciones que
permiten programar cálculos astronómicos básicos con Python.
Con PyEphem es posible determinar
La posición de los cuerpos mayores del sistema solar y de sus
lunas. También hay información sobre algunos asteorides,
cometas y satélites artificales.
La constelación asociada a la posición del cuerpo de interés.
Tránsitos, salidas y puestas de cualquier objeto dada sus
coordenadas en un instante concreto, para cualquier dı́a.
Distancia angular entre dos objetos.
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
4 / 64
Antes de empezar...
Índice
1
2
3
4
5
6
7
8
9
10
César Husillos Rodrı́guez (IAA-CSIC)
¿Qué es PyEphem?
Antes de empezar...
Caja de herramientas
Cálculo de coordenadas
celestes
Transformación de coordenadas
Tránsitos, salidas y puestas
Miscelánea
Otras constantes PyEphem
Referencias
Ejercicios
PyEphem
Mayo de 2015
5 / 64
Antes de empezar...
Requisitos previos
Software y versiones
La versión estable de PyEphem a fecha de hoy es la 3.7.5.3.
Para instalar en LINUX, se recomienda ejecutar el comando
sudo pip install pyephem
Si no tiene instalado el comando pip, puede hacerlo
ejecutando la instrucción
sudo apt-get install python-pip
En versiones de Python 2.7.9 y posteriores, y en Python
3.4, ya viene preinstalado.
.
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
6 / 64
Caja de herramientas
Índice
1
2
3
4
5
6
7
8
9
10
César Husillos Rodrı́guez (IAA-CSIC)
¿Qué es PyEphem?
Antes de empezar...
Caja de herramientas
Cálculo de coordenadas
celestes
Transformación de coordenadas
Tránsitos, salidas y puestas
Miscelánea
Otras constantes PyEphem
Referencias
Ejercicios
PyEphem
Mayo de 2015
7 / 64
Caja de herramientas
Estructura del módulo
Clases principales
Los tipos de datos (clases) más importantes de este
paquete son:
Cuerpo (Body)
Observador (Observer)
Fecha (Date)
Las operaciones más frecuentes serán las llevadas a cabo
entre
Ángulos (Angle)
Fechas (Date)
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
8 / 64
Caja de herramientas
Fechas
Generalidades
PyEphem tiene su propio tipo de datos para las fechas.
Funciones del módulo que las generan:
d = ephem . Date ( ’ 2015/5/22 13:23 ’)
d = ephem . now ()
Las fechas se almacenan internamente como float.
Se emplea el Calendario Juliano1 para fechas antiguas y
Calendario Gregoriano2 para las modernas.
1
2
Introducido por Julio César el año 46 a.C.
Introducido por el Papa Gregorio XIII, en octubre de 1582
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
9 / 64
Caja de herramientas
Fechas
Generalidades
Para crear una fecha, podemos pasar a la función
Date(param), números decimales, cadenas de texto o tuplas.
El tiempo considerado es siempre tiempo universal.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
d
d
d
d
d
d
d
d
=
=
=
=
=
=
=
=
ephem . Date ( 35 49 7. 71 97 91 66 67 )
ephem . Date ( ’ 1 9 9 7 / 3 / 1 0 . 2 1 9 7 9 1 6 6 6 7 ’)
ephem . Date ( ’ 1997/3/10 05.275 ’)
ephem . Date ( ’ 1997/3/10 05:16.5 ’)
ephem . Date ( ’ 1997/3/10 05:16:30 ’)
ephem . Date ( ’ 1997/3/10 05:16:30.0 ’)
ephem . Date ((1997 , 3 , 10.2197916667))
ephem . Date ((1997 , 3 , 10 , 5 , 16 , 30.0))
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
10 / 64
Caja de herramientas
Fechas
Generalidades
Dada una fecha, podemos extraer la información sobre el año,
mes, dı́a, hora, minuto y segundo.
Las funciones disponibles para una fecha de PyEphem son
datetime()
Devuelve un objeto de tipo datetime (fecha y hora) del
módulo datetime de la librerı́a estándar de Python.
triple()
Devuelve una tupla (a~
no, mes, dı́a), con el dı́a como
float.
tuple()
Devuelve una tupla (a~
no, mes, dı́a, hora, minuto,
segundo), con segundo como float.
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
11 / 64
Caja de herramientas
Fechas
Generalidades
>>> d = ephem . Date ((2015 , 5 , 22 , 5 , 16 , 30.0))
>>> d . datetime ()
datetime . datetime (2015 , 5 , 22 , 5 , 16 , 30)
>>> obj = d . datetime ()
>>> obj . year
1997
>>> obj . month , obj . day , obj . hour , obj . minute , obj . second
(5 , 22 , 5 , 16 , 30)
>>> d . triple ()
(2015 , 5 , 2 2 .2 1 9 79 1 6 66 6 7 00 6 2 )
>>> d . tuple ()
(2015 , 5 , 22 , 5 , 16 , 30 .0 00 00 029 33 66 61 )
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
12 / 64
Caja de herramientas
Fechas
Generalidades
Las fechas almacenan el número de dı́as que han transcurrido
desde el mediodı́a (tiempo universal) del último dı́a del año
1889.
Podemos realizar operaciones con fechas sumando o
restando dı́as.
>>> d = ephem . Date ( ’ 2015/5/22 13:23 ’)
>>> print d
2015/5/22 13:23:00
>>> anterior = ephem . Date ( d - 1)
>>> print anterior
2015/5/21 13:23:00
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
13 / 64
Caja de herramientas
Fechas
Generalidades
Para operaciones con fracciones de dı́as, se recomienda
usar las constantes disponibles
ephem.hour
ephem.minute
ephem.second
>>> d = ephem . Date ( ’ 2015/5/22 13:23 ’)
>>> print d
2015/5/22 13:23:00
>>> print ephem . Date ( d - ephem . hour )
2015/5/22 12:23:00
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
14 / 64
Caja de herramientas
Ángulos
Generalidades
Internamente
Se almacenan como números de tipo float.
Vienen dados en radianes.
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
15 / 64
Caja de herramientas
Ángulos
Generalidades
PyEphem dispone de dos funciones para crear ángulos
1
degrees(), que devuelve el ángulo en grados.
2
hours(), que lo devuelve en horas.
>>> print ephem . degrees ( ephem . pi / 4)
45:00:00.0
>>> deg = ephem . degrees ( ’ 0.7854 ’)
>>> deg = ephem . degrees ( ’ 45:00 ’)
>>> deg = ephem . degrees ( ’ 45:00:00 ’)
>>> deg = ephem . degrees ( ’ 45:00:00.0 ’)
>>> print ephem . hours ( ephem . pi / 12)
1:00:00.00
>>> hours = ephem . hours ( ’ 0.2618 ’)
>>> hours = ephem . hours ( ’ 1:00 ’)
>>> hours = ephem . hours ( ’ 1:00:00 ’)
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
16 / 64
Caja de herramientas
Ángulos
Generalidades
Sólo cuando se imprimen mediante llamada a la función str o
mediante modificador de formato %s, se muestran en formato
de texto.
>>> a = ephem . degrees ( ephem . pi )
>>> print ( " como texto : %s , como float : %f " % (a , a ))
como texto : 180:00:00.0 , como float : 3.141593
>>> b = ephem . hours ( ephem . pi )
>>> print ( " como texto : %s , como float : %f " % (b , b ))
como texto : 12:00:00.00 , como float : 3.141593
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
17 / 64
Caja de herramientas
Ángulos
Operaciones
Podemos realizar cualquier operación que se nos ocurra.
Puede que nos salgamos del rango [0, 2π) tras operar.
Los ángulos normalizados están disponibles en los atributos
norm
Devuelve el ángulo normalizado entre [0, 2π)
znorm
Devuelve el ángulo normalizado entre [−π, π)
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
18 / 64
Caja de herramientas
Ángulos
Operaciones
>>> a = ephem . pi / 3
>>> deg_a = ephem . degrees ( a )
>>> print ’ %s , %s , %s ’ % ( deg_a , deg_a . norm , \
deg_a . znorm )
120:00:00.0 , 120:00:00.0 , 120:00:00.0
>>> import math
>>> b = math . radians (253.15)
>>> deg_b = ephem . degrees ( b )
>>> print ’ %s , %s , %s ’ % ( deg_b , deg_b . norm , \
deg_b . znorm )
253:09:00.0 , 253:09:00.0 , -106:51:00.0
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
19 / 64
Caja de herramientas
Ángulos
Operaciones
Código erróneo
>>> deg_c = deg_a + deg_b
>>> deg_a , deg_b , deg_c
(2.0943951023931953 , 4.418301001423646 , 6 .5 126 96 10 38 16 84
>>> print ’ %s , %s , %s ’ % ( deg_c , deg_c . norm , \
deg_c . znorm )
...
AttributeError : ’ float ’ object has no attribute ’ norm ’
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
20 / 64
Caja de herramientas
Ángulos
Operaciones
Código correcto
>>> deg_c = ephem . degrees ( deg_a + deg_b )
>>> deg_a , deg_b , deg_c
(2.0943951023931953 , 4.418301001423646 , 6 .5 126 96 10 38 16 84
>>> print ’ %s , %s , %s ’ % ( deg_c , deg_c . norm , \
deg_c . znorm )
373:09:00.0 , 13:09:00.0 , 13:09:00.0
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
21 / 64
Caja de herramientas
Observadores
Generalidades
Un observador representa el punto en la superficie terrestre
desde la que se observa cualquier objeto.
Cuando se proporciona, se emplea para el cálculo de posiciones
celestes.
Se crea mediante una función sin parámetros.
>>> osn = ephem . Observer ()
Se establecen las propiedades de este observador a posteriori.
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
22 / 64
Caja de herramientas
Observadores
Generalidades
Propiedades del observador
Parámetro
date
temp
pressure
elevation
lat
lon
epoch
Descripción
Instante de observación
Temperatura
Presión Atm.
Altitud de observación
Latitud
Longitud
Época de observación
Unidades
s
C
mBar
m (a.s.l.)
deg
deg
Valor por defecto
ahora
15
1010
0
0
0
J2000
Esta información es necesaria para corregir la posición de los cuerpos cuando
están cerca del horizonte3 .
3
Por efecto de la mayor masa de aire y la dispersión atmosférica
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
23 / 64
Caja de herramientas
Cuerpos (Bodies)
Generalidades
Esta clase representa la posición de un objeto en el cielo.
PyEphem contiene información sobre los cuerpos mayores del
sistema solar, sus lunas, algunos asteroides y satélites
artificiales y estrellas.
Si el objeto de estudio está en la base de datos de PyEPhem,
basta crear el objeto de la forma que se muestra
>>> m = ephem . Mars ()
>>> m . name
’ Mars ’
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
24 / 64
Caja de herramientas
Cuerpos (Bodies)
Generalidades
Si el cuerpo no forma parte de los objetos conocidos, bastarán
las coordenadas para generar un objeto body con el que poder
trabajar.
>>>
>>>
>>>
>>>
star = ephem . FixedBody ()
star . _ra = 123.123
star . _dec = 45.45
star . _epoch = ’ 2000 ’
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
25 / 64
Cálculo de coordenadas celestes
Índice
1
2
3
4
5
6
7
8
9
10
César Husillos Rodrı́guez (IAA-CSIC)
¿Qué es PyEphem?
Antes de empezar...
Caja de herramientas
Cálculo de coordenadas
celestes
Transformación de coordenadas
Tránsitos, salidas y puestas
Miscelánea
Otras constantes PyEphem
Referencias
Ejercicios
PyEphem
Mayo de 2015
26 / 64
Cálculo de coordenadas celestes
Coordenadas celestes
Un poco de teorı́a
PyEphem emplea la librerı́a libastro que contiene funciones
astronómicas para determinar la posición de un objeto con gran
precisión.
El proceso de determinación de coordenadas es el siguiente:
1
Dado un cuerpo, PyEphem copia y recalcula las coordenadas
precesándolas hasta la época solicitada ( por defecto J2000).
Lo guarda en las variables a ra y a dec, de Astrometric
Geocentric Position.
2
Después ajusta la posición corrigiendo posibles deflexiones
relativistas por efecto de gravedad de objetos masivos cerca
de la linea de visión.
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
27 / 64
Cálculo de coordenadas celestes
Cálculo de coordenadas celestes
Un poco de teorı́a
1
Seguidamente, ajusta la posición del cuerpo por efecto de la
nutacion. Almacena el resultado en las variables g ra y
g dec, de Apparent Geocentric Position.
2
Si se le da un observador
1
2
Corrije de efectos de paralaje (sitúa al observador sobre
la superficie de la Tierra)
Corrije efectos dispersivos de la atmósfera (cerca del
horizonte). El resultado se guarda en las variables ra y
dec, llamadas Apparent Topocentric Position, y en alt y
az, que muestran la misma posición pero medidas desde
el horizonte.
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
28 / 64
Cálculo de coordenadas celestes
Coordenadas celestes
Determinación de las coordenadas de un cuerpo
Una vez establecido el cuerpo a observar y (opcionalmente) la
posición del observador, se realizan cálculos para obtener las
coordenadas celestes. Se usa la función
compute([Date|Observer]).
Tiene dos variantes dependiendo de si se le pasa una fecha
como parámetro o un observador.
Si no se pone ningún parámetro, se toma la fecha actual
(ephem.now())
Como parámetro opcional, la época de observación.
compute(Observer|Date[, epoch=’J2000’])
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
29 / 64
Cálculo de coordenadas celestes
Coordenadas celestes
Compute(Date)
compute(Date[, epoch=’2000’])
Determina los siguientes parámetros:
Parámetro
a ra
a dec
g ra, ra
g dec, dec
elong
mag
size
radius
circumpolar
neverup
Descripción
Ascención geocéntrica astrométrica (época dada)
Declinación geocéntrica astrométrica (época dada)
Ascención reacta geocéntrica aparente (época dada por la fecha)
Declinación geocéntrica aparente (época dada por la fecha)
Elongación (ángulo respecto al Sol)
Magnitud
Diámetro en segundos de arco
Tamaño (radio angular)
True si permanece por encima del horizonte
True si permanece bajo el horizonte
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
30 / 64
Cálculo de coordenadas celestes
Coordenadas celestes
Compute(Observer)
compute(Observer[, epoch=’2000’])
Usa la fecha y la época del observador.
Determina los mismos parámetros que el caso anterior.
Calcula las coordenadas en el cielo (4 nuevos parámetros)
ra (ascensión recta), dec (declinación)
az (azimut), alt (altura)
donde (ra, dec) son coordenadas topocéntricas
aparentes, y (ra, dec) marcan la posición aparente relativa al
horizonte. Estas coordenadas
incluyen las correcciones ligadas a la dispersión atmosférica.
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
31 / 64
Cálculo de coordenadas celestes
Cálculo de coordenadas celestes
Observador en el Observatorio de Sierra Nevada (OSN)
>>> osn = ephem . Observer ()
>>> osn . elevation = 2896
>>> osn . lat = 37.0642 # N 37 d 03 m 51 s
>>> osn . lon = -3.3847 # W 03 d 23 m 05 s
>>> v = ephem . Venus ( osn )
# UT selected : now !!
>>> print ( ’ %s %s ’ % ( v . ra , v . dec ))
6:17:12.97 26:01:56.2
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
32 / 64
Cálculo de coordenadas celestes
Cálculo de coordenadas celestes
Observador en el Observatorio de Sierra Nevada (OSN)
>>> osn . date = ephem . Date ( ’ 2015/5/23 02:00 ’)
# UT ( localtime --> 02:00 AM )
>>> v = ephem . Venus ( osn )
>>> print ( ’ %s %s ’ % ( v . ra , v . dec ))
7:12:13.37 25:10:48.8
NOTA: Se puede verificar este ejemplo introduciendo los datos del
script cualquier página web que proporcione efemérides, p. e.,
http://cosinekitty.com/solar system.html
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
33 / 64
Transformación de coordenadas
Índice
1
2
3
4
5
6
7
8
9
10
César Husillos Rodrı́guez (IAA-CSIC)
¿Qué es PyEphem?
Antes de empezar...
Caja de herramientas
Cálculo de coordenadas
celestes
Transformación de coordenadas
Tránsitos, salidas y puestas
Miscelánea
Otras constantes PyEphem
Referencias
Ejercicios
PyEphem
Mayo de 2015
34 / 64
Transformación de coordenadas
Sistemas de coordenadas celestes
Un poco de teorı́a
PyEphem maneja tres sistemas de coordenadas:
1
Ecuatoriales
Ascensión recta (ra), declinación (dec) y época de observación
(epoch). Sistema geocéntrico.
2
Eclı́pticas
Longitud eclı́ptica (lon, +E), latitud eclı́ptica (lat, +N) y
época de observación (epoch). Sistema geocéntrico.
3
Galácticas
Longitud galáctica (lon, +E), latitud galáctica (lat, +N) y
época de observación (epoch). Origen de coordenadas: centro
de la galaxia.
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
35 / 64
Transformación de coordenadas
Sistemas de coordenadas celestes
Ecuatorial
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
36 / 64
Transformación de coordenadas
Sistemas de coordenadas celestes
Galácticas
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
37 / 64
Transformación de coordenadas
Sistemas de coordenadas celestes
Cambio de sistema de coordenadas
PyEphem dispone de tres funciones que permiten el cambio
entre sistemas de coordenadas
Ecliptic(Body o coordenadas [, epoch])
Galactic(Body o coordenadas [, epoch])
Equatorial(Body o coordenadas [, epoch])
Se les puede pasar un objeto de tipo Body o un par de
coordenadas (longitud, latitud).
Opcionalmente se puede concretar una época. Si no se
especifica ninguna, se asume J2000.
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
38 / 64
Transformación de coordenadas
Sistemas de coordenadas celestes
Cambio de sistema de coordenadas
>>> mars = ephem . Mars ()
>>> mars . compute ()
>>> emars = ephem . Ecliptic ( mars )
>>> print ’ %s %s ’ %( emars . lon , emars . lat )
66:32:26.5 0:24:15.1
>>> e1950mars = ephem . Ecliptic ( mars , epoch = ’ 1950 ’)
>>> print ’ %s %s ’ % ( e1950mars . lon , e1950mars . lat )
65:50:32.3 0:23:52.8
>>> north_pole = ephem . Equatorial ( ’0 ’ , ’ 90 ’ , \
epoch = ephem . J2000 )
>>> print ’ %s %s ’ % ( north_pole . ra , north_pole . dec )
0:00:00.00 90:00:00.0
>>> ancient_pole = ephem . Equatorial ( north_pole , \
epoch = ’ -10000 ’)
>>> print ’ %s %s ’ % ( ancient_pole . ra , ancient_pole . dec )
18:34:46.15 41:31:40.9
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
39 / 64
Tránsitos, salidas y puestas
Índice
1
2
3
4
5
6
7
8
9
10
César Husillos Rodrı́guez (IAA-CSIC)
¿Qué es PyEphem?
Antes de empezar...
Caja de herramientas
Cálculo de coordenadas
celestes
Transformación de coordenadas
Tránsitos, salidas y puestas
Miscelánea
Otras constantes PyEphem
Referencias
Ejercicios
PyEphem
Mayo de 2015
40 / 64
Tránsitos, salidas y puestas
Tránsitos, salidas y puestas
Definiciones
Se defiene salida (rising ) y puesta (setting ) de un cuerpo a
los instantes temporales en los que la parte superior del disco
toca el horizonte.
Se define meridiano como la lı́nea que pasa por el cénit y los
polos norte y sur. Un tránsito (transit) se da cuando el
cuerpo atraviesa el meridiano. Siempre sucede.
Salidas y puestas son sensibles a las condiciones atmosféricas y a la
posición del observador (su horizonte).
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
41 / 64
Tránsitos, salidas y puestas
Tránsitos, salidas y puestas
Métodos
Métodos disponibles (del objeto Observer)
previous transit(BodyObject [, start])
next transit(BodyObject [, start])
previous antitransit(BodyObject [, start])
next antitransit(BodyObject [, start])
previous rising(BodyObject [, start])
next rising(BodyObject [, start])
previous setting(BodyObject [, start])
next setting(BodyObject [, start])
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
42 / 64
Tránsitos, salidas y puestas
Tránsitos, salidas y puestas
Métodos
Reciben como parámetro un objeto de tipo Body (excepto
satélites artificiales).
Por defecto, los eventos cuentan a partir de la fecha
del observador.
Toman como parámetro adicional start. Es una fecha a partir
de la cual se busca el siguiente tránsito, salida o puesta.
Si la llamada estas funciones es correcta, devuelve una fecha
que se puede pasar como parámetro ( start).
Los métodos de rising y setting pueden producir errores si
el cuerpo considerado no cruza el horizonte.
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
43 / 64
Tránsitos, salidas y puestas
Tránsitos, salidas y puestas
Métodos
Se lanzan excepciones del tipo ephem.CircumpolarError,
en sus modalidades
ephem.AlwaysUpError
ephem.NeverUpError
Atributos del cuerpo (Body) que ayudan a controlar ese tipo
de situaciones:
circumpolar
True, si siempre está a la vista, sobre el horizonte. False
en caso contrario.
neverup
True si siempre está por debajo del horizonte para el
observador considerado. False en caso contrario.
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
44 / 64
Tránsitos, salidas y puestas
Tránsitos, salidas y puestas
Ejemplo
Granada (37d10m41s N, 3d36m03s W, altitud=680m), a 22 de mayo de 2015,
¿hora UT de salida, puesta y tránsito de la luna (época=’J2000’)?
>>> import ephem
>>> obsGranada = ephem . Observer ()
>>> obsGranada . lat = ephem . degrees ( ’ 37:10:41 ’)
>>> obsGranada . lon = ephem . degrees ( ’ -3:36:03 ’)
>>> obsGranada . elevation =680
>>> obsGranada . date = ephem . Date ( ’ 2015 -05 -22 ’)
>>> moon = ephem . Moon ()
>>> print obsGranada . next_rising ( moon )
2015/5/22 09:01:16
>>> print obsGranada . next_transit ( moon )
2015/5/22 16:07:09
>>> print obsGranada . next_setting ( moon )
2015/5/22 23:08:45
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
45 / 64
Tránsitos, salidas y puestas
Tránsitos, salidas y puestas
Ejemplo
>>> nr = obsGranada . next_setting ( moon )
>>> print nr
2015/5/22 23:08:45
>>> print obsGranada . next_setting ( moon , start = nr )
2015/5/23 23:47:13
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
46 / 64
Miscelánea
Índice
1
2
3
4
5
6
7
8
9
10
César Husillos Rodrı́guez (IAA-CSIC)
¿Qué es PyEphem?
Antes de empezar...
Caja de herramientas
Cálculo de coordenadas
celestes
Transformación de coordenadas
Tránsitos, salidas y puestas
Miscelánea
Otras constantes PyEphem
Referencias
Ejercicios
PyEphem
Mayo de 2015
47 / 64
Miscelánea
Miscelánea
Fecha Juliana
julian date(Date)
Devuelve la fecha según el calendario juliano, para la fecha que
se le pasa como parámetro.
>>> print ephem . julian_date ( ’ 2015/5/22 ’)
2457164.5
>>> print ephem . julian_date ( ’ 1582/8/14 ’)
2299108.5
>>> print ephem . julian_date ( ’ 1582/8/15 ’)
2299109.5
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
48 / 64
Miscelánea
Miscelánea
Distancia angular
separation(object1|coords1, object2|coords2)
Recibe dos parámetros.
Pueden ser datos de tipo Body o tupla de coordenadas((ra,
dec), (az, alt)).
Devuelve un ángulo (en radianes)
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
49 / 64
Miscelánea
Miscelánea
Distancia angular: ejemplo
¿Ángulo diario lunar (en grados)?
>>> import ephem
>>> import math
>>> m1 = ephem . Moon ( ’ 2015/5/22 ’)
>>> m2 = ephem . Moon ( ’ 2015/5/23 ’)
>>> s = ephem . separation ( m1 , m2 )
>>> print ( " La luna se mueve %6.4 f grados / dia " % \
math . degrees ( s ))
La luna se mueve 12.5942 grados / dia
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
50 / 64
Miscelánea
Miscelánea
Distancia angular: ejemplo2
¿Ángulo diario lunar (en grados)?
>>> import ephem
>>> import math
>>> m1 = ephem . Moon ( ’ 2015/5/22 ’)
>>> m2 = ephem . Moon ( ’ 2015/5/23 ’)
>>> s = ephem . separation ( m1 , ( m2 . ra , m2 . dec ))
>>> print ( " La luna se mueve %6.4 f grados / dia " % \
math . degrees ( s ))
La luna se mueve 12.5942 grados / dia
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
51 / 64
Miscelánea
Miscelánea
Tiempo local
localtime(Date)
Devuelve un objeto de tipo datetime de Python.
Ese objeto datetime almacena el tiempo local.
Recibe como parámetro un objeto ephem.date.
>>> import ephem
>>> d = ephem . now ()
>>> print d
2015/5/14 06:26:37
>>> print ephem . localtime ( d )
2015 -05 -14 08:26:37.000003
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
52 / 64
Miscelánea
Miscelánea
Tiempo local
delta t([Date or Observer])
La función delta t() devuelve la diferencia en segundos,
entre Tiempo Terrestre4 y Tiempo Universal5 .
Sin argumento, usa now().
4
El tiempo terrestre (TT) es una escala de tiempo uniforme basada en
el Tiempo Atómico Internacional (TAI). Basado en tiempo solar promedio
entre 1750 y 1890.
5
El tiempo universal (UT) es una escala de tiempo basada en el
periodo de rotación de la Tierra. Es variable. Las fuerzas de marea
gravitatoria ralentizan la rotación
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
53 / 64
Miscelánea
Miscelánea
Tiempo local: ejemplo
>>> import ephem
>>> print ephem . delta_t ( ’ -2500 ’)
# Keops ’ Pyramid (4 th Dinasty )
59699.68
>>> print ephem . delta_t ( ’0 ’) # Begining of Christian Ca
87491092594.0
>>> obsGranada = ephem . Observer ()
>>> obsGranada . lat = ephem . degrees ( ’ 37:10:41 ’)
>>> obsGranada . lon = ephem . degrees ( ’ -3:36:03 ’)
>>> obsGranada . elevation =680
>>> obsGranada . date = ephem . Date ( ’ 2015 -05 -22 13:25:00.0 ’)
>>> print ephem . delta_t ( obsGranada )
67.9070436458
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
54 / 64
Miscelánea
Miscelánea
Fases lunares
Hay varias funciones disponibles en PyEphem
previous new moon(Date)
next new moon(Date)
previous first quarter moon(Date)
next first quarter moon(Date)
previous full moon(Date)
next full moon(Date)
previous last quarter moon(Date)
next last quarter moon(Date)
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
55 / 64
Miscelánea
Miscelánea
Fases lunares
Todas ellas
reciben una fecha como parámetro de entrada.
Devuelven otra fecha como parámetro de salida.
>>> fullmoon = ephem . next_full_moon ( ’ 2015 ’)
>>> print ( fullmoon )
2015/1/5 04:53:16
>>> firstquartermoon = \
ephem . n e x t _ f i r s t _ q u a r t e r _ m o o n ( fullmoon )
>>> print ( firstquartermoon )
2015/1/27 04:48:24
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
56 / 64
Miscelánea
Miscelánea
Constelación
constellation(Body)
Devuelve una tupla. El primer elemento es la abreviatura de la
constelación. El segundo, el nombre de esa constelación.
>>> jup = ephem . Jupiter ( ’ 2015/05/23 ’)
>>> print ephem . constellation ( jup )
( ’ Cnc ’ , ’ Cancer ’)
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
57 / 64
Otras constantes PyEphem
Índice
1
2
3
4
5
6
7
8
9
10
César Husillos Rodrı́guez (IAA-CSIC)
¿Qué es PyEphem?
Antes de empezar...
Caja de herramientas
Cálculo de coordenadas
celestes
Transformación de coordenadas
Tránsitos, salidas y puestas
Miscelánea
Otras constantes PyEphem
Referencias
Ejercicios
PyEphem
Mayo de 2015
58 / 64
Otras constantes PyEphem
Otras constantes
Tipo
Época de Observación
Distancias (m)
Velocidad de la luz (m/s)
Ángulos (rad)
César Husillos Rodrı́guez (IAA-CSIC)
Constantes
ephem.B1900
ephem.B1950
ephem.J2000
ephem.meters per au
ephem.earth radius
ephem.moon radius
ephem.sun radius
ephem.c
ephem.pi
PyEphem
Mayo de 2015
59 / 64
Referencias
Índice
1
2
3
4
5
6
7
8
9
10
César Husillos Rodrı́guez (IAA-CSIC)
¿Qué es PyEphem?
Antes de empezar...
Caja de herramientas
Cálculo de coordenadas
celestes
Transformación de coordenadas
Tránsitos, salidas y puestas
Miscelánea
Otras constantes PyEphem
Referencias
Ejercicios
PyEphem
Mayo de 2015
60 / 64
Referencias
Referencias
Toda la información ha sido resumida de las fuentes oficiales
del paquete PyEPHEM
Para profundizar más, ésta es la mejor de las referencias.
La documentación en lı́nea no es exhaustiva.
>>> import ephem
>>> help ( ephem . compute )
Help on built - in function julian_date in module
ephem . _libastro :
julian_date (...)
Return the Julian date of the current time , or of
an argument that can be converted into an ephem . Date
( END )
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
61 / 64
Ejercicios
Índice
1
2
3
4
5
6
7
8
9
10
César Husillos Rodrı́guez (IAA-CSIC)
¿Qué es PyEphem?
Antes de empezar...
Caja de herramientas
Cálculo de coordenadas
celestes
Transformación de coordenadas
Tránsitos, salidas y puestas
Miscelánea
Otras constantes PyEphem
Referencias
Ejercicios
PyEphem
Mayo de 2015
62 / 64
Ejercicios
Ejercicios propuestos
1
Salida, puesta y tránsitos de la luna sobre la base aérea de Torrejón el
22/05/2015 Coordenadas (40d29m48s N, 3d26m45s W), 618 m a.s.l.
2
¿A qué hora (UT) sale y se pone el Sol el 22/05/2015 en la base aérea de
Torrejón de Ardoz?
3
¿Y en hora local?¿A qué hora sale y se pone el Sol en el caso del ejercicio
anterior?
4
¿En qué constelaciones están los planetas Mercurio, Marte, Júpiter,
Saturno y Urano?
5
¿Cuál es la menor distancia angular entre ellos?
6
¿Podré observar Régulo (en la constelación de LEO) la noche del
23/05/2015?¿A qué hora sale y a qué hora se pone?.
7
¿Qué altura (alt) alcanza en el momento del tránsito en la base aérea de
Torrejón?
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
63 / 64
Ejercicios
Ejercicios adicionales
1
Determine el azimut (az) la altura (alt) del Sol cada 10 minutos en el
dı́a 23/05/2015 sobre la base aérea de Torrejón. Guarde las coordenadas
en el fichero 20150523 sol torrejon.txt. El formato de cada fila será:
fecha;az;alt (la fecha como número float).
2
Lea el fichero anterior. Pinte en una gráfica con az en abscisas y alt en
ordenadas. Ajuste mediante un polinomio de grado 2 esa curva en las
horas de Sol (altura solar mayor que cero). ¿Es suficiente ese grado del
polinomio?. ¿Cuál es la altura solar a las 13:36 horas?.
César Husillos Rodrı́guez (IAA-CSIC)
PyEphem
Mayo de 2015
64 / 64