diff --git a/jobs/inputs/sol_ephemeris.txt b/jobs/inputs/sol_ephemeris.txt index 87109f78cc2380dcfb7e413f022bdd94ea8ce9b6..f69366754268513af8223253e3108db6c0750bc4 100644 --- a/jobs/inputs/sol_ephemeris.txt +++ b/jobs/inputs/sol_ephemeris.txt @@ -1,9 +1,9 @@ !$$SOF -MAKE_EPHEM=YES -COMMAND=10 -EPHEM_TYPE=VECTORS +MAKE_EPHEM='YES' +COMMAND='10' +EPHEM_TYPE='VECTORS' CENTER='coord@399' -COORD_TYPE=GEODETIC +COORD_TYPE='GEODETIC' SITE_COORD='13.35075983141236,52.497297553950155,0.0354' START_TIME='2023-12-24' STOP_TIME='2024-01-01' @@ -16,5 +16,5 @@ CAL_TYPE='M' OUT_UNITS='KM-S' VEC_LABELS='YES' VEC_DELTA_T='NO' -CSV_FORMAT='NO' -OBJ_DATA='YES' \ No newline at end of file +CSV_FORMAT='YES' +OBJ_DATA='NO' \ No newline at end of file diff --git a/jobs/src/jpl_data_query.py b/jobs/src/jpl_data_query.py deleted file mode 100644 index cbcbe9c24eaf23b28f2b3cb6874469beb4d8cfaa..0000000000000000000000000000000000000000 --- a/jobs/src/jpl_data_query.py +++ /dev/null @@ -1,15 +0,0 @@ -""" -This module contains functions to query JPL Horizons -on-line solar system data (see https://ssd.jpl.nasa.gov/horizons). - -Example: - python jobs/src/jpl_data_query.py jobs/inputs/mars_ephemeris.txt > results.txt -""" -import sys -import requests - -f = open(sys.argv[1]) -url = "https://ssd.jpl.nasa.gov/api/horizons_file.api" -r = requests.post(url, data={'format': 'text'}, files={'input': f}) -print(r.text) -f.close() diff --git a/jobs/src/jpl_utils.py b/jobs/src/jpl_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..9c8863786b6cc7bf5a70fbbfe879cabba143276c --- /dev/null +++ b/jobs/src/jpl_utils.py @@ -0,0 +1,43 @@ +""" +This module contains functions to query and parse JPL Horizons +on-line solar system data (see https://ssd-api.jpl.nasa.gov/doc/horizons.html). +""" +import requests + +import numpy as np + + +def query_data(input_file: str) -> str: + """ + Send request to the Horizons API with settings for the desired ephemeris results saved in an input file. + """ + with open(input_file, 'r') as f: + file = f.read() + + url = "https://ssd.jpl.nasa.gov/api/horizons_file.api" + r = requests.post(url, data={'format': 'json'}, files={'input': file}) + + return r.json()['result'] + + +def parse_output(output: str) -> np.ndarray: + """ + Parse output of API calls for positions and velocities + """ + + output = list(filter(bool, output.split("\n"))) + vector_list = [line.split(",") for line in output if line[0].isdigit()] + vector_list = [vector[2:8] for vector in vector_list] + + r = np.zeros((len(vector_list), 3), dtype=float) + v = np.zeros((len(vector_list), 3), dtype=float) + + for i, vector in enumerate(vector_list): + r[i][0] = float(vector[0]) + r[i][1] = float(vector[1]) + r[i][2] = float(vector[2]) + v[i][0] = float(vector[3]) + v[i][1] = float(vector[4]) + v[i][2] = float(vector[5]) + + return r, v