使用PyEphem计算阴影长度

使用PyEphem计算阴影长度,第1张

使用PyEphem计算阴影长度

在太阳上使用哪个场?

sun.alt
是正确的。
alt
是地平线以上的高度;它们与北方以东的方位角一起确定了相对于地平线的视在位置。

您的计算几乎是正确的。您忘记提供观察员了:

sun = ephem.Sun(o)

  1. 我不知道如何解释cot(phi)的负面结果。有人能帮我吗?

在这种情况下,太阳在地平线以下。

最后,对于给定ephem.Observer(),我对如何使用PyEphem从阴影长度向后工作感到困惑,直到下次太阳将投射该长度的阴影时。

这是一个提供功能的脚本:

g(date) -> altitude
计算下次太阳投射阴影的时间与当前长度相同(方位角-不考虑阴影的方向):

#!/usr/bin/env pythonimport mathimport ephem    import matplotlib.pyplot as pltimport numpy as npimport scipy.optimize as optdef main():    # find a shadow length for a unit-length stick    o = ephem.Observer()    o.lat, o.long = '37.0625', '-95.677068'    now = o.date    sun = ephem.Sun(o) #NOTE: use observer; it provides coordinates and time    A = sun.alt    shadow_len = 1 / math.tan(A)    # find the next time when the sun will cast a shadow of the same length    t = ephem.Date(find_next_time(shadow_len, o, sun))    print "current time:", now, "next time:", t # UTC time    ####print ephem.localtime(t) # print "next time" in a local timezonedef update(time, sun, observer):    """Update Sun and observer using given `time`."""    observer.date = time    sun.compute(observer) # computes `sun.alt` implicitly.    # return nothing to remember that it modifies objects inplacedef find_next_time(shadow_len, observer, sun, dt=1e-3):    """Solve `sun_altitude(time) = known_altitude` equation w.r.t. time."""    def f(t):        """Convert the equation to `f(t) = 0` form for the Brent's method.        where f(t) = sun_altitude(t) - known_altitude        """        A = math.atan(1./shadow_len) # len -> altitude        update(t, sun, observer)        return sun.alt - A    # find a, b such as f(a), f(b) have opposite signs    now = observer.date # time in days    x = np.arange(now, now + 1, dt) # consider 1 day    plt.plot(x, map(f, x))    plt.grid(True)    ####plt.show()    # use a, b from the plot (uncomment previous line to see it)    a, b = now+0.2, now+0.8    return opt.brentq(f, a, b) # solve f(t) = 0 equation using Brent's methodif __name__=="__main__":    main()
输出量
current time: 2011/4/19 23:22:52 next time: 2011/4/20 13:20:01


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5661979.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存