Merge upstream Use location from FITS header if available
parent
e6c7eec4d4
commit
1d549b6237
|
@ -56,8 +56,6 @@ if __name__ == "__main__":
|
|||
warnings.simplefilter("ignore", AstropyWarning)
|
||||
|
||||
|
||||
# Observer settings
|
||||
site_id = cfg.getint("Observer", "cospar")
|
||||
|
||||
nstarsmin = cfg.getint("Processing", "nstarsmin")
|
||||
|
||||
|
@ -157,7 +155,7 @@ if __name__ == "__main__":
|
|||
obs = []
|
||||
for t in tracks:
|
||||
# Add to observation
|
||||
obs.append(Observation(ff, t.tmid, t.x0, t.y0, site_id,
|
||||
obs.append(Observation(ff, t.tmid, t.x0, t.y0, ff.site_id,
|
||||
t.satno, t.cospar, t.catalogname))
|
||||
|
||||
# Write observations
|
||||
|
|
|
@ -307,10 +307,17 @@ class FourFrame:
|
|||
self.ra0 = None
|
||||
self.dec0 = None
|
||||
self.tracked = False
|
||||
self.lat = None
|
||||
self.lon = None
|
||||
self.height = None
|
||||
self.has_location = False
|
||||
else:
|
||||
# Read FITS file
|
||||
hdu = fits.open(fname)
|
||||
|
||||
# Read header
|
||||
header = hdu[0].header
|
||||
|
||||
# Read image planes
|
||||
self.zavg, self.zstd, self.zmax, self.znum = hdu[0].data
|
||||
|
||||
|
@ -319,38 +326,51 @@ class FourFrame:
|
|||
|
||||
# Frame properties
|
||||
self.ny, self.nx = self.zavg.shape
|
||||
self.nz = hdu[0].header["NFRAMES"]
|
||||
self.nz = header["NFRAMES"]
|
||||
|
||||
# Read frame time oselfsets
|
||||
self.dt = np.array([hdu[0].header["DT%04d" % i] for i in range(self.nz)])
|
||||
self.dt = np.array([header["DT%04d" % i] for i in range(self.nz)])
|
||||
|
||||
# Read header
|
||||
self.mjd = hdu[0].header["MJD-OBS"]
|
||||
self.nfd = hdu[0].header["DATE-OBS"]
|
||||
self.site_id = hdu[0].header["COSPAR"]
|
||||
self.observer = hdu[0].header["OBSERVER"]
|
||||
self.texp = hdu[0].header["EXPTIME"]
|
||||
self.mjd = header["MJD-OBS"]
|
||||
self.nfd = header["DATE-OBS"]
|
||||
self.site_id = header["COSPAR"]
|
||||
self.observer = header["OBSERVER"]
|
||||
self.texp = header["EXPTIME"]
|
||||
self.fname = fname
|
||||
self.froot = os.path.splitext(fname)[0]
|
||||
|
||||
# Location info
|
||||
keys = ["SITELONG", "SITELAT", "ELEVATIO"]
|
||||
if np.all([key in header for key in keys]):
|
||||
self.lon = header["SITELONG"]
|
||||
self.lat = header["SITELAT"]
|
||||
self.height = header["ELEVATIO"]
|
||||
self.has_location = True
|
||||
else:
|
||||
self.lon = None
|
||||
self.lat = None
|
||||
self.height = None
|
||||
self.has_location = False
|
||||
|
||||
# Astrometry keywords
|
||||
self.crpix = np.array([hdu[0].header["CRPIX1"], hdu[0].header["CRPIX2"]])
|
||||
self.crval = np.array([hdu[0].header["CRVAL1"], hdu[0].header["CRVAL2"]])
|
||||
self.crpix = np.array([header["CRPIX1"], header["CRPIX2"]])
|
||||
self.crval = np.array([header["CRVAL1"], header["CRVAL2"]])
|
||||
self.cd = np.array(
|
||||
[
|
||||
[hdu[0].header["CD1_1"], hdu[0].header["CD1_2"]],
|
||||
[hdu[0].header["CD2_1"], hdu[0].header["CD2_2"]],
|
||||
]
|
||||
)
|
||||
self.ctype = [hdu[0].header["CTYPE1"], hdu[0].header["CTYPE2"]]
|
||||
self.cunit = [hdu[0].header["CUNIT1"], hdu[0].header["CUNIT2"]]
|
||||
self.crres = np.array([hdu[0].header["CRRES1"], hdu[0].header["CRRES2"]])
|
||||
self.ctype = [header["CTYPE1"], header["CTYPE2"]]
|
||||
self.cunit = [header["CUNIT1"], header["CUNIT2"]]
|
||||
self.crres = np.array([header["CRRES1"], header["CRRES2"]])
|
||||
self.ra0 = self.crval[0]
|
||||
self.dec0 = self.crval[1]
|
||||
|
||||
# Check for sidereal tracking
|
||||
try:
|
||||
self.tracked = bool(hdu[0].header["TRACKED"])
|
||||
self.tracked = bool(header["TRACKED"])
|
||||
except KeyError:
|
||||
self.tracked = False
|
||||
|
||||
|
@ -392,9 +412,16 @@ class FourFrame:
|
|||
nmjd = int(np.ceil(texp))
|
||||
ra0, de0 = self.crval[0], self.crval[1]
|
||||
radius = np.sqrt(self.wx * self.wx + self.wy * self.wy)
|
||||
lat = cfg.getfloat("Observer", "latitude")
|
||||
lon = cfg.getfloat("Observer", "longitude")
|
||||
height = cfg.getfloat("Observer", "height")
|
||||
|
||||
# Use FITS location if available, config otherwise
|
||||
if self.has_location:
|
||||
lat = self.lat
|
||||
lon = self.lon
|
||||
height = self.height
|
||||
else:
|
||||
lat = cfg.getfloat("Observer", "latitude")
|
||||
lon = cfg.getfloat("Observer", "longitude")
|
||||
height = cfg.getfloat("Observer", "height")
|
||||
|
||||
# Format command
|
||||
command = f"satpredict -t {nfd} -l {texp} -n {nmjd} -L {lon} -B {lat} -H {height}"
|
||||
|
|
Loading…
Reference in New Issue