Some example code to process data in a batch
Step 1: install the python snappy library
cd /home/user/snap/bin ./snappy-conf /usr/bin/python /home/user/snappy/
Step 2: run the python code below
import os, datetime, glob
import gc
import snappy
from sentinelsat import SentinelAPI, geojson_to_wkt, read_geojson
from snappy import ProductIO
# Get snappy Operators
snappy.GPF.getDefaultInstance().getOperatorSpiRegistry().loadOperatorSpis()
# HashMap Key-Value pairs
HashMap = snappy.jpy.get_type('java.util.HashMap')
gc.enable()
"""
Input: Amplitude_VH, Intesity_VH, Amplitude_VV, Intensity_VV
output: Amplitude_VH, Intesity_VH, Amplitude_VV, Intensity_VV
"""
def applyOrbit(timestamp, sentinel_image, HashMap):
print "applying orbit"
if os.path.isfile(input_dir + "/orb_" + timestamp + ".dim"):
print "file already exists"
else:
orbFile = input_dir + "/orb_" + timestamp
parameters = HashMap()
orbit_param = snappy.GPF.createProduct("Apply-Orbit-File", parameters, sentinel_image)
ProductIO.writeProduct(orbit_param, orbFile, 'BEAM-DIMAP')
"""
Input: Amplitude_VH, Intesity_VH, Amplitude_VV, Intensity_VV
output: beta0_VH, beta0_VV
"""
def applyCalibration(timestamp,sentinel_image, HashMap):
print "applying calibration"
if os.path.isfile(input_dir + "/calib_" + timestamp + ".dim"):
print "file already exists"
else:
parameters = HashMap()
parameters.put('outputSigmaBand', False)
parameters.put('outputBetaBand', True)
calibFile = input_dir + "/calib_" + timestamp
calib_param = snappy.GPF.createProduct("Calibration", parameters, ProductIO.readProduct(input_dir + "orb_" + timestamp + ".dim"))
ProductIO.writeProduct(calib_param, calibFile, 'BEAM-DIMAP')
"""
Input: beta0_VH, beta0_VV
output: beta0_VH, beta0_VV
"""
def applyMultilook(timestamp, HashMap):
print "applying mulilook"
if os.path.isfile(input_dir + "/multi_" + timestamp + ".dim"):
print "file already exisist"
else:
azLooks = 3
rgLooks = 3
parameters = HashMap()
multiFile = input_dir + "/multi_" + timestamp
parameters.put('grSquarePixel', True)
parameters.put('nRgLooks', rgLooks)
parameters.put('nAzLooks', azLooks)
parameters.put('outputIntensity', False)
multi_param = snappy.GPF.createProduct("Multilook", parameters, ProductIO.readProduct(input_dir + "/calib_" + timestamp + ".dim"))
ProductIO.writeProduct(multi_param, multiFile, 'BEAM-DIMAP')
"""
Input: beta0_VH, beta0_VV
output: gamma0_VH, gamma0_VV
"""
def applyTerrainCorrection(timestamp, HashMap):
print "applying terrain correction"
if os.path.isfile(input_dir + "/terr_" + timestamp + ".dim"):
print "file already exists"
else:
parameters = HashMap()
terrFile = input_dir + "/terr_" + timestamp
parameters.put('demResamplingMethod', 'BICUBIC_INTERPOLATION')
parameters.put('demName', 'SRTM 1Sec HGT')
terr_param = snappy.GPF.createProduct("Terrain-Flattening", parameters,ProductIO.readProduct(input_dir + "/multi_" + timestamp + ".dim"))
ProductIO.writeProduct(terr_param, terrFile, 'BEAM-DIMAP')
"""
Input: gamma0_VH, gamma0_VV
output: gamma0_VH, gamma0_VV
"""
def applyOrthorectification(timestamp, HashMap):
print "applying Orthorectification"
if os.path.isfile(input_dir + "/orth_" + timestamp + ".dim"):
print "file already exists"
else:
parameters = HashMap()
orth_file = input_dir + "/orth_" + timestamp
orth_param = snappy.GPF.createProduct("Ellipsoid-Correction-GG", parameters,ProductIO.readProduct(input_dir + "/terr_" + timestamp + ".dim"))
ProductIO.writeProduct(orth_param, orth_file, 'BEAM-DIMAP')
"""
Input: gamma0_VH, gamma0_VV
output: gamma0_VH, gamma0_VV
"""
def applySpeckleFilter(timestamp, HashMap):
print "applying terrain correction"
if os.path.isfile(input_dir + "/speck_" + timestamp + ".dim"):
print "file already exists"
else:
parameters = HashMap()
speck_file = input_dir + "/speck_" + timestamp
parameters.put('filter', 'Lee Sigma')
parameters.put('numberofLooks', 4)
parameters.put('windowSize', "9x9")
parameters.put('sigma', 0.9)
parameters.put('targetWindowSize', "9x9")
speck_param = snappy.GPF.createProduct("Speckle-Filter", parameters,ProductIO.readProduct(input_dir + "/orth_" + timestamp + ".dim"))
ProductIO.writeProduct(speck_param, speck_file, 'BEAM-DIMAP')
input_dir = "/home/user/snappy/s1/"
for folder in glob.glob(input_dir + "/*.zip"):
if folder.endswith(".zip"):
timestamp = folder.split("_")[5]
sentinel_image = ProductIO.readProduct(folder)
# add the orbit file
applyOrbit(timestamp, sentinel_image, HashMap)
applyCalibration(timestamp, sentinel_image, HashMap)
applyMultilook(timestamp, HashMap)
applyTerrainCorrection(timestamp, HashMap)
applyOrthorectification(timestamp, HashMap)
applySpeckleFilter(timestamp, HashMap)