Newer
Older
from __future__ import absolute_import
from datetime import datetime
from dateutil.relativedelta import relativedelta
import sys
from os import path
import os
from obspy.core import UTCDateTime
# ensure geomag is on the path before importing
try:
import geomagio # noqa (ignores this line for lint purposes.)
except ImportError:
script_dir = path.dirname(path.abspath(__file__))
sys.path.append(path.normpath(path.join(script_dir, "..")))
from geomagio.residual import WebAbsolutesFactory, CalFileFactory
from geomagio.edge import EdgeFactory
from geomagio.pcdcp import PCDCPWriter
PCDCP_FILENAME_FORMAT = "{OBSERVATORY}{YEAR}{YEARDAY}"
CAL_FILENAME_FORMAT = "{OBSERVATORY}{YEAR}PCD.cal"
if len(sys.argv) != 4:
cmd = sys.argv[0]
print("Usage: {} OBSERVATORY YEAR YEARDAY".format(cmd), file=sys.stderr)
"Example: {} HON 2019 325".format(cmd), file=sys.stderr,
)
sys.exit(1)
OBSERVATORY = sys.argv[1]
YEAR = int(sys.argv[2])
YEARDAY = int(sys.argv[3])
pcdcp_starttime = datetime(YEAR, 1, 1) + relativedelta(days=+YEARDAY - 1)
pcdcp_endtime = pcdcp_starttime + relativedelta(days=+1)
cal_starttime = pcdcp_starttime + relativedelta(months=-1)
cal_endtime = pcdcp_starttime + relativedelta(months=+2)
pcdcp_starttime = UTCDateTime(
"{}-{}-{}T00:00:00".format(
pcdcp_starttime.year, pcdcp_starttime.month, pcdcp_starttime.day
)
)
pcdcp_endtime = UTCDateTime(
"{}-{}-{}T00:00:00".format(
pcdcp_endtime.year, pcdcp_endtime.month, pcdcp_endtime.day
)
)
cal_starttime = UTCDateTime(
"{}-{}-{}T00:00:00".format(
cal_starttime.year, cal_starttime.month, cal_starttime.day
)
)
cal_endtime = UTCDateTime(
"{}-{}-{}T00:00:00".format(cal_endtime.year, cal_endtime.month, cal_endtime.day)
filename = CAL_FILENAME_FORMAT.format(OBSERVATORY=OBSERVATORY, YEAR=cal_starttime.year)
cal_file_path = ":C\\Calibrat\\{}\\".format(OBSERVATORY)
readings = WebAbsolutesFactory().get_readings(
observatory=OBSERVATORY,
starttime=cal_starttime,
endtime=cal_endtime,
include_measurements=True,
)
calfile = CalFileFactory().format_readings(readings=readings)
print("Writing cal file to {}".format(filename), file=sys.stderr)
with open(cal_file_path + filename, "wb", -1) as f:
f.write(calfile.encode())
pcdcp_channels = ["H", "E", "Z", "F"]
e = EdgeFactory()
ts_second = e.get_timeseries(
starttime=pcdcp_starttime,
endtime=pcdcp_endtime,
observatory=OBSERVATORY,
channels=pcdcp_channels,
type="variation",
interval="second",
)
ts_minute = e.get_timeseries(
starttime=pcdcp_starttime,
endtime=pcdcp_endtime,
observatory=OBSERVATORY,
channels=pcdcp_channels,
type="variation",
interval="minute",
)
pcdcp_w = PCDCPWriter()
raw_file_path = ":C\\RAW\\{}\\".format(OBSERVATORY)
raw_filename = (
PCDCP_FILENAME_FORMAT.format(
OBSERVATORY=OBSERVATORY, YEAR=pcdcp_starttime.year, YEARDAY=YEARDAY
)
+ ".raw"
)
min_file_path = ":C\\USGSDCP\\{}\\".format(OBSERVATORY)
min_filename = (
PCDCP_FILENAME_FORMAT.format(
OBSERVATORY=OBSERVATORY, YEAR=pcdcp_starttime.year, YEARDAY=YEARDAY
)
+ ".min"
)
print("Writing raw file to {}".format(raw_filename), file=sys.stderr)
raw_file = open(raw_file_path + raw_filename, "wb")
pcdcp_w.write(raw_file, ts_second, pcdcp_channels)
raw_file.close()
print("Writing min file to {}".format(min_filename), file=sys.stderr)
min_file = open(min_file_path + min_filename, "wb")
pcdcp_w.write(min_file, ts_minute, pcdcp_channels)
min_file.close()