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 getView(self):
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]

get the pointing direction (alt/az), field of view (h/v) and rotation

def getResolution(self):
59    def getResolution(self):
60        """ Get the reported camera resolution """
61        return [self.xres, self.yres]

Get the reported camera resolution

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