meteortools.fileformats.platepar
1# 2# class to read a single or multiple platepar files 3# 4# Copyright (C) 2018-2023 Mark McIntyre 5 6import json 7import os 8import glob 9 10 11class platepar: 12 """ Load and manage an RMS platepar object, used to map an image to the sky """ 13 def __init__(self, plateparfile): 14 """" Create and load a platepar object from a file plateparfile """ 15 with open(plateparfile, 'r') as pp: 16 self.jsd = json.load(pp) 17 try: 18 self.id = self.jsd['station_code'] 19 # field of view details 20 self.alt_centre = self.jsd['alt_centre'] 21 self.az_centre = self.jsd['az_centre'] 22 self.Ho = self.jsd['Ho'] 23 self.fov_h = self.jsd['fov_h'] 24 self.fov_v = self.jsd['fov_v'] 25 self.rotation_from_horiz = self.jsd['rotation_from_horiz'] 26 self.RA_d = self.jsd['RA_d'] 27 self.dec_d = self.jsd['dec_d'] 28 self.pos_angle_ref = self.jsd['pos_angle_ref'] 29 30 # camera location 31 self.lat = self.jsd['lat'] 32 self.lon = self.jsd['lon'] 33 self.elev = self.jsd['elev'] 34 35 # camera resolution 36 self.X_res = self.jsd['X_res'] 37 self.Y_res = self.jsd['Y_res'] 38 39 # Reference time and date 40 self.time = 0 41 self.JD = self.jsd['JD'] 42 self.UT_corr =self.jsd['UT_corr'] 43 44 # FOV scale (px/deg) 45 self.F_scale = self.jsd['F_scale'] 46 47 except: 48 print('invalid json file') 49 50 def getLocation(self): 51 """ get the lat, lon and elevation from the platepar""" 52 return [self.lat, self.lon, self.elev] 53 54 def getView(self): 55 """ get the pointing direction (alt/az), field of view (h/v) and rotation """ 56 return [self.altcentre, self.azcentre, self.fov_h, self.fov_v, self.rot] 57 58 def getResolution(self): 59 """ Get the reported camera resolution """ 60 return [self.xres, self.yres] 61 62 63def loadPlatepars(fldr): 64 """ Create a dictionary of multiple platepars 65 66 Arguments: 67 fldr: [string] A folder containing one or more platepar files 68 69 Returns: 70 a json dict containing each platepar indexed by the corresponding filename 71 """ 72 platepars ='{' 73 pth = os.path.join(fldr, '*.json') 74 pps = glob.glob(pth) 75 for pp in pps: 76 thispl = platepar(pp) 77 if thispl is not None: 78 if len(platepars) > 1: # and pp != pps[-1]: 79 platepars = platepars + ',' 80 platepars = platepars + '"' + thispl.id +'": '+ json.dumps(thispl.jsd) 81 platepars = platepars + '}' 82 #print(platepars) 83 ppjson = json.loads(platepars) 84 return ppjson
class
platepar:
12class platepar: 13 """ Load and manage an RMS platepar object, used to map an image to the sky """ 14 def __init__(self, plateparfile): 15 """" Create and load a platepar object from a file plateparfile """ 16 with open(plateparfile, 'r') as pp: 17 self.jsd = json.load(pp) 18 try: 19 self.id = self.jsd['station_code'] 20 # field of view details 21 self.alt_centre = self.jsd['alt_centre'] 22 self.az_centre = self.jsd['az_centre'] 23 self.Ho = self.jsd['Ho'] 24 self.fov_h = self.jsd['fov_h'] 25 self.fov_v = self.jsd['fov_v'] 26 self.rotation_from_horiz = self.jsd['rotation_from_horiz'] 27 self.RA_d = self.jsd['RA_d'] 28 self.dec_d = self.jsd['dec_d'] 29 self.pos_angle_ref = self.jsd['pos_angle_ref'] 30 31 # camera location 32 self.lat = self.jsd['lat'] 33 self.lon = self.jsd['lon'] 34 self.elev = self.jsd['elev'] 35 36 # camera resolution 37 self.X_res = self.jsd['X_res'] 38 self.Y_res = self.jsd['Y_res'] 39 40 # Reference time and date 41 self.time = 0 42 self.JD = self.jsd['JD'] 43 self.UT_corr =self.jsd['UT_corr'] 44 45 # FOV scale (px/deg) 46 self.F_scale = self.jsd['F_scale'] 47 48 except: 49 print('invalid json file') 50 51 def getLocation(self): 52 """ get the lat, lon and elevation from the platepar""" 53 return [self.lat, self.lon, self.elev] 54 55 def getView(self): 56 """ get the pointing direction (alt/az), field of view (h/v) and rotation """ 57 return [self.altcentre, self.azcentre, self.fov_h, self.fov_v, self.rot] 58 59 def getResolution(self): 60 """ Get the reported camera resolution """ 61 return [self.xres, self.yres]
Load and manage an RMS platepar object, used to map an image to the sky
platepar(plateparfile)
14 def __init__(self, plateparfile): 15 """" Create and load a platepar object from a file plateparfile """ 16 with open(plateparfile, 'r') as pp: 17 self.jsd = json.load(pp) 18 try: 19 self.id = self.jsd['station_code'] 20 # field of view details 21 self.alt_centre = self.jsd['alt_centre'] 22 self.az_centre = self.jsd['az_centre'] 23 self.Ho = self.jsd['Ho'] 24 self.fov_h = self.jsd['fov_h'] 25 self.fov_v = self.jsd['fov_v'] 26 self.rotation_from_horiz = self.jsd['rotation_from_horiz'] 27 self.RA_d = self.jsd['RA_d'] 28 self.dec_d = self.jsd['dec_d'] 29 self.pos_angle_ref = self.jsd['pos_angle_ref'] 30 31 # camera location 32 self.lat = self.jsd['lat'] 33 self.lon = self.jsd['lon'] 34 self.elev = self.jsd['elev'] 35 36 # camera resolution 37 self.X_res = self.jsd['X_res'] 38 self.Y_res = self.jsd['Y_res'] 39 40 # Reference time and date 41 self.time = 0 42 self.JD = self.jsd['JD'] 43 self.UT_corr =self.jsd['UT_corr'] 44 45 # FOV scale (px/deg) 46 self.F_scale = self.jsd['F_scale'] 47 48 except: 49 print('invalid json file')
" Create and load a platepar object from a file plateparfile
def
getLocation(self):
51 def getLocation(self): 52 """ get the lat, lon and elevation from the platepar""" 53 return [self.lat, self.lon, self.elev]
get the lat, lon and elevation from the platepar
def
loadPlatepars(fldr):
64def loadPlatepars(fldr): 65 """ Create a dictionary of multiple platepars 66 67 Arguments: 68 fldr: [string] A folder containing one or more platepar files 69 70 Returns: 71 a json dict containing each platepar indexed by the corresponding filename 72 """ 73 platepars ='{' 74 pth = os.path.join(fldr, '*.json') 75 pps = glob.glob(pth) 76 for pp in pps: 77 thispl = platepar(pp) 78 if thispl is not None: 79 if len(platepars) > 1: # and pp != pps[-1]: 80 platepars = platepars + ',' 81 platepars = platepars + '"' + thispl.id +'": '+ json.dumps(thispl.jsd) 82 platepars = platepars + '}' 83 #print(platepars) 84 ppjson = json.loads(platepars) 85 return ppjson
Create a dictionary of multiple platepars
Arguments:
fldr: [string] A folder containing one or more platepar files
Returns:
a json dict containing each platepar indexed by the corresponding filename