def __call__(self, *args, **kwargs): """Call the compositor.""" from satpy import Scene # Check if filename exists, if not then try from SATPY_ANCPATH if not os.path.isfile(self.filename): tmp_filename = os.path.join(get_environ_ancpath(), self.filename) if os.path.isfile(tmp_filename): self.filename = tmp_filename scn = Scene(reader='generic_image', filenames=[self.filename]) scn.load(['image']) img = scn['image'] # use compositor parameters as extra metadata # most important: set 'name' of the image img.attrs.update(self.attrs) # Check for proper area definition. Non-georeferenced images # do not have `area` in the attributes if 'area' not in img.attrs: if self.area is None: raise AttributeError("Area definition needs to be configured") img.attrs['area'] = self.area img.attrs['sensor'] = None img.attrs['mode'] = ''.join(img.bands.data) img.attrs.pop('modifiers', None) img.attrs.pop('calibration', None) # Add start time if not present in the filename if 'start_time' not in img.attrs or not img.attrs['start_time']: import datetime as dt img.attrs['start_time'] = dt.datetime.utcnow() if 'end_time' not in img.attrs or not img.attrs['end_time']: import datetime as dt img.attrs['end_time'] = dt.datetime.utcnow() return img
def __init__(self, *args, **kwargs): """Initialize the compositor with values from the user or from the configuration file. If `dem_filename` can't be found or opened then correction is done assuming TOA or sealevel options. :param dem_filename: path to the ancillary 'averaged heights' file default: CMGDEM.hdf environment override: os.path.join(<SATPY_ANCPATH>, <CREFL_ANCFILENAME>) :param dem_sds: variable name to load from the ancillary file """ dem_filename = kwargs.pop( "dem_filename", os.environ.get("CREFL_ANCFILENAME", "CMGDEM.hdf")) if os.path.exists(dem_filename): self.dem_file = dem_filename else: self.dem_file = os.path.join(get_environ_ancpath(), dem_filename) self.dem_sds = kwargs.pop("dem_sds", "averaged elevation") super(ReflectanceCorrector, self).__init__(*args, **kwargs)
def __init__(self, *args, **kwargs): """Initialize the compositor with values from the user or from the configuration file. If `dem_filename` can't be found or opened then correction is done assuming TOA or sealevel options. :param dem_filename: path to the ancillary 'averaged heights' file default: CMGDEM.hdf environment override: os.path.join(<SATPY_ANCPATH>, <CREFL_ANCFILENAME>) :param dem_sds: variable name to load from the ancillary file """ dem_filename = kwargs.pop("dem_filename", os.environ.get("CREFL_ANCFILENAME", "CMGDEM.hdf")) if os.path.exists(dem_filename): self.dem_file = dem_filename else: self.dem_file = os.path.join(get_environ_ancpath(), dem_filename) self.dem_sds = kwargs.pop("dem_sds", "averaged elevation") super(ReflectanceCorrector, self).__init__(*args, **kwargs)