47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""Routines to download Earth orientation data."""
|
||
|
||
import numpy as np
|
||
import os
|
||
from skyfield.api import load
|
||
from skyfield.timelib import julian_date
|
||
|
||
def morrison_and_stephenson_2004_table():
|
||
"""Table of smoothed Delta T values from Morrison and Stephenson, 2004."""
|
||
import pandas as pd
|
||
f = load.open('http://eclipse.gsfc.nasa.gov/SEcat5/deltat.html')
|
||
tables = pd.read_html(f.read())
|
||
df = tables[0]
|
||
return pd.DataFrame({'year': df[0], 'delta_t': df[1]})
|
||
|
||
def parse_S15_table(f):
|
||
"""Parse polynomial coefficients from Table S15.
|
||
|
||
The table is available at the website of Her Majesty's Nautical
|
||
Almanac Office, from the paper “Measurement of the Earth's Rotation:
|
||
720 BC to AD 2015” by L.V. Morrison, F.R. Stephenson, C.Y. Hohenkerk
|
||
and M. Zawilski 2021.
|
||
|
||
"""
|
||
# http://astro.ukho.gov.uk/nao/lvm/Table-S15.2020.txt
|
||
content = f.read()
|
||
banner = b'- ' * 36 + b'-\n'
|
||
sections = content.split(banner)
|
||
names = sections[1].splitlines()[-1].decode('utf-8').split()
|
||
table = np.loadtxt(sections[2].splitlines())
|
||
return names, table.T
|
||
|
||
def main():
|
||
thisdir = os.path.dirname(__file__)
|
||
|
||
df = morrison_and_stephenson_2004_table()
|
||
year = df.year.values
|
||
jd = julian_date(year, 1, 1)
|
||
delta_t = df.delta_t.values
|
||
array = np.array((jd, delta_t))
|
||
np.save(os.path.join(thisdir, 'morrison_stephenson_deltat.npy'),
|
||
array)
|
||
|
||
if __name__ == '__main__':
|
||
main()
|