def build_cfg(user_cfg): """ Populate a dictionary containing the s2p parameters from a user config file. This dictionary is contained in the global variable 'cfg' of the config module. Args: user_cfg: user config dictionary """ # check that all the mandatory arguments are defined check_parameters(user_cfg) # fill the config module: updates the content of the config.cfg dictionary # with the content of the user_cfg dictionary cfg.update(user_cfg) # sets keys 'clr', 'cld' and 'roi' of the reference image to None if they # are not already defined. The default values of these optional arguments # can not be defined directly in the config.py module. They would be # overwritten by the previous update, because they are in a nested dict. cfg['images'][0].setdefault('clr') cfg['images'][0].setdefault('cld') cfg['images'][0].setdefault('roi') cfg['images'][0].setdefault('wat') # Make sure that input data have absolute paths for i in range(0, len(cfg['images'])): for d in ['clr', 'cld', 'roi', 'wat', 'img', 'rpc']: if d in cfg['images'][i] and cfg['images'][i][ d] is not None and not os.path.isabs(cfg['images'][i][d]): cfg['images'][i][d] = os.path.abspath(cfg['images'][i][d]) x = cfg['roi']['x'] y = cfg['roi']['y'] w = cfg['roi']['w'] h = cfg['roi']['h'] cfg['roi'] = {'x': x, 'y': y, 'w': w, 'h': h} # get utm zone if 'utm_zone' not in cfg or cfg['utm_zone'] is None: cfg['utm_zone'] = rpc_utils.utm_zone(cfg['images'][0]['rpc'], x, y, w, h)
def build_cfg(user_cfg): """ Populate a dictionary containing the s2p parameters from a user config file. This dictionary is contained in the global variable 'cfg' of the config module. Args: user_cfg: user config dictionary """ # check that all the mandatory arguments are defined check_parameters(user_cfg) # fill the config module: updates the content of the config.cfg dictionary # with the content of the user_cfg dictionary cfg.update(user_cfg) # set keys 'clr', 'cld' and 'roi' of the reference image to None if they # are not already defined. The default values of these optional arguments # can not be defined directly in the config.py module. They would be # overwritten by the previous update, because they are in a nested dict. cfg['images'][0].setdefault('clr') cfg['images'][0].setdefault('cld') cfg['images'][0].setdefault('roi') cfg['images'][0].setdefault('wat') # make sure that input data have absolute paths for i in range(len(cfg['images'])): for d in ['clr', 'cld', 'roi', 'wat', 'img']: if d in cfg['images'][i] and cfg['images'][i][ d] is not None and not os.path.isabs(cfg['images'][i][d]): cfg['images'][i][d] = os.path.abspath(cfg['images'][i][d]) # get out_crs if 'out_crs' not in cfg or cfg['out_crs'] is None: x, y, w, h = [cfg['roi'][k] for k in ['x', 'y', 'w', 'h']] utm_zone = rpc_utils.utm_zone(cfg['images'][0]['rpcm'], x, y, w, h) epsg_code = geographiclib.epsg_code_from_utm_zone(utm_zone) cfg['out_crs'] = "epsg:{}".format(epsg_code) geographiclib.pyproj_crs(cfg['out_crs']) # get image ground sampling distance cfg['gsd'] = rpc_utils.gsd_from_rpc(cfg['images'][0]['rpcm'])