import os import time from datetime import timedelta from esa_snappy import ProductIO, GPF, HashMap def print_time(start, stop): print(str(timedelta(seconds=stop - start))) def process(input_path, output_path, temp_save=False): # Load initial product input_product = ProductIO.readProduct(os.path.abspath(input_path)) # Calibration parameters = HashMap() calibrated = GPF.createProduct("Calibration", parameters, input_product) if temp_save: ProductIO.writeProduct(calibrated, "calibration", "BEAM-DIMAP") calibrated = ProductIO.readProduct("calibration.dim") # Multilook parameters = HashMap() parameters.put("nRgLooks", "2") multilooked = GPF.createProduct("Multilook", parameters, calibrated) if temp_save: ProductIO.writeProduct(multilooked, "multilook", "BEAM-DIMAP") multilooked = ProductIO.readProduct("multilook.dim") # Speckle Filter parameters = HashMap() speckle_filtered = GPF.createProduct("Speckle-Filter", parameters, multilooked) if temp_save: ProductIO.writeProduct(speckle_filtered, "speckle-filter", "BEAM-DIMAP") speckle_filtered = ProductIO.readProduct("speckle-filter.dim") # Linear to/from dB parameters = HashMap() linear_db = GPF.createProduct("LinearToFromdB", parameters, speckle_filtered) if temp_save: ProductIO.writeProduct(linear_db, "todB", "BEAM-DIMAP") linear_db = ProductIO.readProduct("todB.dim") # Terrain Correction parameters = HashMap() terrain_corrected = GPF.createProduct("Terrain-Correction", parameters, linear_db) if temp_save: ProductIO.writeProduct(terrain_corrected, "ortho", "BEAM-DIMAP") terrain_corrected = ProductIO.readProduct("ortho.dim") # Speckle Divergence parameters = HashMap() speckle_diverged = GPF.createProduct( "Speckle-Divergence", parameters, terrain_corrected ) # Write to disk ProductIO.writeProduct(speckle_diverged, output_path, "GeoTIFF-BigTIFF") if __name__ == "__main__": data_file = "RCM3_OK******_PK******_3M3_******_HH_HV_GRD/manifest.safe" start = time.time() process(data_file, "process_file.tif", temp_save=True) print_time(start, time.time()) # -> 0:03:40.451403 start = time.time() process(data_file, "process_GPF.tif", temp_save=False) print_time(start, time.time()) # -> 0:18:02.764925