Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用PyEphem计算给定星系坐标(GLON,GLAT)的(alt,az)?_Python_Coordinate Transformation_Astronomy_Pyephem - Fatal编程技术网

Python 如何用PyEphem计算给定星系坐标(GLON,GLAT)的(alt,az)?

Python 如何用PyEphem计算给定星系坐标(GLON,GLAT)的(alt,az)?,python,coordinate-transformation,astronomy,pyephem,Python,Coordinate Transformation,Astronomy,Pyephem,对于地球上给定的观测者(lon,lat,time)和给定的银河系坐标(GLON,GLAT),我如何用PyEphem计算天空中相应的(alt,az)点?根据PyEphem目前的工作方式,有两个步骤来回答您的问题。首先,你必须把一对银河系坐标转换成赤道的RA/dec坐标 import ephem # Convert a Galactic coordinate to RA and dec galactic_center = ephem.Galac

对于地球上给定的观测者(lon,lat,time)和给定的银河系坐标(GLON,GLAT),我如何用PyEphem计算天空中相应的(alt,az)点?

根据PyEphem目前的工作方式,有两个步骤来回答您的问题。首先,你必须把一对银河系坐标转换成赤道的RA/dec坐标

import ephem

# Convert a Galactic coordinate to RA and dec                          

galactic_center = ephem.Galactic(0, 0)
eq = ephem.Equatorial(galactic_center)
print 'RA:', eq.ra, 'dec:', eq.dec

→ RA: 17:45:37.20 dec: -28:56:10.2
这些坐标与维基百科给出的银河系中心的坐标非常接近

现在我们有了一个正常的RA/dec坐标,我们现在只需要找出它在天空中的位置。由于PyEphem是建立在一个只知道恒星和行星等天体的图书馆之上的,我们只需要在那个位置创建一个假“恒星”,并询问它的方位角和高度

# So where is that RA and dec above Boston?
# Pretend that a star or other fixed body is there.

body = ephem.FixedBody()
body._ra = eq.ra
body._dec = eq.dec
body._epoch = eq.epoch

obs = ephem.city('Boston')
obs.date = '2012/6/24 02:00' # 10pm EDT
body.compute(obs)
print 'Az:', body.az, 'Alt:', body.alt

→ Az: 149:07:25.6 Alt: 11:48:43.0

我们可以通过查看当天深夜波士顿的星图来验证这个答案是否合理:人马座——银河系中心的位置——正从天空的东南边缘升起,这使得东南方位角(如149°)和迄今为止的低海拔(如11°)非常合理。

Pypephem的坐标与我找到的坐标完全匹配,可能是黑洞的位置,而不是(GLON,GLAT)=(0,0)。你可以将
eq=ephem.赤道(银河系中心)
更改为
赤道=ephem.赤道(银河系中心)
,然后,当粘贴到python外壳中时,代码将直接运行。唯一奇怪的是,您分配了body的私有属性,而不是在构造函数中设置值。我发现,可以像这样
body=ephem.FixedBody(ra=123.123,dec=45.45)
为构造函数“以通常的python方式”提供坐标,但出于某种原因,neiter
body=ephem.FixedBody(ra=123.123,dec=45.45)
(ra=eq.ra,dec=eq.dec)nor
body=ephem.FixedBody(ra=eq.ra.real,dec=eq.dec.real)
对我有效,在这两种情况下我都得到
body.\u ra==0
。为什么?