def check_parameters(d): """ Check that the provided dictionary defines all mandatory s2p arguments. Args: d: python dictionary """ # verify that input files paths are defined if 'images' not in d or len(d['images']) < 2: print('ERROR: missing paths to input images') sys.exit(1) for i in range(len(d['images'])): img = d['images'][i] if not dict_has_keys(img, ['img']): print('ERROR: missing img paths for image', img) sys.exit(1) if not dict_has_keys(img, ['rpc']) or img['rpc'] == '': import tempfile # TODO: fix for common.tmpfile failure img['rpc'] = tempfile.mktemp('.rpc') rpc_utils.rpc_from_geotiff(img['img'], img['rpc']) print('INFO: trying reading rpc from image', img) # verify that roi or path to preview file are defined if 'full_img' in d and d['full_img']: sz = common.image_size_gdal(d['images'][0]['img']) d['roi'] = {'x': 0, 'y': 0, 'w': sz[0], 'h': sz[1]} elif 'roi' in d and dict_has_keys(d['roi'], ['x', 'y', 'w', 'h']): pass elif 'roi_utm' in d and dict_has_keys(d['roi_utm'], ['utm_band', 'hemisphere', 'x', 'y', 'w', 'h']): d['roi'] = rpc_utils.utm_roi_to_img_roi(d['images'][0]['rpc'], d['roi_utm']) elif 'roi_kml' in d: # this call defines cfg['ll_bbx'] and cfg['utm_bbx'] as side effects d['roi'] = rpc_utils.kml_roi_process(d['images'][0]['rpc'], d['roi_kml']) elif 'prv' in d['images'][0]: x, y, w, h = common.get_roi_coordinates(d['images'][0]['img'], d['images'][0]['prv']) d['roi'] = {'x': x, 'y': y, 'w': w, 'h': h} else: print('ERROR: missing or incomplete roi definition') sys.exit(1) # d['roi'] : all the values must be integers d['roi']['x'] = int(np.floor(d['roi']['x'])) d['roi']['y'] = int(np.floor(d['roi']['y'])) d['roi']['w'] = int(np.ceil(d['roi']['w'])) d['roi']['h'] = int(np.ceil(d['roi']['h'])) # warn about unknown parameters. The known parameters are those defined in # the global config.cfg dictionary, plus the mandatory 'images' and 'roi' or # 'roi_utm' for k in d.keys(): if k not in ['images', 'roi', 'roi_kml', 'roi_utm', 'utm_zone']: if k not in cfg: print('WARNING: ignoring unknown parameter {}.'.format(k))
def check_parameters(d): """ Check that the provided dictionary defines all mandatory s2p arguments. Args: d: python dictionary """ # verify that input files paths are defined if 'images' not in d or len(d['images']) < 2: print('ERROR: missing paths to input images') sys.exit(1) for img in d['images']: if not dict_has_keys(img, ['img', 'rpc']): print('ERROR: missing img or rpc paths for image', img) sys.exit(1) # verify that roi or path to preview file are defined if 'full_img' in d and d['full_img']: sz = common.image_size_gdal(d['images'][0]['img']) d['roi'] = {'x': 0, 'y': 0, 'w': sz[0], 'h': sz[1]} elif 'roi' in d and dict_has_keys(d['roi'], ['x', 'y', 'w', 'h']): pass elif 'roi_utm' in d and dict_has_keys(d['roi_utm'], ['utm_band', 'hemisphere', 'x', 'y', 'w', 'h']): d['roi'] = rpc_utils.utm_roi_to_img_roi(d['images'][0]['rpc'], d['roi_utm']) elif 'roi_kml' in d: # this call defines cfg['ll_bbx'] and cfg['utm_bbx'] as side effects d['roi'] = rpc_utils.kml_roi_process(d['images'][0]['rpc'], d['roi_kml']) elif 'prv' in d['images'][0]: x, y, w, h = common.get_roi_coordinates(d['images'][0]['img'], d['images'][0]['prv']) d['roi'] = {'x': x, 'y': y, 'w': w, 'h': h} else: print('ERROR: missing or incomplete roi definition') sys.exit(1) # warn about unknown parameters. The known parameters are those defined in # the global config.cfg dictionary, plus the mandatory 'images' and 'roi' or # 'roi_utm' for k in d.keys(): if k not in ['images', 'roi', 'roi_kml', 'roi_utm', 'utm_zone']: if k not in cfg: print('WARNING: ignoring unknown parameter {}.'.format(k))