我才刚刚开始使用PyEphem。我的当务之急是,给定一个日期和时间,用latitude-longitude值计算地球上的次太阳点。我将深入研究PyEphem来解决这个问题,但如果有人已经这样做了,我会很感激样例代码。
发布于 2017-07-10 13:54:27
我去寻找和操作员一样的答案。许多帖子“提到”PyEphem是如何实现的,但没有提供实际的示例。
这是我计算太阳下点的工作示例。将所有内容映射到-180到+ 180度之间的经度。
greenwich = ephem.Observer()
greenwich.lat = "0"
greenwich.lon = "0"
greenwich.date = datetime.utcnow()
sun = ephem.Sun(greenwich)
sun.compute(greenwich.date)
sun_lon = math.degrees(sun.ra - greenwich.sidereal_time() )
if sun_lon < -180.0 :
sun_lon = 360.0 + sun_lon
elif sun_lon > 180.0 :
sun_lon = sun_lon - 360.0
sun_lat = math.degrees(sun.dec)
print "Subsolar Point Sun Lon:",sun_lon, "Lat:",sun_lat我不是PyEphem方面的专家,也许有一种更好的方法-但我的测试到目前为止已经完成了我想要的工作。
附注:是的..上面的格林威治实际上并没有设置为实际的经度/纬度...它实际上只需要0.0的经度就可以得到我们需要的适当的恒星时间。
发布于 2013-06-24 19:50:33
我不能从今天早上的位置测试实际的代码,但是:一个位于赤经位置的对象应该始终位于地球上一系列具有纬度的位置的正上方,所以纬度数字是由body的.dec属性(或.a_dec或.g_dec,取决于您的应用程序)直接提供给您的。
现在,经度呢?
想象一下这种情况,我想大概每天都会发生一次,当格林威治在经度为0°的地方抬头看到天空中0°的直线就在头顶上。在那个时刻,假设经度是正的向东移动,那么在右升角θ的天空中的一个物体将会俯视经度θ,就像PyEphem一样。
现在,如果格林威治抬头看的是一条非零线的右升线呢?在我看来,我们只需要从一个物体的右行高度中减去它就可以得到经度,因为随着时间的推移,地球转动,右升线经过格林威治,分配给它们越来越大的右行,任何给定的物体都会向西穿过地球,它的经度会变小,然后当它经过西半球时,它会变成负数。
如果我没有记错快速参考的话,可以通过在0°经度创建一个观察者并询问它的.sidereal_time()来确定格林威治头顶上任何给定时刻的直纬线。所以我认为身体下面的经度可能是:
lon = body.ra - greenwich.sidereral_time()我将在今天晚些时候对此做一个快速测试,看看是否会得出合理的数字。
https://stackoverflow.com/questions/17262428
复制相似问题