def unpack(h5_file, slc_dir, frequency="A", polarization="VV"): """ Unpack HDF5 to binary SLC file. """ obj = createSensor("UAVSAR_HDF5_SLC") obj.configure() obj.hdf5 = h5_file obj.frequency = "frequency" + frequency obj.polarization = polarization if not os.path.isdir(slc_dir): os.mkdir(slc_dir) # obj.parse() date = os.path.basename(slc_dir) obj.output = os.path.join(slc_dir, date + ".slc") obj.extractImage() obj.frame.getImage().renderHdr() obj.extractDoppler() pickName = os.path.join(slc_dir, "data") with shelve.open(pickName) as db: db["frame"] = obj.frame
def unpack(hdf5, slcname): ''' Unpack HDF5 to binary SLC file. ''' fname = glob.glob(os.path.join(hdf5,'ASA*.N1'))[0] if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj = createSensor('ENVISAT_SLC') obj._imageFileName = fname obj.orbitDir = '/Users/agram/orbit/VOR' obj.instrumentDir = '/Users/agram/orbit/INS_DIR' obj.output = os.path.join(slcname, date+'.slc') obj.extractImage() obj.frame.getImage().renderHdr() obj.extractDoppler() pickName = os.path.join(slcname, 'data') with shelve.open(pickName) as db: db['frame'] = obj.frame
def unpack(hdf5, slcname): ''' Unpack HDF5 to binary SLC file. ''' imgname = glob.glob(os.path.join(hdf5, 'IMG*'))[0] ldrname = glob.glob(os.path.join(hdf5, 'LED*'))[0] if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj = createSensor('ALOS_SLC') obj.configure() obj._leaderFile = ldrname obj._imageFile = imgname obj.output = os.path.join(slcname, date + '.slc') print(obj._leaderFile) print(obj._imageFile) print(obj.output) obj.extractImage() obj.frame.getImage().renderHdr() pickName = os.path.join(slcname, 'data') with shelve.open(pickName) as db: db['frame'] = obj.frame
def setTSX(info): #set sensor objSensor = createSensor('TERRASARX') objSensor.xml = getInfo(info.input, 'xml') objSensor.output = getInfo(info.input, 'output') #set doppler objDop = createDoppler('USEDOPTSX') #objDop.wireInputPort(name='sensor', object=objSensor) return (objSensor, objDop)
def unpack(hdf5, slcname, deskew=False, polarization='HH'): ''' Unpack HDF5 to binary SLC file. ''' imgname = glob.glob(os.path.join(hdf5, '*/IMG-{}*'.format(polarization)))[0] ldrname = glob.glob(os.path.join(hdf5, '*/LED*'))[0] if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj = createSensor('ALOS2') obj.configure() obj._leaderFile = ldrname obj._imageFile = imgname if deskew: obj.output = os.path.join(slcname, date + '_orig.slc') else: obj.output = os.path.join(slcname, date + '.slc') print(obj._leaderFile) print(obj._imageFile) print(obj.output) obj.extractImage() obj.frame.getImage().renderHdr() coeffs = obj.doppler_coeff dr = obj.frame.getInstrument().getRangePixelSize() r0 = obj.frame.getStartingRange() poly = Poly1D.Poly1D() poly.initPoly(order=len(coeffs) - 1) poly.setCoeffs(coeffs) fcoeffs = obj.azfmrate_coeff fpoly = Poly1D.Poly1D() fpoly.initPoly(order=len(fcoeffs) - 1) fpoly.setCoeffs(fcoeffs) if deskew: pickName = os.path.join(slcname, 'original') else: pickName = os.path.join(slcname, 'data') with shelve.open(pickName) as db: db['frame'] = obj.frame db['doppler'] = poly db['fmrate'] = fpoly db['info'] = obj.leaderFile.facilityRecord.metadata print(poly._coeffs) print(fpoly._coeffs) return obj
def unpack(hdf5, slcname, multiple=False): ''' Unpack HDF5 to binary SLC file. ''' if multiple: print('Trying multiple sub-dirs ....') imgname = glob.glob(os.path.join(hdf5, '*', 'ASA*')) if len(imgname) == 0: print('No ASA files found in sub-dirs. Trying same dir ...') imgname = glob.glob(os.path.join(hdf5, 'ASA*')) else: imgname = [glob.glob(os.path.join(hdf5, 'ASA*'))[0]] if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj = createSensor('ENVISAT') obj.configure() obj._imageryFileList = imgname obj.instrumentDir = '/Users/agram/orbit/INS_DIR' obj.orbitDir = '/Users/agram/orbit/VOR' obj.output = os.path.join(slcname, date + '.raw') obj.extractImage() obj.frame.getImage().renderHdr() # print('Beam number: ', obj._imageryFileData['antennaBeamSetNumber']-1) # pprint.pprint(obj._instrumentFileData) #####Estimate doppler dop = DopIQ() dop.configure() img = copy.deepcopy(obj.frame.getImage()) img.setAccessMode('READ') dop.wireInputPort('frame', object=obj.frame) dop.wireInputPort('instrument', object=obj.frame.instrument) dop.wireInputPort('image', object=img) dop.calculateDoppler() dop.fitDoppler() fit = dop.quadratic coef = [fit['a'], fit['b'], fit['c']] print(coef) obj.frame._dopplerVsPixel = [x * obj.frame.PRF for x in coef] pickName = os.path.join(slcname, 'raw') with shelve.open(pickName) as db: db['frame'] = obj.frame
def unpack(hdf5, slcname): ''' Unpack HDF5 to binary SLC file. ''' fname = glob.glob(os.path.join(hdf5,'ASA*.N1'))[0] if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj = createSensor('ENVISAT_SLC') obj._imageFileName = fname obj.orbitDir = '/Users/agram/orbit/VOR' obj.instrumentDir = '/Users/agram/orbit/INS_DIR' obj.output = os.path.join(slcname, date+'.slc') obj.extractImage() obj.frame.getImage().renderHdr() ######Numpy polynomial manipulation pc = obj._dopplerCoeffs[::-1] inds = np.linspace(0, obj.frame.numberOfSamples-1, len(pc) + 1)+1 rng = obj.frame.getStartingRange() + inds * obj.frame.instrument.getRangePixelSize() dops = np.polyval(pc, 2*rng/Const.c-obj._dopplerTime) print('Near range doppler: ', dops[0]) print('Far range doppler: ', dops[-1]) dopfit = np.polyfit(inds, dops, len(pc)-1) poly = Poly1D.Poly1D() poly.initPoly(order=len(pc)-1) poly.setCoeffs(dopfit[::-1]) print('Poly near range doppler: ', poly(1)) print('Poly far range doppler: ', poly(obj.frame.numberOfSamples)) # width = obj.frame.getImage().getWidth() # midrange = r0 + 0.5 * width * dr # dt = datetime.timedelta(seconds = midrange / Const.c) # obj.frame.sensingStart = obj.frame.sensingStart - dt # obj.frame.sensingStop = obj.frame.sensingStop - dt # obj.frame.sensingMid = obj.frame.sensingMid - dt pickName = os.path.join(slcname, 'data') with shelve.open(pickName) as db: db['frame'] = obj.frame db['doppler'] = poly
def setRS2(info): #set sensor objSensor = createSensor('RADARSAT2') objSensor.xml = getInfo(info.input, 'xml') objSensor.tiff = getInfo(info.input, 'tiff') objSensor.output = getInfo(info.input, 'output') #set doppler objDop = createDoppler('useDEFAULT') #objDop.wireInputPort(name='sensor', object=objSensor) return (objSensor, objDop)
def setALOS2(info): #set sensor objSensor = createSensor('ALOS2') objSensor._leaderFile = getInfo(info.input, 'LEADERFILE') objSensor._imageFile = getInfo(info.input, 'IMAGEFILE') objSensor.output = getInfo(info.input, 'output') #set doppler objDop = createDoppler('useDEFAULT') #objDop.wireInputPort(name='sensor', object=objSensor) return (objSensor, objDop)
def setCSKS(info): #set sensor objSensor = createSensor('COSMO_SKYMED_SLC') objSensor.hdf5 = getInfo(info.input, 'HDF5') objSensor.output = getInfo(info.input, 'output') #set doppler #objDop = createDoppler('useDOPCSKSLC') objDop = createDoppler('useDEFAULT') #objDop.wireInputPort(name='sensor', object=objSensor) return (objSensor, objDop)
def setS1A(info): #set sensor objSensor = createSensor('SENTINEL1A') objSensor.xml = getInfo(info.input, 'xml') objSensor.tiff = getInfo(info.input, 'tiff') objSensor.orbitfile = getInfo(info.input, 'orbitfile') objSensor.output = getInfo(info.input, 'output') #set doppler objDop = createDoppler('useDEFAULT') #objDop.wireInputPort(name='sensor', object=objSensor) return (objSensor, objDop)
def unpack(RSATdir, slcname): ''' Unpack RADARSAT2 data to binary SLC file. assume HH only for now ''' ###Search for imagery and XML files in input directory imgname = glob.glob(os.path.join(RSATdir, 'imagery*.tif'))[0] xmlname = glob.glob(os.path.join(RSATdir, 'product.xml'))[0] ####Create output SLC directory if needed if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) #####Create an Radarsat2 object and wire it obj = createSensor('Radarsat2') obj.configure() obj.xml = xmlname obj.tiff = imgname obj.output = os.path.join(slcname, date + '.slc') ####Extract the image and write the XML file for the SLC obj.extractImage() obj.frame.getImage().renderHdr() ####Save the doppler polynomial ####CEOS already provides doppler polynomial ####as a function of range pixel coeffs = obj.doppler_coeff poly = Poly1D.Poly1D() poly.initPoly(order=len(coeffs) - 1) poly.setCoeffs(coeffs) ####Save the FMrate polynomial ####CEOS already provides FMrate polynomial ####as a function of range pixel fcoeffs = obj.azfmrate_coeff # fcoeffs = [0.0, 0.0, 0.0] # zero-Doppler geometry, so this is not used fpoly = Poly1D.Poly1D() fpoly.initPoly(order=len(fcoeffs) - 1) fpoly.setCoeffs(fcoeffs) ####Save required metadata for further use ####All data is output to a shelve file pickName = os.path.join(slcname, 'data') with shelve.open(pickName) as db: db['frame'] = obj.frame db['doppler'] = poly db['fmrate'] = fpoly
def unpack(hdf5, slcname, dopFile, parse=False): ''' Unpack HDF5 to binary SLC file. ''' obj = createSensor('UAVSAR_STACK') obj.configure() obj.metadataFile = hdf5 obj.dopplerFile = dopFile obj.parse() if not os.path.isdir(slcname): os.mkdir(slcname) pickName = os.path.join(slcname, 'data') with shelve.open(pickName) as db: db['frame'] = obj.frame
def unpack(hdf5, slcname): ''' Unpack HDF5 to binary SLC file. ''' try: imgname = glob.glob(os.path.join(hdf5, '*.raw'))[0] except: try: imgname = glob.glob(os.path.join(hdf5, 'DAT*'))[0] except: raise Exception('Cant find .raw of DAT. file in dir') try: ldrname = glob.glob(os.path.join(hdf5, '*.ldr'))[0] except: try: ldrname = glob.glob(os.path.join(hdf5, 'LEA*'))[0] except: raise Exception('Cant find .ldr or LEA. file in dir') parname = glob.glob(os.path.join(hdf5, '*.par'))[0] if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj = createSensor('RADARSAT1') obj.configure() obj._leaderFile = ldrname obj._imageFile = imgname obj._parFile = parname obj.output = os.path.join(slcname, date + '.raw') print(obj._leaderFile) print(obj._imageFile) print(obj._parFile) print(obj.output) obj.extractImage() obj.frame.getImage().renderHdr() obj.extractDoppler() pickName = os.path.join(slcname, 'raw') with shelve.open(pickName) as db: db['frame'] = obj.frame
def unpack(metaFile, slcDir, dopFile, stackSegment, parse=False): ''' Prepare shelve/pickle file for the binary SLC file. ''' obj = createSensor('UAVSAR_STACK') obj.configure() obj.metadataFile = metaFile obj.dopplerFile = dopFile obj.segment_index = stackSegment obj.parse() if not os.path.isdir(slcDir): os.mkdir(slcDir) pickName = os.path.join(slcDir, 'data') with shelve.open(pickName) as db: db['frame'] = obj.frame
def unpack(hdf5, slcname, polar='RH', isfloat=False): ''' Unpack HDF5 to binary SLC file. ''' obj = createSensor('RISAT1_SLC') obj._imageFile = os.path.join(hdf5, 'scene_' + polar, 'dat_01.001') obj._leaderFile = os.path.join(hdf5, 'scene_' + polar, 'lea_01.001') if isfloat: obj._dataType = 'float' else: obj._dataType = 'short' if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj.output = os.path.join(slcname, date + '.slc') obj.extractImage() obj.frame.getImage().renderHdr() coeffs = obj.doppler_coeff dr = obj.frame.getInstrument().getRangePixelSize() r0 = obj.frame.getStartingRange() poly = Poly1D.Poly1D() poly.initPoly(order=len(coeffs) - 1) poly.setCoeffs(coeffs) fcoeffs = obj.azfmrate_coeff fpoly = Poly1D.Poly1D() fpoly.initPoly(order=len(fcoeffs) - 1) fpoly.setCoeffs(fcoeffs) pickName = os.path.join(slcname, 'data') with shelve.open(pickName) as db: db['frame'] = obj.frame db['doppler'] = poly db['fmrate'] = fpoly print(poly._coeffs) print(fpoly._coeffs)
def unpack(rawname, hdrname, slcname): ''' Unpack raw to binary file. ''' if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj = createSensor('ROI_PAC') obj.configure() obj._rawFile = rawname obj._hdrFile = hdrname obj.output = os.path.join(slcname, date + '.raw') print(obj._rawFile) print(obj._hdrFile) print(obj.output) obj.extractImage() obj.frame.getImage().renderHdr() #####Estimate doppler dop = DopIQ() dop.configure() img = copy.deepcopy(obj.frame.getImage()) img.setAccessMode('READ') dop.wireInputPort('frame', object=obj.frame) dop.wireInputPort('instrument', object=obj.frame.instrument) dop.wireInputPort('image', object=img) dop.calculateDoppler() dop.fitDoppler() fit = dop.quadratic coef = [fit['a'], fit['b'], fit['c']] print(coef) obj.frame._dopplerVsPixel = [x * obj.frame.PRF for x in coef] pickName = os.path.join(slcname, 'raw') with shelve.open(pickName) as db: db['frame'] = obj.frame
def unpack(hdf5, slcname): ''' Unpack HDF5 to binary SLC file. ''' fname = glob.glob(os.path.join(hdf5, 'TSX-1.SAR.L1B/*/TSX1*.xml'))[0] if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj = createSensor('TerraSARX') obj.xml = fname obj.output = os.path.join(slcname, date + '.slc') obj.extractImage() obj.frame.getImage().renderHdr() obj.extractDoppler() pickName = os.path.join(slcname, 'data') with shelve.open(pickName) as db: db['frame'] = obj.frame
def unpack(hdf5, slcname): ''' Unpack HDF5 to binary SLC file. ''' imgname = glob.glob(os.path.join(hdf5, 'DAT*'))[0] ldrname = glob.glob(os.path.join(hdf5, 'LEA*'))[0] if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj = createSensor('ERS_SLC') obj.configure() obj._leaderFile = ldrname obj._imageFile = imgname obj._orbitType = 'ODR' obj._orbitDir = '/Users/agram/orbit/ODR/ERS2' obj.output = os.path.join(slcname, date + '.slc') print(obj._leaderFile) print(obj._imageFile) print(obj.output) obj.extractImage() obj.frame.getImage().renderHdr() coeffs = obj.doppler_coeff # coeffs = [0.,0.] dr = obj.frame.getInstrument().getRangePixelSize() r0 = obj.frame.getStartingRange() print(coeffs) poly = Poly1D.Poly1D() poly.initPoly(order=len(coeffs) - 1) poly.setCoeffs(coeffs) pickName = os.path.join(slcname, 'data') with shelve.open(pickName) as db: db['frame'] = obj.frame db['doppler'] = poly
def unpack(hdf5, slcname, polar='RH'): ''' Unpack HDF5 to binary SLC file. ''' obj = createSensor('RISAT1') obj._imageFile = os.path.join(hdf5, 'scene_' + polar, 'dat_01.001') obj._leaderFile = os.path.join(hdf5, 'scene_' + polar, 'lea_01.001') if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj.output = os.path.join(slcname, date + '.raw') obj.extractImage() obj.frame.getImage().renderHdr() #####Estimate doppler dop = DopIQ() dop.configure() img = copy.deepcopy(obj.frame.getImage()) img.setAccessMode('READ') dop.wireInputPort('frame', object=obj.frame) dop.wireInputPort('instrument', object=obj.frame.instrument) dop.wireInputPort('image', object=img) dop.calculateDoppler() dop.fitDoppler() fit = dop.quadratic coef = [fit['a'], fit['b'], fit['c']] print(coef) obj.frame._dopplerVsPixel = [x * obj.frame.PRF for x in coef] pickName = os.path.join(slcname, 'raw') with shelve.open(pickName) as db: db['frame'] = obj.frame
def unpack(hdf5, slcname): ''' Unpack HDF5 to binary SLC file. ''' if os.listdir(hdf5)[0].endswith('.E1'): #ERS1 fname = glob.glob(os.path.join(hdf5, 'SAR*.E1'))[0] orbitDir = '/home/mgovorcin/Working_dir/Ston_Slano1996/INSAR/orbits/ODR/ERS1/dgm-e04/' #ERS1 elif os.listdir(hdf5)[0].endswith('.E2'): fname = glob.glob(os.path.join(hdf5, 'SAR*.E2'))[0] #ERS2 if datetime.strptime(os.path.basename(fname)[14:22], '%Y%m%d').date() > datetime(2003, 8, 8).date(): orbitDir = '/home/mgovorcin/Working_dir/Ston_Slano1996/INSAR/orbits/ODR/ERS2/' #ERS2 else: orbitDir = '/home/mgovorcin/Working_dir/Ston_Slano1996/INSAR/orbits/ODR/ERS2/dgm-e04/' #ERS2 print(fname) if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj = createSensor('ERS_ENVISAT_SLC') obj.configure() obj._imageFileName = fname obj._orbitDir = orbitDir obj._orbitType = 'ODR' obj.output = os.path.join(slcname, date + '.slc') obj.extractImage() obj.frame.getImage().renderHdr() obj.extractDoppler() pickName = os.path.join(slcname, 'data') with shelve.open(pickName) as db: db['frame'] = obj.frame
def unpack(hdf5, slcname): ''' Unpack HDF5 to binary SLC file. ''' fname = glob.glob(os.path.join(hdf5, '*.h5')) if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj = createSensor('COSMO_SKYMED') obj.hdf5FileList = fname obj.output = os.path.join(slcname, date + '.raw') obj.extractImage() obj.frame.getImage().renderHdr() obj.extractDoppler() pickName = os.path.join(slcname, 'raw') with shelve.open(pickName) as db: db['frame'] = obj.frame
def unpack(hdf5, slcname): ''' Unpack HDF5 to binary SLC file. ''' fname = glob.glob(os.path.join(hdf5, '*.h5'))[0] if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj = createSensor('KOMPSAT5') obj.hdf5 = fname obj.output = os.path.join(slcname, date + '.slc') obj.extractImage() obj.frame.getImage().renderHdr() coeffs = obj.dopplerCoeffs dr = obj.frame.getInstrument().getRangePixelSize() rref = 0.5 * Const.c * obj.rangeRefTime r0 = obj.frame.getStartingRange() norm = 0.5 * Const.c / dr dcoeffs = [] for ind, val in enumerate(coeffs): dcoeffs.append(val / (norm**ind)) poly = Poly1D.Poly1D() poly.initPoly(order=len(coeffs) - 1) poly.setMean((rref - r0) / dr - 1.0) poly.setCoeffs(dcoeffs) pickName = os.path.join(slcname, 'data') with shelve.open(pickName) as db: db['frame'] = obj.frame db['doppler'] = poly
def unpack(hdf5, slcname, pol, orbdir): ''' Unpack SAFE to binary SLC file. ''' if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj = createSensor('SENTINEL1') obj.safe = hdf5 obj.polarization = pol obj.orbitDir=orbdir obj.output = os.path.join(slcname, date+'.slc') obj.extractImage() obj.frame.getImage().renderHdr() obj.extractDoppler() pickName = os.path.join(slcname, 'data') with shelve.open(pickName) as db: db['frame'] = obj.frame
def unpack(hdf5, slcname, multiple=False): ''' Unpack HDF5 to binary SLC file. ''' os.makedirs(slcname, exist_ok=True) date = os.path.basename(slcname) obj = createSensor('ALOS') obj.configure() if multiple: print('Trying multiple subdirs...') obj._imageFileList = glob.glob(os.path.join(hdf5, '*', 'IMG-' + inps.polarization + '*')) obj._leaderFileList = glob.glob(os.path.join(hdf5, '*', 'LED*')) if (len(obj._imageFileList) == 0) or (len(obj._leaderFileList) == 0): print('No imagefiles / leaderfiles found in sub-dirs. Trying same directory ...') obj._imageFileList = glob.glob(os.path.join(hdf5, 'IMG-' + inps.polarization + '*')) obj._leaderFileList = glob.glob(os.path.join(hdf5, 'LED*')) else: imgname = glob.glob(os.path.join(hdf5, '*' , 'IMG-' + inps.polarization + '*'))[0] ldrname = glob.glob(os.path.join(hdf5, '*' , 'LED*'))[0] obj._leaderFileList = [ldrname] obj._imageFileList = [imgname] obj.output = os.path.join(slcname, date+'.raw') print(obj._leaderFileList) print(obj._imageFileList) print(obj.output) #if inps.fbd2fbs: # print('fbd2fbs flag activated') # obj._resampleFlag = 'dual2single' if inps.resampFlag == 'fbd2fbs': print('fbd2fbs flag activated') obj._resampleFlag = 'dual2single' elif inps.resampFlag == 'fbs2fbd': print('fbs2fbd flag activated') obj._resampleFlag = 'single2dual' obj.extractImage() obj.frame.getImage().renderHdr() #####Estimate doppler dop = DopIQ() dop.configure() img = copy.deepcopy(obj.frame.getImage()) img.setAccessMode('READ') dop.wireInputPort('frame', object=obj.frame) dop.wireInputPort('instrument', object=obj.frame.instrument) dop.wireInputPort('image', object=img) dop.calculateDoppler() dop.fitDoppler() fit = dop.quadratic coef = [fit['a'], fit['b'], fit['c']] obj.frame._dopplerVsPixel = [x*obj.frame.PRF for x in coef] pickName = os.path.join(slcname, 'raw') with shelve.open(pickName) as db: db['frame'] = obj.frame
def unpack(hdf5, slcname, multiple=False, orbtype='PRC'): ''' Unpack HDF5 to binary SLC file. ''' if multiple: print('Trying multiple sub-dirs - ESA convention ...') imgname = glob.glob(os.path.join(hdf5, '*', 'DAT*')) ldrname = glob.glob(os.path.join(hdf5, '*', 'LEA*')) if (len(imgname) == 0) or (len(ldrname) == 0): print( 'Did not find ESA style files in sub-dirs. Trying RPAC style in sub-dirs ....' ) imgname = glob.glob(os.path.join(hdf5, '*', 'IMA*')) ldrname = glob.glob(os.path.join(hdf5, '*', 'SAR*')) if (len(imgname) == 0) or (len(ldrname) == 0): print( 'Did not find RPAC style files in sub-dirs. Trying RPAC style in same-dir ....' ) imgname = glob.glob(os.path.join(hdf5, 'IMA*')) ldrname = glob.glob(os.path.join(hdf5, 'SAR*')) else: imgname = [glob.glob(os.path.join(hdf5, 'DAT*'))[0]] ldrname = [glob.glob(os.path.join(hdf5, 'LEA*'))[0]] if not os.path.isdir(slcname): os.mkdir(slcname) date = os.path.basename(slcname) obj = createSensor('ERS') obj.configure() obj._imageFileList = imgname obj._leaderFileList = ldrname ####Need to figure out 1/2 automatically also if orbtype == 'ODR': obj._orbitType = 'ODR' obj._orbitDir = '/Users/agram/orbit/ODR/ERS1' if orbtype == 'PRC': obj._orbitType = 'PRC' obj._orbitDir = '/Users/agram/orbit/PRC/ERS1' obj.output = os.path.join(slcname, date + '.raw') obj.extractImage() obj.frame.getImage().renderHdr() #####Estimate doppler dop = DopIQ() dop.configure() img = copy.deepcopy(obj.frame.getImage()) img.setAccessMode('READ') dop.wireInputPort('frame', object=obj.frame) dop.wireInputPort('instrument', object=obj.frame.instrument) dop.wireInputPort('image', object=img) dop.calculateDoppler() dop.fitDoppler() fit = dop.quadratic coef = [fit['a'], fit['b'], fit['c']] print(coef) obj.frame._dopplerVsPixel = [x * obj.frame.PRF for x in coef] pickName = os.path.join(slcname, 'raw') with shelve.open(pickName) as db: db['frame'] = obj.frame
def process(inps): ''' Do the actual processing. ''' nSar = len(inps.fnames) print(inps.fnames) print('Number of SAR Scenes = %d' % nSar) Orbits = [] print('Reading in all the raw files and metadata.') for k in xrange(nSar): if inps.raw: sar = createSensor('COSMO_SKYMED') else: sar = createSensor('COSMO_SKYMED_SLC') sar.hdf5 = inps.fnames[k] fd = CSKmetadata(sar) Orbits.append(orbit_info(sar, inps.fnames[k], fd[0])) ##########We now have all the pegpoints to start processing. Dopplers = np.zeros(nSar) Bperp = np.zeros(nSar) Days = np.zeros(nSar) #######Setting the first scene as temporary reference. master = Orbits[0] Dopplers[0] = master.fd Days[0] = master.dt.toordinal() for k in xrange(1, nSar): slave = Orbits[k] Bperp[k] = master.getBaseline(slave) Dopplers[k] = slave.fd Days[k] = slave.dt.toordinal() print("************************************") print("Index Date Bperp Doppler") print("************************************") ### Plot if inps.plot: f = open("baseline.txt", 'w') g = open("bplot.txt", 'w') f.write("Index Date Bperp Doppler \n") for k in xrange(nSar): print('{0:>3} {1:>10} {2:4.2f} {3:4.2f}'.format( k + 1, Orbits[k].dt.strftime('%Y-%m-%d'), Bperp[k], Dopplers[k])) ### Plot if inps.plot: f.write('{0:>3} {1:>10} {2:4.2f} {3:4.2f} \n'.format( k + 1, Orbits[k].dt.strftime('%Y-%m-%d'), Bperp[k], Dopplers[k])) g.write('{0:>10} {1:4.2f} \n'.format( Orbits[k].dt.strftime('%Y-%m-%d'), Bperp[k])) #### Looking at all possible pairs. Stop here if you just want to add ### 1 scene. If the first scene is the new scene, you have all reqd ### information at this stage. print("************************************") ### Plot if inps.plot: f.close() g.close() os.system('mkdir baselineInfos') os.system('mv baseline.txt bplot.txt baselineInfos') geomRho = ( 1 - np.clip(np.abs(Bperp[:, None] - Bperp[None, :]) / inps.Bcrit, 0., 1.)) tempRho = np.exp(-1.0 * np.abs(Days[:, None] - Days[None, :]) / inps.Tau) dopRho = (np.abs(Dopplers[:, None] - Dopplers[None, :]) / master.prf) < inps.dop Rho = geomRho * tempRho * dopRho for kk in xrange(nSar): Rho[kk, kk] = 0. avgRho = np.mean(Rho, axis=1) * nSar / (nSar - 1) numViable = np.sum((Rho > inps.cThresh), axis=1) ####Currently sorting on average coherence. masterChoice = np.argsort(-avgRho) #Descending order masterOrbit = Orbits[masterChoice[0]] masterBperp = Bperp[masterChoice[0]] print('*************************************') print('Ranking for Master Scene Selection: ') print('**************************************') print('Rank Index Date nViable Avg. Coh.') for kk in xrange(nSar): ind = masterChoice[kk] print('%03d %03d %10s %03d %02.3f' % (kk + 1, ind + 1, Orbits[ind].dt.strftime('%Y-%m-%d'), numViable[ind], avgRho[ind])) print('***************************************') print('***************************************') print('List of Viable interferograms:') print('***************************************') [ii, jj] = np.where(Rho > inps.cThresh) pairList = [] print('Master Slave Bperp Deltat') if inps.plot: os.system('rm baselineInfos/InSAR_pairs.txt') f = open("baselineInfos/InSAR_pairs.txt", 'w') f.write( 'Master Slave Bperp(m) Deltat(days) Doppler(Hz) \n' ) f.close() os.system('rm baselineInfos/InSAR_plot.txt') g = open("baselineInfos/InSAR_plot.txt", 'w') g.close() for mind, sind in itertools.izip(ii, jj): master = Orbits[mind] slave = Orbits[sind] #Plot giorni = [] BaseList = [] if master.dt > slave.dt: print('{0:>10} {1:>10} {2:>4.2f} {3:>4.2f}'.format( master.dt.strftime('%Y-%m-%d'), slave.dt.strftime('%Y-%m-%d'), Bperp[mind] - Bperp[sind], Days[mind] - Days[sind])) pairList.append([ master.dt.strftime('%Y%m%d'), slave.dt.strftime('%Y%m%d'), Bperp[mind] - Bperp[sind] ]) if inps.plot: #f=open("InSAR_plot.txt",'w') if master.dt > slave.dt: f = open("baselineInfos/InSAR_pairs.txt", 'a') f.write( '{0:>10} {1:>10} {2:>4.2f} {3:>4.2f} {4:>4.2f} \n' .format(master.dt.strftime('%Y-%m-%d'), slave.dt.strftime('%Y-%m-%d'), Bperp[mind] - Bperp[sind], Days[mind] - Days[sind], Dopplers[mind] - Dopplers[sind])) f.close() g = open("baselineInfos/InSAR_plot.txt", 'a') g.write( '{0:>10} {1:>10} {2:>4.2f} {3:>4.2f} {4:>4.2f} {5:>4.2f} \n' .format(master.dt.strftime('%Y-%m-%d'), slave.dt.strftime('%Y-%m-%d'), Bperp[mind], Bperp[sind], Dopplers[mind], Dopplers[sind])) plt.plot_date([Days[mind], Days[sind]], [Bperp[mind], Bperp[sind]], 'r-', lw=1, xdate=True, ydate=False) #f=open("InSAR_plot.txt",'a') #f.write('{2:>4.2f} {2:>4.2f} {3:>4.2f} {3:>4.2f} \n'.format(Bperp[mind], Bperp[sind], Days[mind], Days[sind])) #f.close() #print(Bperp[mind], Days[mind], Bperp[sind] , Days[sind]) print('***************************************') #######Currently picks master peg point. print('***************************************') commonPeg = masterOrbit.peg print('Common peg point: ') print(commonPeg) print('Bperp Range: [%f , %f] ' % (Bperp.min() - masterBperp, Bperp.max() - masterBperp)) ######Choose median doppler commonDop = np.median(Dopplers) maxDop = np.max(Dopplers) minDop = np.min(Dopplers) varDop = np.max(np.abs(Dopplers - commonDop)) / masterOrbit.prf print('Common Doppler: ', commonDop) print('Doppler Range: [%f, %f]' % (minDop, maxDop)) print('MAx Doppler Variation = %f %%' % (varDop * 100)) print('******************************************') ### Plot if inps.plot: days, bperp = np.loadtxt( "baselineInfos/bplot.txt", unpack=True, converters={0: mdates.strpdate2num('%Y-%m-%d')}) plt.plot_date(x=days, y=bperp, xdate=True, ydate=False) date_span = 0.2 * np.abs(days.max() - days.min()) bperp_span = 0.2 * np.abs(bperp.max() - bperp.min()) plt.grid(True) plt.ylabel("Perpendicular Baseline (meters)") plt.xlabel("Time") plt.xlim([days.min() - date_span, days.max() + date_span]) plt.ylim([bperp.min() - bperp_span, bperp.max() + bperp_span]) plt.axes().set_aspect('auto', 'datalim') plt.savefig('baselineInfos/baseline.png') plt.show() return pairList
'filename of slave image (e.g., TDX1_SAR__SSC_BTX1_SM_S_SRA_20150713T095616_20150713T095624/TDX1_SAR__SSC_BTX1_SM_S_SRA_20150713T095616_20150713T095624.xml)' ) parser.add_argument( 'slcname_slave', type=str, help='output directory containting SLC (e.g., SLC/TDX_20150713)') args = parser.parse_args() #fname_master='/raid/InSAR/TanDEM-X-QdT/dims_op_oc_dfd2_545348042_1/TDM.SAR.COSSC/1285982_002/TDM1_SAR__COS_BIST_SM_S_SRA_20150713T095616_20150713T095624/TSX1_SAR__SSC_BRX2_SM_S_SRA_20150713T095616_20150713T095624/TSX1_SAR__SSC_BRX2_SM_S_SRA_20150713T095616_20150713T095624.xml' #slcname_master = '/raid/InSAR/TanDEM-X-QdT/SLC/TSX_20150713' print('Generating SLC for master: {} '.format( os.path.basename(args.fname_master))) if not os.path.isdir(args.slcname_master): os.mkdir(args.slcname_master) date = os.path.basename(args.slcname_master) obj = createSensor('TanDEMX') obj.xml = args.fname_master obj.output = os.path.join(args.slcname_master, date + '.slc') if not os.path.exists(obj.output): obj.extractImage() obj.frame.getImage().renderHdr() obj.extractDoppler() pickName_master = os.path.join(args.slcname_master, 'data') if os.path.exists(pickName_master): with shelve.open(pickName_master, flag='r') as mdb: mFrame = mdb['frame'] else: with shelve.open(pickName_master) as mdb: mdb['frame'] = obj.frame mFrame = mdb['frame'] mdoppler = mFrame._dopplerVsPixel