diff --git a/json_schemas/schema_MultiSlc.json b/json_schemas/schema_MultiSlc.json index 45a21150d10e9eb5dad27fba1e8521a78eed6c45..94b232ea36e02c7f9a9fa7d94d1e244b8b5d7676 100644 --- a/json_schemas/schema_MultiSlc.json +++ b/json_schemas/schema_MultiSlc.json @@ -118,6 +118,8 @@ "Grid_Threshold": {"type": "number"}, "Grid_Gap": {"type": "number"}, "Interferogram_gain": {"type": "number"}, + "Interferogram_mlran": {"type": "number"}, + "Interferogram_mlazi": {"type": "number"}, "Activate_Interferogram": {"type": "string", "default": "yes"}, "Activate_Ortho": {"type": "string"}, "Spacingxy": {"type": "number", "default": 0.0001}, diff --git a/json_schemas/schema_S1SM.json b/json_schemas/schema_S1SM.json index e649de737ca723bdd7e2df4b51ef9368f8c5f792..2df1353ed431bb844abf14fccec2ab69e3c2ece2 100644 --- a/json_schemas/schema_S1SM.json +++ b/json_schemas/schema_S1SM.json @@ -29,7 +29,7 @@ "required": ["output_dir"], "additionalProperties": false, "properties": {"output_dir": {"type": "string"}} - } + }, "sensor": { "type": "object", @@ -113,6 +113,8 @@ "Grid_Threshold": {"type": "number"}, "Grid_Gap": {"type": "number"}, "Interferogram_gain": {"type": "number"}, + "Interferogram_mlran": {"type": "number"}, + "Interferogram_mlazi": {"type": "number"}, "Interferogram_ortho": {"type": "boolean"} } } diff --git a/python_src/SAR_MultiSlc.py b/python_src/SAR_MultiSlc.py index 1a0a27114f83cd2867130498fe2e9f5a96ec60e1..fe7d6c901795ba4986d1fe3b43df854aa6733efa 100644 --- a/python_src/SAR_MultiSlc.py +++ b/python_src/SAR_MultiSlc.py @@ -182,6 +182,16 @@ if __name__ == "__main__": ml_geoGrid_azimut = ml_azimut gain_interfero = dict_DInSAR['parameter']['Interferogram_gain'] + ml_interf_range = ml_range + ml_interf_azimut = ml_azimut + + if "Interferogram_mlran" in dict_DInSAR['parameter'] : + ml_interf_range = int(dict_DInSAR['parameter']['Interferogram_mlran']) + + if "Interferogram_mlazi" in dict_DInSAR['parameter'] : + ml_interf_azimut = int(dict_DInSAR['parameter']['Interferogram_mlazi']) + + if (geoGrid_threshold < 0) or (geoGrid_threshold > 1): func_utils.log(logging.CRITICAL, "Error, Wrong Threshold for fine deformation grid") geoGrid_threshold = 0.3 @@ -253,11 +263,33 @@ if __name__ == "__main__": func_utils.log(logging.INFO, "ml_geoGrid_range : {param}".format(param=ml_geoGrid_range)) func_utils.log(logging.INFO, "ml_geoGrid_azimut : {param}".format(param=ml_geoGrid_azimut)) func_utils.log(logging.INFO, "gain_interfero : {param}".format(param=gain_interfero)) + func_utils.log(logging.INFO, "ml_interf_range : {param}".format(param=ml_interf_range)) + func_utils.log(logging.INFO, "ml_interf_azimut : {param}".format(param=ml_interf_azimut)) func_utils.log(logging.INFO, "Spacingxy : {param}".format(param=spacingxy)) func_utils.log(logging.INFO, "roi : {param}".format(param=roi)) func_utils.log(logging.INFO, "Activate_Interferogram : {param}".format(param=version_interferogram)) func_utils.log(logging.INFO, "Activate_Ortho : {param}".format(param=ortho_interferogram)) + + # Retrieve some information about our master image + dictKWLMaster = func_utils.getImageKWL(master_Image) + number_col = int(dictKWLMaster['number_samples']) + number_lines = int(dictKWLMaster['number_lines']) + + # Check input size (Master size) to protect memory. + if (number_col > 15000 or number_lines > 15000) : + + intermediate_mlran = int(number_col/15000) + 1 + intermediate_mlazi = int(number_lines/15000) + 1 + + # Compare ml factor with intermediate + if ((intermediate_mlazi*intermediate_mlran) > (ml_range*ml_azimut)) : + func_utils.log(logging.CRITICAL, "ML Factors are not appropriate (too low) for these estimations. Please use other factors such as : {iran} x {iazi} \n".format(iran=intermediate_mlran, iazi=intermediate_mlazi)) + + quit() + + + # ============================= # Get the elements from os.dirs # ============================= @@ -458,6 +490,8 @@ if __name__ == "__main__": param['ml_range'] = ml_range param['ml_geoGrid_azimut'] = ml_geoGrid_azimut param['ml_geoGrid_range'] = ml_geoGrid_range + param['ml_interf_range'] = ml_interf_range + param['ml_interf_azimut'] = ml_interf_azimut param['geoGrid_gridstep_range'] = geoGrid_gridstep_range param['geoGrid_gridstep_azimut'] = geoGrid_gridstep_azimut param['geoGrid_threshold'] = geoGrid_threshold diff --git a/python_src/diapOTB.py b/python_src/diapOTB.py index 2a562a8a71a8d1579dde54e37a723ee54bccea2b..6ce3e15503823b7821aaa13f3a5a10aa559c0f60 100644 --- a/python_src/diapOTB.py +++ b/python_src/diapOTB.py @@ -83,8 +83,8 @@ if __name__ == "__main__": mode = dict_Global['sensor']['mode'] # Pre_Processing - ml_range = dict_PreProcessing['parameter']['ML_range'] - ml_azimut = dict_PreProcessing['parameter']['ML_azimut'] + ml_range = int(dict_PreProcessing['parameter']['ML_range']) + ml_azimut = int(dict_PreProcessing['parameter']['ML_azimut']) ml_gain = dict_PreProcessing['parameter']['ML_gain'] dop_file = dict_PreProcessing['out']['doppler_file'] @@ -107,7 +107,17 @@ if __name__ == "__main__": ml_geoGrid_range = ml_range ml_geoGrid_azimut = ml_azimut gain_interfero = dict_DInSAR['parameter']['Interferogram_gain'] + + ml_interf_range = ml_range + ml_interf_azimut = ml_azimut + + if "Interferogram_mlran" in dict_DInSAR['parameter'] : + ml_interf_range = int(dict_DInSAR['parameter']['Interferogram_mlran']) + if "Interferogram_mlazi" in dict_DInSAR['parameter'] : + ml_interf_azimut = int(dict_DInSAR['parameter']['Interferogram_mlazi']) + + if (geoGrid_threshold < 0) or (geoGrid_threshold > 1) : func_utils.log(logging.CRITICAL, "Error, Wrong Threshold for fine deformation grid") @@ -162,7 +172,10 @@ if __name__ == "__main__": func_utils.log(logging.INFO, "ml_geoGrid_range : {param}".format(param=ml_geoGrid_range)) func_utils.log(logging.INFO, "ml_geoGrid_azimut : {param}".format(param=ml_geoGrid_azimut)) func_utils.log(logging.INFO, "gain_interfero : {param}".format(param=gain_interfero)) - + func_utils.log(logging.INFO, "ml_interf_range : {param}".format(param=ml_interf_range)) + func_utils.log(logging.INFO, "ml_interf_azimut : {param}".format(param=ml_interf_azimut)) + func_utils.log(logging.INFO, "ml_geoGrid_azimut : {param}".format(param=ml_geoGrid_azimut)) + func_utils.log(logging.INFO, "########### Input Images for the current execution ############## ") @@ -226,7 +239,24 @@ if __name__ == "__main__": func_utils.log(logging.INFO, "slave_Image = {img}".format(img=slave_Image)) func_utils.log(logging.INFO, "dem : {param}".format(param=dem)) - + # Retrieve some information about our master image + dictKWLMaster = func_utils.getImageKWL(master_Image) + number_col = int(dictKWLMaster['number_samples']) + number_lines = int(dictKWLMaster['number_lines']) + + # Check input size (Master size) to protect memory. + if (number_col > 15000 or number_lines > 15000) : + + intermediate_mlran = int(number_col/15000) + 1 + intermediate_mlazi = int(number_lines/15000) + 1 + + # Compare ml factor with intermediate + if ((intermediate_mlazi*intermediate_mlran) > (ml_range*ml_azimut)) : + func_utils.log(logging.CRITICAL, "ML Factors are not appropriate (too low) for these estimations. Please use other factors such as : {iran} x {iazi} \n".format(iran=intermediate_mlran, iazi=intermediate_mlazi)) + + quit() + + func_utils.printOnStd("\n Beginning of DiapOTB processing (S1 SM or Cosmo mode) \n") func_utils.log(logging.INFO, "############ Beginning of DiapOTB processing (S1 SM or Cosmo mode) ##############") @@ -316,6 +346,8 @@ if __name__ == "__main__": param['ml_range'] = ml_range param['ml_geoGrid_azimut'] = ml_geoGrid_azimut param['ml_geoGrid_range'] = ml_geoGrid_range + param['ml_interf_range'] = ml_interf_range + param['ml_interf_azimut'] = ml_interf_azimut param['geoGrid_gridstep_range'] = geoGrid_gridstep_range param['geoGrid_gridstep_azimut'] = geoGrid_gridstep_azimut param['geoGrid_threshold'] = geoGrid_threshold diff --git a/python_src/processings/DInSar.py b/python_src/processings/DInSar.py index 124246d3c8217ffd2565e5d404fdee76d5ea8723..a73fc76f5ba7fb5d664460dcdcc25091e995b54e 100644 --- a/python_src/processings/DInSar.py +++ b/python_src/processings/DInSar.py @@ -265,6 +265,16 @@ def gridToInterferogram_Others(dem, master_Image, master_Image_base, slave_Image ml_range = param['ml_range'] ml_geoGrid_azimut = param['ml_geoGrid_azimut'] ml_geoGrid_range = param['ml_geoGrid_range'] + + ml_interf_range = ml_range + if "ml_interf_range" in param : + ml_interf_range = param['ml_interf_range'] + + ml_interf_azimut = ml_azimut + if "ml_interf_azimut" in param : + ml_interf_azimut = param['ml_interf_azimut'] + + geoGrid_gridstep_range = param['geoGrid_gridstep_range'] geoGrid_gridstep_azimut = param['geoGrid_gridstep_azimut'] geoGrid_threshold = param['geoGrid_threshold'] @@ -292,7 +302,7 @@ def gridToInterferogram_Others(dem, master_Image, master_Image_base, slave_Image derampApp = partial(diapOTBApp.deramp, gridsteprange=geoGrid_gridstep_range, gridstepazimut=geoGrid_gridstep_azimut, reramp="true", shift="true") - interferogramApp = partial(diapOTBApp.interferogram, gridsteprange=geoGrid_gridstep_range, gridstepazimut=geoGrid_gridstep_azimut, mlran=ml_range, mlazi=ml_azimut, gain=gain_interfero) + interferogramApp = partial(diapOTBApp.interferogram, gridsteprange=geoGrid_gridstep_range, gridstepazimut=geoGrid_gridstep_azimut, mlran=ml_interf_range, mlazi=ml_interf_azimut, gain=gain_interfero) # Empty list