Nutze Skyfield fuer praezisere Daemmerungsberechnung
This commit is contained in:
+59
@@ -0,0 +1,59 @@
|
||||
"""Parse Stellarium data files."""
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
StarName = namedtuple('StarName', 'hip name')
|
||||
|
||||
def parse_constellations(lines):
|
||||
"""Return a list of constellation outlines.
|
||||
|
||||
Each constellation outline is a list of edges, each of which is
|
||||
drawn between a pair of specific stars::
|
||||
|
||||
[
|
||||
(name, [(star1, star2), (star3, star4), ...]),
|
||||
(name, [(star1, star2), (star3, star4), ...]),
|
||||
...
|
||||
]
|
||||
|
||||
Each name is a 3-letter constellation abbreviation; each star is an
|
||||
integer Hipparcos catalog number. See :ref:`neowise-chart` for an
|
||||
example of how to combine this data with the Hipparcos star catalog
|
||||
to draw constellation lines on a chart.
|
||||
|
||||
"""
|
||||
constellations = []
|
||||
for line in lines:
|
||||
line = line.lstrip()
|
||||
if line.startswith(b'#'):
|
||||
continue
|
||||
fields = line.split()
|
||||
if not fields:
|
||||
continue
|
||||
name = fields[0]
|
||||
edges = [(int(fields[i]), int(fields[i+1]))
|
||||
for i in range(2, len(fields), 2)]
|
||||
constellations.append((name.decode('utf-8'), edges))
|
||||
return constellations
|
||||
|
||||
def parse_star_names(lines):
|
||||
"""Return the names in a Stellarium ``star_names.fab`` file.
|
||||
|
||||
Returns a list of named tuples, each of which offers a ``.hip``
|
||||
attribute with a Hipparcos catalog number and a ``.name`` attribute
|
||||
with the star name. Do not depend on the tuple having only length
|
||||
two; additional fields may be added in the future.
|
||||
|
||||
"""
|
||||
names = []
|
||||
for line in lines:
|
||||
line = line.strip()
|
||||
if line == b'' or line.startswith(b'#'):
|
||||
continue
|
||||
fields = line.split()
|
||||
hip, name = fields[0].split(b'|')
|
||||
names.append(StarName(
|
||||
int(hip),
|
||||
name.strip(b'_(")').decode('utf-8'),
|
||||
))
|
||||
return names
|
||||
Reference in New Issue
Block a user