2011-10-05 6 views
9

Tengo una consulta sobre los resultados dados por el módulo PyEphem relacionado con las consultas de Observer(), y los efectos de la elevación. Entiendo por un par de fuentes (como http://curious.astro.cornell.edu/question.php?number=388) que la elevación del observador tiene un efecto marcado en la hora del atardecer. Sin embargo, en el siguiente código, veo al lado de ninguna diferencia:Resultados para Observer() aparentemente no representa los efectos de elevación en PyEphem

import ephem 

emphemObj = ephem.Observer() 
emphemObj.date = '2011/08/09' 
emphemObj.lat = '53.4167' 
emphemObj.long = '-3' 
emphemObj.elevation = 0 

ephemResult = ephem.Sun() 
ephemResult.compute(emphemObj) 
print "Sunset time @ 0m: " + str(emphemObj.previous_rising(ephemResult)) 

emphemObj.elevation = 10000 
ephemResult.compute(emphemObj) 
print "Sunset time @ 10000m: " + str(emphemObj.previous_rising(ephemResult)) 

me sale la salida:

Sunset time @ 0m: 2011/8/8 04:38:34 
Sunset time @ 10000m: 2011/8/8 04:38:34 

Estoy bastante seguro de que estoy haciendo algo mal y no siendo esto un error, pero habiendo probado varias formas diferentes, me temo que sigo dando los mismos resultados. ¿Alguien sabe lo que estoy haciendo mal aquí?

He publicado esto en https://launchpad.net/pyephem ya, pero no he tenido respuesta. Espero que no haya malinterpretado fundamentalmente el propósito de la función de elevación ...

+0

Si duplica el ejemplo en el artículo enlazado, en el ecuador en 12.000 metros, se obtiene el mismo resultado? Si es así, quizás aún no hayan implementado las preocupaciones de elevación. – wberry

+0

No estoy 100% seguro de haber probado 12,000m pero ciertamente he probado otros valores (mucho) más altos. El tiempo reportado por previous_rising cambia, lo que me lleva a creer que el código de elevación está haciendo algo. Solo espero que no se deba únicamente a la refracción atmosférica en lugar del efecto 'horizonte'. – Smingos

Respuesta

6

El elevation de un observador significa la elevación sobre el nivel del mar de su ubicación, como la altitud de Flagstaff, Arizona, por ejemplo. Pero se presume que no solo el observador y su telescopio o binoculares están a esta distancia sobre el nivel del mar; se presume que el suelo, y por lo tanto el horizonte, son también a esta altura. Por lo tanto, un aumento de elevation no le da ninguna ventaja con respecto al horizonte, porque el horizonte se mueve con usted cuando se traslada a una ciudad de mayor altitud.

Al cabo de unos minutos con un lápiz y una libreta de papel amarillo, parece que el ángulo hacia el horizonte hza está relacionado con el radio de la Tierra r y su altura por encima del suelo h de la siguiente manera:

hza = - acos(r/(h + r)) 

Así como continuación de su ejemplo anterior:

import math 
height = 10000 
hza = - math.acos(ephem.earth_radius/(height + ephem.earth_radius)) 
emphemObj.horizon = hza 
print "Sunrise time @ 10000m: " + str(emphemObj.previous_rising(ephemResult)) 

consigo la salida:

Sunrise time @ 10000m: 2011/8/8 04:08:18 

(Tenga en cuenta que "la salida del sol" va con previous_rising() y "puesta de sol" va con next_setting()!)

+0

¡Gracias Brandon! Pasé tanto tiempo tratando de resolver el problema, que no me había detenido a pensar si realmente era un problema. Tiene sentido cuando lo pienso ... Sin embargo, el cálculo anterior sin duda será útil para mí cuando hay una prominencia local significativa. – Smingos

+0

¡Oh, cariño, acabo de darme cuenta de que había etiquetado el saludo anterior como Sunset time! :-) ¡Me alegro de que no se haya incluido en el código real! – Smingos

Cuestiones relacionadas