PyEphem快速参考

PyEphem快速参考

那些熟悉Python和天文学的人应该能够开始使用PyEphem,只需要使用下面所示的注释和示例!有两种方法可以在Python程序中开始使用PyEphem。一种方法是按名称导入模块,然后在模块中要使用的所有内容前面加上限定符ephem;下面的代码片段就是这样编写的,希望这可以清楚地说明哪些变量来自PyEphem本身,哪些变量是在每个示例的过程中创建的。

import ephem
m = ephem.Mars('1970')
print(ephem.constellation(m))
('Aqr', 'Aquarius')

但是,为了避免反复键入模块名称,您可以告诉Python将模块中的所有内容直接导入到您的命名空间中,然后您可以在没有进一步限定的情况下使用它们:

from ephem import *
m = Mars('1970')
print(constellation(m))
('Aqr', 'Aquarius')

要理解下面的每个示例,请先仔细阅读源代码片段,然后再深入了解下面的解释

Bodies

m = ephem.Mars()
m.name
'Mars'
a = ephem.star('Arcturus')
a.name
'Arcturus'
  • 太阳、月球、行星和主要行星卫星都有自己的类别。
  • PyEphem包含了一个适度的著名明亮恒星目录。
  • 实体实例知道它们的名称(您可以将其设置为您想要的任何名称)。
m = ephem.Mars('2003/8/27')
print('%s %s %.10f' % (m.name, m.elong, m.size))
Mars -173:00:34.2 25.1121063232
  • 创建Body时的额外参数用于执行初始compute()(请参见下一节)。

body.compute(date)

j = ephem.Jupiter()
j.compute('1986/2/8')
print('%s %s' % (j.ra, j.dec))
21:57:50.47 -13:17:37.2
j.compute('1986/2/9', epoch='1950')
print('%s %s' % (j.a_ra, j.a_dec))
21:56:50.83 -13:22:54.3
  • 计算实体的位置。
  • 如果省略,日期默认为now()。
  • 如果省略,则epoch默认为“2000”。
  • 日期和历元参数可以是Date()可以接受的任何参数。
  • 设置以下body属性:
a_ra - 指定纪元的天体测量地心赤经
a_dec - 指定历元的天文地心偏角
g_ra和ra - 日期纪元的视地心赤经
g_dec和dec - 日期历元的视地心偏角
elong - Elongation:太阳和实体之间的角度,但当实体位于天空的早晨一侧时,符号会翻转为负值。
mag - 幅值
size-  Size (直径以弧秒为单位)
radius - Size (半径为角度)
circumpolar - 是否保持在地平线以上
neverup - 是否停留在地平线以下
  • 在太阳系天体上,还设置:
hlon - 天文日心经度(见下一段)
hlat - 天文日心纬度(见下一段)
sun_distance - 到太阳的距离(AU)
earth_distance - 到地球的距离(AU)
phase - 表面照明的百分比
hlon和hlat对太阳和月亮都有特殊的意义。对于太阳体,它们给出了地球的日心经度和纬度。对于月球天体,它们给出了月球的地心经度和纬度。
  • 在行星卫星上,也设置:
    月球相对于行星的位置
    (以行星半径测量)
x — offset +east or –west
 x — 偏移+东或-西
y — offset +south or –north
 y — 偏移+南或-北
z — offset +front or –behind
 z — 偏移+前或后
月亮是否可见…
earth_visible  - 从地球
sun_visible - 来自太阳
  • 在人造卫星上,还设置:
    卫星下的地理点:
sublong — 地心纬度(+N)
sublong  — 地心经度(+E)
elevation — 从WGS66椭球表面测量的海平面以上地心高度(m)
range — 从观测者到卫星的距离(m)
range_velocity — 范围变化率(m/s)
eclipsed — 卫星是否在地球的阴影中
  • 在月球实体上,也设置:
    当前平动:
libration_lat — 纬度
libration_long — 经度
colong — Selenographic cologiude
moon_phase — 曲面照明的百分比
subslar_lat — 太阳所处的月球纬度
  • 在木星天体上,它还决定了面向地球的中心子午线的经度,在系统I(测量在乔维亚赤道的自转)和系统II(测量在温带纬度的自转)。
cmlI — 系统I中的中心子午线经度
cmlII — 系统II中的中央子午线经度
  • 在土星体上,也设置了环的倾斜,向南倾斜为正,向北倾斜为负:
earth_tilt — 向地球倾斜
sun_tilt — 向太阳倾斜

body.compute(observer)

gatech = ephem.Observer()
gatech.lon = '-84.39733'
gatech.lat = '33.775867'
gatech.elevation = 320
gatech.date = '1984/5/30 16:22:56'
v = ephem.Venus(gatech)
print('%s %s' % (v.alt, v.az))
72:19:45.1 134:14:25.4
  • 计算Body的位置。
  • 使用observer的date。
  • 使用observer的epoch。
  • 设置上一节中列出的所有Body 属性。
  • 对于地球卫星对象,天文坐标a_ra和a_dec是topocentric,而不是geocentric。
  • 还为observer计算Body 出现在天空中(或地平线下)的位置,并设置四个其他Body 属性:
Apparent topocentric position
视地形中心位置
ha — Hour angle
ha-小时角
ra — Right ascension
ra-赤经
dec — Declination
dec-倾斜
相对于地平线的视在位置
az — Azimuth 0°–360° east of north
az-方位角0°-360°,北偏东
alt — Altitude ±90° relative to the horizon’s great circle (unaffected by the rise/set setting horizon)
alt-相对于地平线大圆的高度±90°(不受上升/下降地平线的影响)
  • 这些视在位置包括调整以模拟观察者的温度和压力的大气折射;将观察者的压力设置为零以忽略折射。
  • 如果你想知道大气折射对一个位置的影响有多大,最全面的方法是将Body.pressure 设置为零,重新运行计算,这将关闭折射。然后,你可以进行比较,看看折射不仅对其.alt,而且对其表观.ra和.dec的影响。
print(v.alt)
72:19:45.1
u = ephem.unrefract(gatech.pressure, gatech.temperature, v.alt)
print(u)
72:19:26.9
  • 但是,如果您只是想快速检查body高度受折射影响的程度,可以调用unrefract() 并传递一个高度。它将返回如果物体的图像不受大气折射影响时物体出现的真实高度。折射的影响只有在地平线附近才会很大。

catalog format

line = "C/2002 Y1 (Juels-Holvorcem),e,103.7816,166.2194,128.8232,242.5695,0.0002609,0.99705756,0.0000,04/13.2508/2003,2000,g  6.5,4.0"
yh = ephem.readdb(line)
yh.compute('2007/10/1')
print('%.10f' % yh.earth_distance)
14.8046731949
print(yh.mag)
23.96
  • 可以以流行的XEphem格式导入和导出实体。

  • 当你处理小行星和彗星时,它们的轨道参数会经常被修改,你通常会发现自己下载了一个XEphem文件并阅读其内容。

  • 要解释XEphem格式的行,请调用readdb()函数:

    halley = ephem.readdb(line)
    
  • 要以XEphem格式导出正文,请调用正文本身的 writedb() 方法:

    print(halley.writedb())
    
line1 = "ISS (ZARYA)"
line2 = "1 25544U 98067A   03097.78853147  .00021906  00000-0  28403-3 0  8652"
line3 = "2 25544  51.6361  13.7980 0004256  35.6671  59.2566 15.58778559250029"
iss = ephem.readtle(line1, line2, line3)
iss.compute('2003/3/23')
print('%s %s' % (iss.sublong, iss.sublat))
-76:24:18.3 13:05:31.1
  • 卫星元素通常以称为TLE的格式打包,其中一行有卫星名称,后面两行有元素。
  • 调用readtle()函数将TLE条目转换为PyEphem Body。

bodies with orbital elements

  • 当你装载彗星和小行星等小物体时,产生的物体会指定轨道元素,使XEphem能够预测其位置。
  • 这些轨道元素可供您检查和更改。
  • 如果缺少用于加载对象的目录,可以从创建以下类型之一的原始主体并填充其元素开始。
  • 元素属性名称以下划线开头,以区别于通过调用compute()设置的普通Body属性。
  • 每个FixedBody只有三个必要元素:
    _ra,_dec — 位置
    _epoch — 位置的历元
    
    其他FixedBody元素存储有关其外观的琐事
    _class — 单字符串分类
    _spect — 光谱代码的两个字符串
    _ratio — 大直径和小直径之比
    _pa — 长轴在天空中的角度,从北向东测量(°)
    
  • EllipticalBody 元素:
_inc — 倾角(°)
_Om — 上升节点经度(°)
_om — 近日点参数(°)
_a — 与太阳的平均距离(AU)
_M — 近日点的平均异常(°)
_epoch_M — 测量日期_M
_size — 角度大小(1 AU时弧秒)
_e — 偏心度
_epoch — 用于_inc、_Om和_Om的epoch
_H、 _G — H/G震级模型的参数
_g、 _k — g/k量级模型的参数
  • HyperbolicBody 元素:
_epoch — Equinox year for _inc, _Om, and _om
_epoch_p — 近日点纪元
_inc — 倾角 (°)
_Om —上升节点经度 (°)
_om — 近日点参数 (°)
_e —  偏心度
_q —  近日点距离 (AU)
_g, _k — 幅值模型系数
_size — Angular size in arcseconds at 1 AU

  • ParabolicBody 元素:
_epoch — Epoch for _inc, _Om, and _om
_epoch_p — Epoch of perihelion
_inc — Inclination (°)
_Om — Longitude of ascending node (°)
_om — Argument of perihelion (°)
_q — Perihelion distance (AU)
_g, _k — Magnitude model coefficients
_size — Angular size in arcseconds at 1 AU
  • 人造卫星的地球卫星元素:
epoch — Reference epoch
n — Mean motion, in revolutions per day
inc — Inclination (°)
raan — Right Ascension of ascending node (°)
e — Eccentricity
ap — Argument of perigee at epoch (°)
M — Mean anomaly from perigee at epoch (°)
decay — Orbit decay rate in revolutions per day, per day
drag — Object drag coefficient in per earth radii
orbit — Integer orbit number of epoch

Other Functions

m = ephem.Moon('1980/6/1')
print(ephem.constellation(m))
('Sgr', 'Sagittarius')
  • constellation() 函数返回一个元组,其中包含其参数所在的星座的缩写名称和全名。
  • 您可以传递位置被计算的Body,也可以传递坐标的元组(ra,dec)-在这种情况下,假定epoch 2000,除非您还传递指定另一个值的epoch=关键字参数。
print(ephem.delta_t('1980'))
50.54
  • delta_t()函数返回给定日期地球时间和世界时之间的差值(秒)。
  • 采用Date 或Observer 参数。
  • 如果没有参数,则使用now()。
ephem.julian_date('2000/1/1')
2451544.5
  • julian_date() 函数返回给定日期和时间的官方julian date。

  • 采用Date 或Observer参数。

  • 如果没有参数,则使用 now()。

ra, dec = '7:16:00', '-6:17:00'
print(ephem.uranometria(ra, dec))
V2 - P274
print(ephem.uranometria2000(ra, dec))
V2 - P135
print(ephem.millennium_atlas(ra, dec))
V1 - P273
  • 以ra和dec为参数。
  • 返回给定星图中该坐标所在的体积和页面:
    Johannes Bayer的Uranometria。
    Wil Tirion编辑的Uranometria 2000.0。
    罗杰·W·辛诺特和迈克尔·A·C·佩里曼的《千年星图》
m1 = ephem.Moon('1970/1/16')
m2 = ephem.Moon('1970/1/17')
s = ephem.separation(m1, m2)
print("In one day the Moon moved %s" % s)
In one day the Moon moved 12:33:28.5
  • separation()函数的作用是:返回球体上两个位置之间的角度。

  • 每个参数可以是一个Body(在这种情况下使用其ra和dec),也可以是一组元组(lon,lat),给出一对球面坐标,其中lon测量球体赤道周围的角度,lat测量赤道上方或下方的角度。

Coordinate Conversion

np = Equatorial('0', '90', epoch='2000')
g = Galactic(np)
print('%s %s' % (g.lon, g.lat))
122:55:54.9 27:07:41.7
  • 有三个坐标类,每个坐标类都有三个特性:
Equatorial
ra — right ascension
dec — declination
epoch — epoch of the coordinate
Ecliptic
lon — ecliptic longitude (+E)
lat — ecliptic latitude (+N)
epoch — epoch of the coordinate
Galactic
lon — galactic longitude (+E)
lat — galactic latitude (+N)
epoch — epoch of the coordinate
  • 创建新坐标时,可以传递一个物体、另一个坐标或一对原始角度(始终将经度或赤经放在第一位)。
  • 创建坐标时,可以选择传递指定坐标系历元的epoch=关键字。否则,将从使用的主体或其他坐标复制epoch,或者将J2000用作默认值。
  • 有关详细信息,请参见“坐标变换”文档

Observers

lowell = ephem.Observer()
lowell.lon = '-111:32.1'
lowell.lat = '35:05.8'
lowell.elevation = 2198
lowell.date = '1986/3/13'
j = ephem.Jupiter()
j.compute(lowell)
print(j.circumpolar)
False
print(j.neverup)
False
print('%s %s' % (j.alt, j.az))
0:57:44.7 256:41:01.3
  • 描述地球表面上的位置。
  • 传递给Body的compute() 方法。
  • 您可以设置以下属性:
date — Date and time
epoch — Epoch for astrometric RA/dec
地理坐标,假设 IERS 1989 ellipsoid (flattening=1/298.257):
lat — Geodetic latitude (+N)
lon — Geodetic longitude (+E)
elevation — Elevation (m)

temperature — Temperature (°C)
pressure — Atmospheric pressure (mBar)
  • date 默认为now()。

  • epoch 默认为“2000”。

  • temperature 默认为25°C。

  • pressure 默认为1010mBar。

  • 其他属性默认为零。

  • 你也可以用它的旧名称temp来表示温度。

  • 你可以用copy()方法复制一个Observer

lowell.compute_pressure()
lowell.pressure
775.6025138640499
  • 使用国际标准大气计算观察者当前海拔高度的压力
boston = ephem.city('Boston')
print('%s %s' % (boston.lat, boston.lon))
42:21:30.4 -71:03:35.2
  • XEphem包括一个小型的世界城市数据库。

  • 每次调用 city() 都会返回一个新的Observer。

  • 仅设置纬度、经度和高程。

transit, rising, and setting

sitka = ephem.Observer()
sitka.date = '1999/6/27'
sitka.lat = '57:10'
sitka.lon = '-135:15'
m = ephem.Mars()
print(sitka.next_transit(m))
1999/6/27 04:22:45
print('%s %s' % (m.alt, m.az))
21:18:33.6 180:00:00.0
print(sitka.next_rising(m, start='1999/6/28'))
1999/6/28 23:28:25
print('%s %s' % (m.alt, m.az))
-0:00:05.8 111:10:41.6
  • 有八种Observer 方法可用于确定物体升起、穿过子午线和落下的时间:
previous_transit()
next_transit()

previous_antitransit()
next_antitransit()

previous_rising()
next_rising()

previous_setting()
next_setting()
  • 每个参数都有一个Body参数,它可以是除EarthSatellite之外的任何实体(应该使用下面的next_pass() 方法)。

  • 从Observer 的date 开始,他们搜索了天体从上一次反凌日到下一次的整个天空回路。

  • 如果搜索成功,则返回Date值。

  • 在那一天,Body始终保持在原位。

  • 始终保持Observer 未修改。

  • 采用可选的start=参数,给出搜索上升、过境或设置的开始日期和时间。

  • 我们将子午线定义为从天体北极到南极的架空线,反子午线则定义为同一大圆的另一半;因此,无论身体是否越过地平线,过境和反过境方法总是成功的。

  • 但是,如果Body不越过地平线,上升和下降功能会引发异常;异常层次结构为:

ephem.CircumpolarError
 |
 +--- ephem.AlwaysUpError
 +--- ephem.NeverUpError
  • 上升和下降被定义为Body上肢接触地平线的时刻(即Body的alt加radius 等于零的时刻)。

  • 上升和下降对地平线处的大气折射敏感,因此对Observer 的temperature 和pressure;将pressure 设置为零以关闭折射。

  • 上升和下降关注Observer 的horizon 属性;请参见下一节。

line1 = "IRIDIUM 80 [+]"
line2 = "1 25469U 98051C   09119.61415140 -.00000218  00000-0 -84793-4 0  4781"
line3 = "2 25469  86.4029 183.4052 0002522  86.7221 273.4294 14.34215064557061"
iridium_80 = ephem.readtle(line1, line2, line3)
boston.date = '2009/5/1'
info = boston.next_pass(iridium_80)
print("Rise time: %s azimuth: %s" % (info[0], info[1]))
Rise time: 2009/5/1 00:22:15 azimuth: 104:36:16.0
  • next_pass() 方法获取地球卫星体,并确定它下一次越过地平线的时间。

  • 它返回一个六元素元组,给出:

    0  Rise time
    1  Rise azimuth
    2  Maximum altitude time
    3  Maximum altitude
    4  Set time
    5  Set azimuth
    
  • 如果未找到该事件,则任何元组值都可以为“None”。

observer.horizon

sun = ephem.Sun()
greenwich = ephem.Observer()
greenwich.lat = '51:28:38'
print(greenwich.horizon)
>>> 0:00:00.0
greenwich.date = '2007/10/1'
r1 = greenwich.next_rising(sun)
greenwich.pressure = 0
greenwich.horizon = '-0:34'
greenwich.date = '2007/10/1'
r2 = greenwich.next_rising(sun)
print('Visual sunrise: %s' % r1)
>>> Visual sunrise: 2007/10/1 05:59:30
print('Naval Observatory sunrise: %s' % r2)
>>> Naval Observatory sunrise: 2007/10/1 05:59:50
  • horizon 属性定义您的 horizon,即您认为身体上肢正在上升和下降时的高度。
  • horizon 默认为零度。
  • 美国海军天文台不是动态计算折射率,而是使用地平线上34’折射率的恒定估计值。因此,在上面的例子中,我们没有试图对temperature 和pressure 进行评判,从而得出神奇的34’,而是完全关闭了PyEphem折射,并将地平线本身定义为34’高度。
  • 为了确定物体何时会升到“足够高”的高度,将horizon 设置为正数度。
  • 当observer 离地面很高时,可以使用horizon 的负值。

other Observer methods

madrid = ephem.city('Madrid')
madrid.date = '1978/10/3 11:32'
print(madrid.sidereal_time())
>>> 12:04:28.09
  • 不带任何参数。

  • 计算观察者的纬度、经度、日期和时间的本地视侧实时(LAST)。

  • 返回值是一个以弧度为单位的浮点角度,在地球自转24小时的情况下,以小时、分钟和秒为单位打印。

ra, dec = madrid.radec_of(0, '90')  # altitude=90°: the zenith
print('%s %s' % (ra, dec))
>>> 12:05:35.12 40:17:49.8
  • 参数az和alt都被解释为角度,使用PyEphem的惯用约定:浮点数是弧度,而字符串被解释为度。
  • 返回天球上位于视方位角和高度的点的天体赤经和赤纬,作为参数提供。
  • 如果observer的.exoch保留为其默认值J2000,则返回J2000星图坐标。要返回日期坐标的平分点,即地球极点在该日期实际指向的位置,请使用类似madrid的赋值覆盖默认值。madrid.epoch = madrid.date。

Equinoxes & Solstices

d1 = ephem.next_equinox('2000')
print(d1)
>>> 2000/3/20 07:35:17
d2 = ephem.next_solstice(d1)
print(d2)
>>> 2000/6/21 01:47:51
t = d2 - d1
print("Spring lasted %.1f days" % t)
>>> Spring lasted 92.8 days
  • 函数传递Date 参数。

  • 返回一个Date。

  • 可用功能:

    previous_solstice()
    next_solstice()
    
    previous_equinox()
    next_equinox()
    
    previous_vernal_equinox()
    next_vernal_equinox()
    

Phases of the Moon

d1 = ephem.next_full_moon('1984')
print(d1)
>>> 1984/1/18 14:05:10
d2 = ephem.next_new_moon(d1)
print(d2)
>>> 1984/2/1 23:46:25
  • 函数传递Date 参数。

  • 返回一个Date。

  • 可用功能:

    previous_new_moon()
    next_new_moon()
    
    previous_first_quarter_moon()
    next_first_quarter_moon()
    
    previous_full_moon()
    next_full_moon()
    
    previous_last_quarter_moon()
    next_last_quarter_moon()
    

Angles

a = ephem.degrees(3.141593)  # float: radians
print(a)
>>> 180:00:00.1
a = ephem.degrees('180:00:00')  # str: degrees
print(a)
>>> 180:00:00.0
a
>>> 3.141592653589793
print("180 degrees is %f radians" % a)
>>> 180 degrees is 3.141593 radians
h = ephem.hours('1:00:00')
deg = ephem.degrees(h)
print("1h right ascension = %s degrees" % deg)
>>> 1h right ascension = 15:00:00.0 degrees
  • 许多“Body ”和“Observer ”属性将其值作为“Angle ”对象返回。
  • 大多数角度以度为单位。
  • 只有赤经是以小时为单位测量的。
  • 您还可以通过两个ephem函数创建角度:
    degrees()- 返回Angle (度)
    hours()- 返回以小时为单位的Angle
  • 每个角度都像Python浮点。
  • 角度始终存储浮点弧度。
  • 只有在打印、传递给str()或用“%s”格式化时,角度才会显示为度或小时。
  • 在Body 或Observer 中设置Angle 属性,或自己创建角度时,可以提供浮点弧度或带度数或小时的字符串。以下角度是等效的:
    ephem.degrees(ephem.pi / 32)
    ephem.degrees('5.625')
    ephem.degrees('5:37.5')
    ephem.degrees('5:37:30')
    ephem.degrees('5:37:30.0')
    ephem.hours('0.375')
    ephem.hours('0:22.5')
    ephem.hours('0:22:30')
    ephem.hours('0:22:30.0')
    
  • 在对angles进行数学计算时,结果通常会超出angles的正常边界。因此,为每个angles提供了两个属性:
    norm — 返回归一化为[0,2π的角度)。
    znorm — 返回归一化为[-π,π)的角度。
  • 有关详细信息,请参见角度文档。

Dates

d = ephem.Date('1997/3/9 5:13')
print(d)
>>> 1997/3/9 05:13:00
d
>>> 35496.717361111114
d.triple()
>>> (1997, 3, 9.21736111111386)
d.tuple()
>>> (1997, 3, 9, 5, 13, 0.0)
d + ephem.hour
>>> 35496.75902777778
print(ephem.date(d + ephem.hour))
>>> 1997/3/9 06:13:00
print(ephem.date(d + 1))
>>> 1997/3/10 05:13:00
  • 日期以浮动形式存储和返回。
    只有当打印、传递给str()或格式化为“%s”时,日期才会表示为一个字符串,给出日历日期和时间。
  • 现代公历用于最近的日期,旧儒略历用于1582年10月15日之前的日期。
  • 日期总是使用世界时,而不是当地时区。
  • 调用.triple() 将日期拆分为年、月和日。
  • 调用.tuble() 将日期拆分为年、月、日、小时、分钟和秒。
  • 您可以创建ephem.Date() 除了其他对象将返回的日期之外,还可以为自己添加日期。
  • 调用ephem.now()表示当前日期和时间。
  • 在主体或观察者中设置日期属性,或者自己创建角度时,可以提供浮点弧度、字符串或元组。以下日期相同:
    ephem.Date(35497.7197916667)
    ephem.Date('1997/3/10.2197916667')
    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))
    
  • 日期存储自1899年最后一天的世界时间中午起经过的天数。通过从日期中添加和减去整数,您可以将几天移到过去或未来。如果要移动较小的量,以下常量可能会有所帮助:
    ephem.hour
    ephem.minute
    ephem.second
    
  • 有关详细信息,请参阅Date文档。

to your local time zone

d = ephem.Date('1997/3/9 5:13')
local = ephem.localtime(d)
local
>>> datetime.datetime(1997, 3, 9, 0, 13)
print(local)
>>> 1997-03-09 00:13:00
  • localtime() 函数的作用是将PyEphem日期转换为以本地时区表示的Python datetime 对象。

to a specific timezone

from zoneinfo import ZoneInfo
zone = ZoneInfo('US/Eastern')
local = ephem.to_timezone(d, zone)
local
>>> datetime.datetime(1997, 3, 9, 0, 13, tzinfo=zoneinfo.ZoneInfo(key='US/Eastern'))
print(local)
>>> 1997-03-09 00:13:00-05:00
  • to_timezone()函数将PyEphem日期转换为以提供的时区表示的Python datetime 对象。时区需要符合datetime.tzinfo。为了简单起见,提供了UTC自己的实现。

  • Python 3.9及更高版本在zoneinfo模块中提供世界时区。以前版本的Python可以通过安装第三方pytz模块来加载世界时区。

from a specific timezone

from datetime import datetime
from zoneinfo import ZoneInfo
zone = ZoneInfo('US/Eastern')
local = datetime(2021, 11, 26, 10, 17, tzinfo=zone)
d = ephem.Date(local)
print(d)
>>> 2021/11/26 15:17:00
  • PyEphem 4.1.1中的新功能:如果您向PyEfem传递指定时区的Python datetime ,那么PyEffem将自动将日期转换为UTC。
  • Python 3.9及更高版本在zoneinfo模块中提供世界时区。以前版本的Python可以通过安装第三方pytz模块来加载世界时区。

Stars and Cities

rigel = ephem.star('Rigel')
print('%s %s' % (rigel._ra, rigel._dec))
>>> 5:14:32.27 -8:12:05.9
  • PyEphem提供了明亮恒星的目录。
  • 每次调用star() 都会返回一个新的FixedBody,它的坐标是命名恒星的坐标。
stuttgart = ephem.city('Stuttgart')
print(stuttgart.lon)
>>> 9:10:50.8
print(stuttgart.lat)
>>> 48:46:37.6
  • PyEphemt存在122个世界城市。
  • city() 函数返回一个Observer ,其经度、纬度和海拔高度与给定城市相同。

Other Constants

  • PyEphem提供了几个主要恒星地图集时代的日期常数:
    B1900
    B1950
    J2000
    
  • PyEphem提供了四个距离的长度(均以米为单位)作为参考:
    ephem.meters_per_au
    ephem.earth_radius
    ephem.moon_radius
    ephem.sun_radius
    
  • PyEphem提供了以米/秒为单位的光速:
    ephem.c
    

Attributes to avoid

  • 为了避免破坏旧脚本,PyEphem仍然支持几个已弃用的body属性。它们调用的旧C例程尚未被证明非常可靠。相反,可以尝试使用上面“transit, rising, and setting”部分描述的例程。
    • rise_time
    • rise_az
    • transit_time
    • transit_alt
    • set_time
    • set_az
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值