def main(argv): try: file = argv[0] alks = float(argv[1]) rlks = float(argv[2]) except: try: file = argv[0] alks = float(argv[1]) rlks = float(argv[1]) except: Usage() sys.exit(1) ext = os.path.splitext(file)[1] outName = file.split('.')[0] + '_a' + str(int(alks)) + 'lks_r' + str( int(rlks)) + 'lks' + ext ################################################################################ if ext == '.h5': import h5py h5file_mli = h5py.File(outName, 'w') h5file = h5py.File(file, 'r') k = h5file.keys() if 'interferograms' in k: k[0] = 'interferograms' elif 'coherence' in k: k[0] = 'coherence' elif 'timeseries' in k: k[0] = 'timeseries' if k[0] in ['interferograms', 'coherence', 'wrapped']: print 'Multilooking the interferograms' gg = h5file_mli.create_group(k[0]) igramList = h5file[k[0]].keys() for igram in igramList: print igram unw = h5file[k[0]][igram].get(igram) unwlks = multilook(unw, alks, rlks) group = gg.create_group(igram) dset = group.create_dataset(igram, data=unwlks, compression='gzip') for key, value in h5file[k[0]][igram].attrs.iteritems(): group.attrs[key] = value group.attrs['WIDTH'] = unwlks.shape[1] group.attrs['FILE_LENGTH'] = unwlks.shape[0] try: group.attrs['Y_STEP'] = alks * float(group.attrs['Y_STEP']) group.attrs['X_STEP'] = rlks * float(group.attrs['X_STEP']) except: group.attrs['AZIMUTH_PIXEL_SIZE'] = alks * float( group.attrs['AZIMUTH_PIXEL_SIZE']) group.attrs['RANGE_PIXEL_SIZE'] = rlks * float( group.attrs['RANGE_PIXEL_SIZE']) try: dset1 = h5file['mask'].get('mask') mask = dset1[0:dset1.shape[0], 0:dset1.shape[1]] masklks = multilook(mask, alks, rlks) group = h5file_mli.create_group('mask') dset = group.create_dataset('mask', data=masklks, compression='gzip') except: print 'No mask group found.' elif k[0] in [ 'timeseries', 'temporal_coherence', 'velocity', 'mask', 'rmse' ]: print 'Multilooking ' + k[0] group = h5file_mli.create_group(k[0]) if k[0] == 'timeseries': dateList = h5file[k[0]].keys() for d in dateList: print d unw = h5file[k[0]].get(d) unwlks = multilook(unw, alks, rlks) dset = group.create_dataset(d, data=unwlks, compression='gzip') elif k[0] in ['temporal_coherence', 'velocity', 'mask', 'rmse']: dset1 = h5file[k[0]].get(k[0]) unw = dset1[0:dset1.shape[0], 0:dset1.shape[1]] unwlks = multilook(unw, alks, rlks) dset = group.create_dataset(k[0], data=unwlks, compression='gzip') try: dset1 = h5file['mask'].get('mask') Mask = dset1[0:dset1.shape[0], 0:dset1.shape[1]] Masklks = multilook(Mask, alks, rlks) group = h5file_mli.create_group('mask') dset = group.create_dataset('mask', data=Masklks, compression='gzip') except: print 'No mask group found.' ## Update attributes for key, value in h5file[k[0]].attrs.iteritems(): group.attrs[key] = value group.attrs['WIDTH'] = unwlks.shape[1] group.attrs['FILE_LENGTH'] = unwlks.shape[0] try: group.attrs['Y_STEP'] = alks * float(group.attrs['Y_STEP']) group.attrs['X_STEP'] = rlks * float(group.attrs['X_STEP']) except: group.attrs['AZIMUTH_PIXEL_SIZE'] = alks * float( group.attrs['AZIMUTH_PIXEL_SIZE']) group.attrs['RANGE_PIXEL_SIZE'] = rlks * float( group.attrs['RANGE_PIXEL_SIZE']) h5file.close() h5file_mli.close() ################################################################################ elif ext in ['.unw','.cor','.hgt','.dem','.trans'] or\ ext in ['.jpeg','.jpg','.png','.ras','.bmp'] or\ ext in ['.mli','.slc']: import pysar._readfile as readfile import pysar._writefile as writefile r = readfile.read_rsc_file(file + '.rsc') if ext == '.int' or ext == '.slc': a, p, r = readfile.read_complex64(file) pmli = multilook(p, alks, rlks) amli = multilook(a, alks, rlks) r['FILE_LENGTH'] = str(pmli.shape[0]) r['WIDTH'] = str(pmli.shape[1]) elif ext == '.unw' or ext == '.cor' or ext == '.hgt': a, p, r = readfile.read_float32(file) pmli = multilook(p, alks, rlks) amli = multilook(a, alks, rlks) print 'writing >>>' + outName writefile.write_float32(pmli, outName) r['FILE_LENGTH'] = str(pmli.shape[0]) r['WIDTH'] = str(pmli.shape[1]) elif ext == ('.dem'): d, r = readfile.read_dem(file) dmli = multilook(d, alks, rlks) print 'writing >>>' + outName writefile.write_dem(dmli, outName) r['FILE_LENGTH'] = str(dmli.shape[0]) r['WIDTH'] = str(dmli.shape[1]) elif ext in ['.jpeg', '.jpg', '.png', '.bmp']: import Image im = Image.open(file) width = im.size[0] / int(rlks) height = im.size[1] / int(alks) imlks = im.resize((width, height), Image.NEAREST) print 'writing >>>' + outName imlks.save(outName) r['FILE_LENGTH'] = str(height) r['WIDTH'] = str(width) ## Update attributes r['XMAX'] = str(int(r['WIDTH']) - 1) r['YMAX'] = str(int(r['FILE_LENGTH']) - 1) try: r['Y_STEP'] = str(float(r['Y_STEP']) * alks) r['X_STEP'] = str(float(r['X_STEP']) * rlks) except: r['AZIMUTH_PIXEL_SIZE'] = alks * float(r['AZIMUTH_PIXEL_SIZE']) r['RANGE_PIXEL_SIZE'] = rlks * float(r['RANGE_PIXEL_SIZE']) f = open(outName + '.rsc', 'w') for k in r.keys(): f.write(k + ' ' + r[k] + '\n') f.close()
def main(argv): ################# default values ################ flip_lr='no' flip_ud='no' disp_geo = 'yes' #font_size=8 color_map='jet' figs_rows=5 figs_cols=8 rewrapping='yes' allData2display='yes' Wspace = 0.1 Hspace = 0.1 title = 'out' showRef = 'yes' ref_color='k' ref_symbol='s' ref_size =10 dip_opposite = 'no' saveFig='no' dispFig='yes' dispContour='only' contour_step=200 contour_sigma=3.0 fig_dpi=300 ################### get input args ############### if len(sys.argv)>2: try: opts, args = getopt.getopt(argv,"h:D:O:G:S:f:m:M:v:u:s:c:e:d:r:p:w:i:j:t:R:a:b:k:x:y:C:V:P:o:g:l:L:") except getopt.GetoptError: Usage() ; sys.exit(1) if opts==[]: Usage() ; sys.exit(1) for opt,arg in opts: if opt in ("-h","--help"): Usage() ; sys.exit() elif opt == '-f': File = arg elif opt == '-D': demFile=arg elif opt == '-w': rewrapping = arg elif opt == '-m': min = float(arg); rewrapping='no' elif opt == '-M': max = float(arg); rewrapping='no' elif opt == '-v': flip_lr = arg elif opt == '-u': flip_ud = arg elif opt == '-s': font_size = int(arg) elif opt == '-c': color_map = arg elif opt == '-e': epoch_number = int(arg); allData2display='no' elif opt == '-d': epoch_date = arg; allData2display='no' elif opt == '-r': figs_rows = int(arg) elif opt == '-p': figs_cols = int(arg) elif opt == '-i': Wspace = float(arg) elif opt == '-j': Hspace = float(arg) elif opt == '-t': title = arg elif opt == '-R': showRef = arg elif opt == '-a': ref_color = arg elif opt == '-b': ref_symbol = arg elif opt == '-k': ref_size=int(arg) elif opt == '-x': win_x = [int(i) for i in arg.split(':')]; win_x.sort() elif opt == '-y': win_y = [int(i) for i in arg.split(':')]; win_y.sort() elif opt == '-G': disp_geo = arg elif opt == '-O': dip_opposite=arg elif opt == '-S': saveFig=arg elif opt == '-C': dispContour=arg elif opt == '-V': contour_step=float(arg) elif opt == '-P': dispFig=arg elif opt == '-o': figName=arg elif opt == '-g': contour_sigma = float(arg) elif opt == '-l': win_lat = [float(i) for i in arg.split(':')]; win_lat.sort() elif opt == '-L': win_lon = [float(i) for i in arg.split(':')]; win_lon.sort() elif len(sys.argv)==2: if argv[0]=='-h': Usage(); sys.exit(1) elif os.path.isfile(argv[0]): File = argv[0] else: print 'Input file does not existed: '+argv[0]; sys.exit(1) elif len(sys.argv)<2: Usage(); sys.exit(1) if color_map == 'hsv': ################################################ cdict1 = {'red': ((0.0, 0.0, 0.0), (0.5, 0.0, 0.0), (0.6, 1.0, 1.0), (0.8, 1.0, 1.0), (1.0, 0.5, 0.5)), 'green': ((0.0, 0.0, 0.0), (0.2, 0.0, 0.0), (0.4, 1.0, 1.0), (0.6, 1.0, 1.0), (0.8, 0.0, 0.0), (1.0, 0.0, 0.0)), 'blue': ((0.0, 0.5, .5), (0.2, 1.0, 1.0), (0.4, 1.0, 1.0), (0.5, 0.0, 0.0), (1.0, 0.0, 0.0),) } from matplotlib.colors import LinearSegmentedColormap ccmap = LinearSegmentedColormap('BlueRed1', cdict1) ################################################ else: ccmap=plt.get_cmap(color_map) ################################################## ext = os.path.splitext(File)[1] if ext == '.h5': import h5py h5file=h5py.File(File,'r') k=h5file.keys() if 'interferograms' in k: k[0] = 'interferograms' elif 'coherence' in k: k[0] = 'coherence' elif 'timeseries' in k: k[0] = 'timeseries' print 'Input: '+str(k) if k[0] in ('dem','velocity','mask','temporal_coherence','rmse'): allData2display = 'no' elif ext in ['.unw','.int','.cor','.hgt','.dem','.trans','.mli','.slc']: import pysar._readfile as readfile allData2display = 'no' k = [ext] else: print 'File extension not recogized: '+ext print 'Support file format:\n\ PySAR HDF5 files: velocity.h5, timeseries.h5, LoadedData.h5, ...\n\ ROI_PAC files: .unw .cor .int .hgt .dem .trans .mli' sys.exit(1) #################################################################### ########################## Plot One ################################ if allData2display == 'no': try: font_size except: font_size=12 ################# File Reading ################## ##### PySAR HDF5 if k[0] in ('dem','velocity','mask','temporal_coherence','rmse'): atr = h5file[k[0]].attrs dset = h5file[k[0]].get(k[0]) data = dset[0:dset.shape[0],0:dset.shape[1]] # rewrapping if rewrapping in ('yes','Yes','Y','y','YES'): print 'Rewrapping disabled for '+k[0] elif k[0] == 'timeseries': dateList=h5file[k[0]].keys() try: epoch_number except: try: epoch_date if len(epoch_date)==6: epoch_date=yymmdd2yyyymmdd(epoch_date) epoch_number=dateList.index(epoch_date) except: print 'Unrecognized epoch input!'; sys.exit(1) print 'Displaying date: '+dateList[epoch_number] atr = h5file[k[0]].attrs dset = h5file[k[0]].get(dateList[epoch_number]) data = dset[0:dset.shape[0],0:dset.shape[1]] # rewrapping if rewrapping in ('yes','Yes','y','Y','YES'): print 'Rewrapping. Set min/max to -pi/pi. Showing phase' range2phase=4*np.pi/float(atr['WAVELENGTH']) #double-way, 2*2*pi/lamda data=range2phase*data data=rewrap(data) min = -np.pi max = np.pi figUnit='(radian)' elif rewrapping in ('no','No','N','n','NO'): print 'No rewrapping. Showing displacement.' figUnit='(m)' elif k[0] in ('interferograms','coherence','wrapped'): ifgramList=h5file[k[0]].keys() try: epoch_number except: for i in range(len(ifgramList)): if epoch_date in ifgramList[i]: epoch_number = i print 'Displaying: '+ifgramList[epoch_number] atr = h5file[k[0]][ifgramList[epoch_number]].attrs dset = h5file[k[0]][ifgramList[epoch_number]].get(ifgramList[epoch_number]) data = dset[0:dset.shape[0],0:dset.shape[1]] # rewrapping if k[0] in ('coherence','wrapped') and rewrapping in ('yes','Yes','y','Y','YES'): print 'No rewrapping for coherence/wrapped files, set to "no"' rewrapping='no' if rewrapping in ('yes','Yes','y','Y','YES'): print 'Rewrapping. Set min/max to -pi/pi.' data = np.angle(np.exp(1j*data)) min = -np.pi max = np.pi ##### ROI_PAC product elif k[0] in ['.slc','.mli']: data,p,atr = readfile.read_complex64(File) data= np.nanlog10(data) figUnit = '(dB)' elif k[0] == '.int': a,data,atr = readfile.read_complex64(File) min = -np.pi max = np.pi rewrapping = 'no' figUnit = '(radian)' elif k[0] in ['.unw', '.cor', '.hgt', '.trans']: a,data,atr = readfile.read_float32(File) if k[0] == '.unw': figUnit = '(radian)' elif k[0] == '.hgt': figUnit = '(m)' if k[0] in ['.cor','.hgt','.trans']: rewrapping='no' if rewrapping in ('yes','Yes','y','Y','True','true'): print 'Rewrapping. Set min/max to -pi/pi.' data = rewrap(data) min = -np.pi max = np.pi elif k[0] == '.dem': data,atr = readfile.read_dem(File) figUnit = '(m)' ############## Data Option ################## # Opposite Sign if dip_opposite in ('yes','Yes','Y','y','YES'): data=-1*data # Subset try: # y/latitude direction win_lat try: atr['Y_FIRST'] win_y=[0]*2 win_y[0]=int((win_lat[1]-float(atr['Y_FIRST']))/float(atr['Y_STEP'])) win_y[1]=int((win_lat[0]-float(atr['Y_FIRST']))/float(atr['Y_STEP'])) if win_y[0]<0: win_y[0]=0; print 'input latitude > max latitude! Set to max' print 'subset in latitude - '+str(win_lat[0])+':'+str(win_lat[1]) except: print 'Non-geocoded file, cannot use LatLon option'; Usage(); sys.exit(1) except: try: win_y print 'subset in y direction - '+str(win_y[0])+':'+str(win_y[1]) except: win_y = [0,int(atr['FILE_LENGTH'])] try: # x/longitude direction win_lon try: atr['X_FIRST'] win_x=[0]*2 win_x[0]=int((win_lon[0]-float(atr['X_FIRST']))/float(atr['X_STEP'])) win_x[1]=int((win_lon[1]-float(atr['X_FIRST']))/float(atr['X_STEP'])) if win_x[0]<0: win_x[0]=0; print 'input longitude > max longitude! Set to max' print 'subset in longitude - '+str(win_lon[0])+':'+str(win_lon[1]) except: print 'Non-geocoded file, cannot use LatLon option'; Usage(); sys.exit(1) except: try: win_x print 'subset in x direction - '+str(win_x[0])+':'+str(win_x[1]) except: win_x = [0,int(atr['WIDTH'])] data = data[win_y[0]:win_y[1],win_x[0]:win_x[1]] # Reference Point try: xref=atr['ref_x']-win_x[0] yref=atr['ref_y']-win_y[0] except: print 'No reference point' try: xref=xref-atr['subset_x0'] yref=yref-atr['subset_y0'] except: print 'No subset' # Geo coordinate try: lon_step = float(atr['X_STEP']) lat_step = float(atr['Y_STEP']) lon_unit = atr['Y_UNIT'] lat_unit = atr['X_UNIT'] ullon = float(atr['X_FIRST'])+win_x[0]*lon_step ullat = float(atr['Y_FIRST'])+win_y[0]*lat_step llcrnrlon = ullon llcrnrlat = ullat+lat_step*data.shape[0] urcrnrlon = ullon+lon_step*data.shape[1] urcrnrlat = ullat geocoord='yes' print 'Input file is Geocoded' except: geocoord='no' # Flip if flip_lr in ('yes','Yes','Y','y','YES'): data=np.fliplr(data); xref=np.shape(data)[1]-xref-1 if flip_ud in ('yes','Yes','Y','y','YES'): data=np.flipud(data); yref=np.shape(data)[0]-yref-1 # Colorbar Extend data_min = np.nanmin(data) data_max = np.nanmax(data) try: min except: min = data_min try: max except: max = data_max if min <= data_min and max >= data_max: cb_extend='neither' elif min > data_min and max >= data_max: cb_extend='min' elif min <= data_min and max < data_max: cb_extend='max' else: cb_extend='both' ############## DEM Option ################## try: demFile print 'Show topography' import pysar._readfile as readfile if os.path.basename(demFile).split('.')[1]=='hgt': amp,dem,demRsc = readfile.read_float32(demFile) elif os.path.basename(demFile).split('.')[1]=='dem': dem,demRsc = readfile.read_dem(demFile) # Subset dem = dem[win_y[0]:win_y[1],win_x[0]:win_x[1]] # Flip if flip_lr in ('yes','Yes','Y','y','YES'): dem=np.fliplr(dem) if flip_ud in ('yes','Yes','Y','y','YES'): dem=np.flipud(dem) # DEM data preparation if dispContour in ('no','No','n','N','NO','yes','Yes','y','Y','YES'): #DEM basemap print 'plot DEM as basemap' cmap_dem=plt.get_cmap('gray') import pysar._pysar_utilities as ut if dispContour in ('only','Only','o','O','ONLY','yes','Yes','y','Y','YES'): #contour print 'plot contour' #if smoothContour in ('yes','Yes','y','Y','YES'): import scipy.ndimage as ndimage dem=ndimage.gaussian_filter(dem,sigma=contour_sigma,order=0) contour_sequence=np.arange(-6000,9000,contour_step) except: print 'No DEM file' ############## Data Plot and Output ################ # Figure Title if k[0]=='velocity': figTitle = 'Velocity (m/yr)' elif k[0]=='temporal_coherence': figTitle = 'Temporal coherence' elif k[0]=='dem': figTitle = 'DEM error' elif k[0]=='rmse': figTitle = 'RMSE (m/yr)' elif k[0]=='mask': figTitle = 'Pixels with no valid value.' elif k[0]=='coherence': figTitle = ifgramList[epoch_number] elif k[0]in('interferograms','wrapped'): figTitle = ifgramList[epoch_number]+' (radian)' elif k[0]=='timeseries': try: master_date=atr['ref_date'] except: master_date=atr['DATE'] if len(master_date)==6: master_date=yymmdd2yyyymmdd(master_date) if dip_opposite in ('yes','Yes','Y','y','YES'): figTitle = dateList[epoch_number]+'_'+master_date+' '+figUnit else: figTitle = master_date+'_'+dateList[epoch_number]+' '+figUnit elif k[0] in ['.unw','.cor','.hgt','.dem','.trans','.mli','.slc']: try: figTitle = File+' '+figUnit except: figTitle = File # Plot in Geo-coordinate: plot in map if geocoord == 'yes' and disp_geo in ('yes','Yes','y','Y','YES'): print 'display Lat/Lon' fig = plt.figure() ax = fig.add_axes([0.1,0.1,0.8,0.8]) try: plt.title(figTitle,fontsize=font_size) except: pass # Map - DEM - Data from mpl_toolkits.basemap import Basemap m = Basemap(llcrnrlon=llcrnrlon, llcrnrlat=llcrnrlat, urcrnrlon=urcrnrlon, urcrnrlat=urcrnrlat, resolution='l', area_thresh=1., projection='cyl',suppress_ticks=False,ax=ax) try: demFile if dispContour in ('no','No','n','N','NO','yes','Yes','y','Y','YES'): m.imshow(ut.hillshade(np.flipud(dem),50.0),cmap=cmap_dem) if dispContour in ('only','Only','o','O','ONLY','yes','Yes','y','Y','YES'): import numpy.matlib c_x = np.linspace(llcrnrlon,urcrnrlon,num=dem.shape[1],endpoint='FALSE').reshape(1,dem.shape[1]) c_xx= np.matlib.repmat(c_x,dem.shape[0],1) c_y = np.linspace(llcrnrlat,urcrnrlat,num=dem.shape[0],endpoint='FALSE').reshape(dem.shape[0],1) c_yy= np.matlib.repmat(c_y,1,dem.shape[1]) m.contour(c_xx,c_yy,np.flipud(dem),contour_sequence,origin='lower',colors='black',alpha=0.5,latlon='FALSE') except: pass try: im = m.imshow(np.flipud(data),cmap=ccmap,vmin=min,vmax=max) except: im = m.imshow(np.flipud(data),cmap=ccmap) # Reference Point if showRef in ('yes','Yes','Y','y','YES'): try: refPoint=ref_color+ref_symbol ref_lon = llcrnrlon + xref*lon_step ref_lat = urcrnrlat + yref*lat_step plt.plot(ref_lon,ref_lat,refPoint,ms=ref_size) except: print 'No reference point' # Colorbar from mpl_toolkits.axes_grid1 import make_axes_locatable divider = make_axes_locatable(ax) cax = divider.append_axes("right",size="5%", pad=0.30) plt.colorbar(im,cax=cax,extend=cb_extend) #plt.colorbar(im,cax=cax) # Status bar def format_coord(x,y): col = int((x-ullon)/lon_step+0.5) row = int((y-ullat)/lat_step+0.5) if col>=0 and col<=data.shape[1] and row >=0 and row<=data.shape[0]: z = data[row,col] return 'lat=%.4f, lon=%.4f, value=%.4f'%(x,y,z) else: return 'lat=%.4f, lon=%.4f'%(x,y) ax.format_coord = format_coord # Plot in x/y coordinate: row and column else: fig = plt.figure() ax = fig.add_axes([0.1,0.1,0.8,0.8]) try: plt.title(figTitle,fontsize=font_size) except: pass # Plot try: demFile if dispContour in ('no','No','n','N','NO','yes','Yes','y','Y','YES'): ax.imshow(ut.hillshade(dem,50.0),cmap=cmap_dem) if dispContour in ('only','Only','o','O','ONLY','yes','Yes','y','Y','YES'): ax.contour(dem,contour_sequence,origin='lower',colors='black',alpha=0.5) except: pass try: im = ax.imshow(data,cmap=ccmap, vmin=min, vmax=max) except: im = ax.imshow(data,cmap=ccmap) cbar = plt.colorbar(im,extend=cb_extend) #cbar.set_label('m/yr') # Reference Point if showRef in ('yes','Yes','Y','y','YES'): try: refPoint=ref_color+ref_symbol ax.plot(xref,yref,refPoint,ms=ref_size) except: print 'No reference point' plt.xlim(0,np.shape(data)[1]) plt.ylim( np.shape(data)[0],0) # Status bar def format_coord(x,y): col = int(x+0.5) row = int(y+0.5) if col>=0 and col<=data.shape[1] and row >=0 and row<=data.shape[0]: z = data[row,col] return 'x=%.4f, y=%.4f, value=%.4f'%(x,y,z) else: return 'x=%.4f, y=%.4f'%(x,y) ax.format_coord = format_coord # Save Figure if saveFig in ('yes','Yes','Y','y','YES'): try: figName except: if k[0]=='velocity': figName='velocity.pdf' elif k[0]=='temporal_coherence': figName='temporal_coherence.pdf' elif k[0]=='dem': figName='DEM_error.pdf' elif k[0]=='rmse': figName='rmse.pdf' elif k[0]=='mask': figName='mask.pdf' elif k[0]=='timeseries': figName=os.path.basename(File).split('.')[0]+'_'+dateList[epoch_number]+'.pdf' elif k[0] in ('interferograms','coherence','wrapped'): figName=ifgramList[epoch_number]+'.pdf' elif k[0] in ['.unw','.cor','.hgt','.dem','.trans','.mli','.slc']: figName=File+'.pdf' plt.savefig(figName,dpi=fig_dpi) print 'Saved figure to '+figName # Show Figure if dispFig in ('yes','Yes','Y','y','YES'): plt.show() #################################################################### ########################## Plot All ################################ elif allData2display == 'yes': try: font_size except: font_size=8 if k[0] == 'timeseries': atr = h5file[k[0]].attrs # rewrapping if rewrapping in ('yes','Yes','Y','y','YES'): print 'Rewrapping. Set min/max to -pi/pi. Showing phase.' range2phase=4*np.pi/float(h5file['timeseries'].attrs['WAVELENGTH']) min=-np.pi max=np.pi else: print 'No rewrapping. Showing displacement.' elif k[0] in ('interferograms','coherence','wrapped'): atr = h5file[k[0]][h5file[k[0]].keys()[0]].attrs # rewrapping if k[0] in ('coherence','wrapped') and rewrapping in ('yes','Yes','y','Y','YES'): print 'No rewrapping for coherence/wrapped files, set to "no"' rewrapping='no' if rewrapping in ('yes','Yes','Y','y','YES'): print 'Rewrapping. Set min/max to -pi/pi.' min=-np.pi max=np.pi else: print 'No rewrapping' ### Subset Option ### try: # y/latitude direction win_lat try: atr['Y_FIRST'] win_y=[0]*2 win_y[0]=int((win_lat[1]-float(atr['Y_FIRST']))/float(atr['Y_STEP'])) win_y[1]=int((win_lat[0]-float(atr['Y_FIRST']))/float(atr['Y_STEP'])) if win_y[0]<0: win_y[0]=0; print 'input latitude > max latitude! Set to max' print 'subset in latitude - '+str(win_lat[0])+':'+str(win_lat[1]) except: print 'Non-geocoded file, cannot use LatLon option'; Usage(); sys.exit(1) except: try: win_y print 'subset in y direction - '+str(win_y[0])+':'+str(win_y[1]) except: win_y = [0,int(atr['FILE_LENGTH'])] try: # x/longitude direction win_lon try: atr['X_FIRST'] win_x=[0]*2 win_x[0]=int((win_lon[0]-float(atr['X_FIRST']))/float(atr['X_STEP'])) win_x[1]=int((win_lon[1]-float(atr['X_FIRST']))/float(atr['X_STEP'])) if win_x[0]<0: win_x[0]=0; print 'input longitude > max longitude! Set to max' print 'subset in longitude - '+str(win_lon[0])+':'+str(win_lon[1]) except: print 'Non-geocoded file, cannot use LatLon option'; Usage(); sys.exit(1) except: try: win_x print 'subset in x direction - '+str(win_x[0])+':'+str(win_x[1]) except: win_x = [0,int(atr['WIDTH'])] # Figure Name if saveFig in ('yes','Yes','Y','y','YES'): try: figName figNameBase = os.path.basename(figName).split('.')[0] figNameExt = os.path.basename(figName).split('.')[1] except: figNameBase = os.path.basename(File).split('.')[0] figNameExt = '.pdf' ################## DEM Options #################### try: demFile print 'Show topography' import pysar._readfile as readfile if os.path.basename(demFile).split('.')[1]=='hgt': amp,dem,demRsc = readfile.read_float32(demFile) elif os.path.basename(demFile).split('.')[1]=='dem': dem,demRsc = readfile.read_dem(demFile) # Subset dem = dem[win_y[0]:win_y[1],win_x[0]:win_x[1]] if dispContour in ('no','No','n','N','NO','yes','Yes','y','Y','YES'): #DEM basemap print 'plot DEM as basemap' cmap_dem=plt.get_cmap('gray') import pysar._pysar_utilities as ut hillshade_dem=ut.hillshade(dem,50.0) if dispContour in ('only','Only','o','O','ONLY','yes','Yes','y','Y','YES'): #contour print 'plot contour' #if smoothContour in ('yes','Yes','y','Y','YES'): import scipy.ndimage as ndimage dem=ndimage.gaussian_filter(dem,sigma=contour_sigma,order=0) contour_sequence=np.arange(-6000,9000,contour_step) except: print 'No DEM file' ################## Plot Loop #################### ifgramList=h5file[k[0]].keys() nfigs = figs_rows*figs_cols lifgram = len(ifgramList) print 'number of epochs/interferograms to display:'+ str(lifgram) kk=int(lifgram/nfigs)+1 ii=0 # plot (1,end-1) figures for j in range(1,kk): fig = plt.figure(j) ii=(j-1)*nfigs+1 for i in range(ii,ii+nfigs): print 'loading '+ifgramList[i-1] ax = fig.add_subplot(figs_rows,figs_cols,i-ii+1) # Data option if k[0] == 'timeseries': figTitle = ifgramList[i-1] dset = h5file[k[0]].get(ifgramList[i-1]) data = dset[0:dset.shape[0],0:dset.shape[1]] if rewrapping in ('yes','Yes','Y','y','YES'): data=range2phase*data data=rewrap(data) elif k[0] in ('interferograms','coherence','wrapped'): figTitle = str(i)+' : '+h5file[k[0]][ifgramList[i-1]].attrs['DATE12'] dset = h5file[k[0]][ifgramList[i-1]].get(ifgramList[i-1]) data = dset[0:dset.shape[0],0:dset.shape[1]] if rewrapping in ('yes','Yes','Y','y','YES'): data=np.angle(np.exp(1j*data)) data = data[win_y[0]:win_y[1],win_x[0]:win_x[1]] # Plot try: demFile if dispContour in ('no','No','n','N','NO','yes','Yes','y','Y','YES'): plt.imshow(hillshade_dem,cmap=cmap_dem) if dispContour in ('only','Only','o','O','ONLY','yes','Yes','y','Y','YES'): plt.contour(dem,contour_sequence,origin='lower',colors='black',alpha=0.5) except: pass try: ax.imshow(data,cmap=ccmap,vmin=min,vmax=max) except: ax.imshow(data,cmap=ccmap) ax.set_yticklabels([]) ax.set_xticklabels([]) ax.set_xticks([]) ax.set_yticks([]) if title=='out': ax.set_title(figTitle,fontsize=font_size) elif title=='in': add_inner_title(ax, figTitle, loc=1) fig.subplots_adjust(wspace=Wspace,hspace=Hspace) if saveFig in ('yes','Yes','Y','y','YES'): figName=figNameBase+'_'+str(j)+figNameExt plt.savefig(figName,dpi=fig_dpi) # plot the last figure fig = plt.figure(kk) ii=(kk-1)*nfigs+1 for i in range(ii,lifgram+1): print 'loading '+ifgramList[i-1] ax = fig.add_subplot(figs_rows,figs_cols,i-ii+1) # Data option if k[0] == 'timeseries': figTitle = ifgramList[i-1] dset = h5file[k[0]].get(ifgramList[i-1]) data = dset[0:dset.shape[0],0:dset.shape[1]] if rewrapping in ('yes','Yes','Y','y','YES'): data=range2phase*data data=rewrap(data) elif k[0] in ('interferograms','coherence','wrapped'): figTitle = str(i)+' : '+h5file[k[0]][ifgramList[i-1]].attrs['DATE12'] dset = h5file[k[0]][ifgramList[i-1]].get(ifgramList[i-1]) data = dset[0:dset.shape[0],0:dset.shape[1]] if rewrapping in ('yes','Yes','Y','y','YES'): data=np.angle(np.exp(1j*data)) data = data[win_y[0]:win_y[1],win_x[0]:win_x[1]] # Plot try: demFile if dispContour in ('no','No','n','N','NO','yes','Yes','y','Y','YES'): plt.imshow(hillshade_dem,cmap=cmap_dem) if dispContour in ('only','Only','o','O','ONLY','yes','Yes','y','Y','YES'): plt.contour(dem,contour_sequence,origin='lower',colors='black',alpha=0.5) except: pass try: ax.imshow(data,cmap=ccmap,vmin=min,vmax=max) except: ax.imshow(data,cmap=ccmap) ax.xaxis.label.set_fontsize(20) ax.set_yticklabels([]) ax.set_xticklabels([]) ax.set_xticks([]) ax.set_yticks([]) if title=='out': ax.set_title(figTitle,fontsize=font_size) elif title =='in': add_inner_title(ax, figTitle, loc=1) fig.subplots_adjust(wspace=Wspace,hspace=Hspace) if saveFig in ('yes','Yes','Y','y','YES'): figName=figNameBase+'_'+str(kk)+figNameExt plt.savefig(figName,dpi=fig_dpi) print 'Saved figure to '+figNameBase+'_*'+figNameExt if dispFig in ('yes','Yes','Y','y','YES'): plt.show() #################################################################### #################################################################### try: h5file.close() except: pass
def main(argv): try: file=argv[0] alks=float(argv[1]) rlks=float(argv[2]) except: try: file=argv[0] alks=float(argv[1]) rlks=float(argv[1]) except: Usage();sys.exit(1) ext = os.path.splitext(file)[1] outName=file.split('.')[0]+'_a'+str(int(alks))+'lks_r'+str(int(rlks))+'lks'+ext ################################################################################ if ext == '.h5': import h5py h5file_mli=h5py.File(outName,'w') h5file=h5py.File(file,'r') k=h5file.keys() if 'interferograms' in k: k[0] = 'interferograms' elif 'coherence' in k: k[0] = 'coherence' elif 'timeseries' in k: k[0] = 'timeseries' if k[0] in ['interferograms','coherence','wrapped']: print 'Multilooking the interferograms' gg = h5file_mli.create_group(k[0]) igramList=h5file[k[0]].keys() for igram in igramList: print igram unw = h5file[k[0]][igram].get(igram) unwlks=multilook(unw,alks,rlks) group = gg.create_group(igram) dset = group.create_dataset(igram, data=unwlks, compression='gzip') for key, value in h5file[k[0]][igram].attrs.iteritems(): group.attrs[key] = value group.attrs['WIDTH'] = unwlks.shape[1] group.attrs['FILE_LENGTH'] = unwlks.shape[0] try: group.attrs['Y_STEP']=alks*float(group.attrs['Y_STEP']) group.attrs['X_STEP']=rlks*float(group.attrs['X_STEP']) except: group.attrs['AZIMUTH_PIXEL_SIZE'] = alks*float(group.attrs['AZIMUTH_PIXEL_SIZE']) group.attrs['RANGE_PIXEL_SIZE'] = rlks*float(group.attrs['RANGE_PIXEL_SIZE']) try: dset1=h5file['mask'].get('mask') mask=dset1[0:dset1.shape[0],0:dset1.shape[1]] masklks=multilook(mask,alks,rlks) group=h5file_mli.create_group('mask') dset = group.create_dataset('mask', data=masklks, compression='gzip') except: print 'No mask group found.' elif k[0] in ['timeseries','temporal_coherence', 'velocity', 'mask', 'rmse']: print 'Multilooking '+k[0] group = h5file_mli.create_group(k[0]) if k[0] == 'timeseries': dateList=h5file[k[0]].keys() for d in dateList: print d unw = h5file[k[0]].get(d) unwlks=multilook(unw,alks,rlks) dset = group.create_dataset(d, data=unwlks, compression='gzip') elif k[0] in ['temporal_coherence', 'velocity', 'mask', 'rmse']: dset1 = h5file[k[0]].get(k[0]) unw = dset1[0:dset1.shape[0],0:dset1.shape[1]] unwlks=multilook(unw,alks,rlks) dset = group.create_dataset(k[0], data=unwlks, compression='gzip') try: dset1 = h5file['mask'].get('mask') Mask = dset1[0:dset1.shape[0],0:dset1.shape[1]] Masklks=multilook(Mask,alks,rlks) group=h5file_mli.create_group('mask') dset = group.create_dataset('mask', data=Masklks, compression='gzip') except: print 'No mask group found.' ## Update attributes for key,value in h5file[k[0]].attrs.iteritems(): group.attrs[key] = value group.attrs['WIDTH'] = unwlks.shape[1] group.attrs['FILE_LENGTH'] = unwlks.shape[0] try: group.attrs['Y_STEP']=alks*float(group.attrs['Y_STEP']) group.attrs['X_STEP']=rlks*float(group.attrs['X_STEP']) except: group.attrs['AZIMUTH_PIXEL_SIZE'] = alks*float(group.attrs['AZIMUTH_PIXEL_SIZE']) group.attrs['RANGE_PIXEL_SIZE'] = rlks*float(group.attrs['RANGE_PIXEL_SIZE']) h5file.close() h5file_mli.close() ################################################################################ elif ext in ['.unw','.cor','.hgt','.dem','.trans'] or\ ext in ['.jpeg','.jpg','.png','.ras','.bmp'] or\ ext in ['.mli','.slc']: import pysar._readfile as readfile import pysar._writefile as writefile r = readfile.read_rsc_file(file + '.rsc') if ext == '.int' or ext == '.slc': a,p,r = readfile.read_complex64(file) pmli=multilook(p,alks,rlks) amli=multilook(a,alks,rlks) r['FILE_LENGTH']=str(pmli.shape[0]) r['WIDTH'] =str(pmli.shape[1]) elif ext == '.unw' or ext == '.cor' or ext == '.hgt': a,p,r = readfile.read_float32(file) pmli=multilook(p,alks,rlks) amli=multilook(a,alks,rlks) print 'writing >>>'+outName writefile.write_float32(pmli,outName) r['FILE_LENGTH']=str(pmli.shape[0]) r['WIDTH'] =str(pmli.shape[1]) elif ext == ('.dem'): d,r = readfile.read_dem(file) dmli=multilook(d,alks,rlks) print 'writing >>>'+outName writefile.write_dem(dmli,outName) r['FILE_LENGTH']=str(dmli.shape[0]) r['WIDTH'] =str(dmli.shape[1]) elif ext in ['.jpeg','.jpg','.png','.bmp']: import Image im = Image.open(file) width = im.size[0] / int(rlks) height = im.size[1] / int(alks) imlks = im.resize((width, height), Image.NEAREST) print 'writing >>>'+outName imlks.save(outName) r['FILE_LENGTH']=str(height) r['WIDTH'] =str(width) ## Update attributes r['XMAX']=str(int(r['WIDTH']) - 1) r['YMAX']=str(int(r['FILE_LENGTH']) - 1) try: r['Y_STEP']=str(float(r['Y_STEP'])*alks) r['X_STEP']=str(float(r['X_STEP'])*rlks) except: r['AZIMUTH_PIXEL_SIZE'] = alks*float(r['AZIMUTH_PIXEL_SIZE']) r['RANGE_PIXEL_SIZE'] = rlks*float(r['RANGE_PIXEL_SIZE']) f = open(outName+'.rsc','w') for k in r.keys(): f.write(k+' '+r[k]+'\n') f.close()
def main(argv): ################# default values ################ flip_lr = 'no' flip_ud = 'no' disp_geo = 'yes' #font_size=8 color_map = 'jet' figs_rows = 5 figs_cols = 8 rewrapping = 'yes' allData2display = 'yes' Wspace = 0.1 Hspace = 0.1 title = 'out' showRef = 'yes' ref_color = 'k' ref_symbol = 's' ref_size = 10 dip_opposite = 'no' saveFig = 'no' dispFig = 'yes' dispContour = 'only' contour_step = 200 contour_sigma = 3.0 fig_dpi = 300 ################### get input args ############### if len(sys.argv) > 2: try: opts, args = getopt.getopt( argv, "h:D:O:G:S:f:m:M:v:u:s:c:e:d:r:p:w:i:j:t:R:a:b:k:x:y:C:V:P:o:g:l:L:" ) except getopt.GetoptError: Usage() sys.exit(1) if opts == []: Usage() sys.exit(1) for opt, arg in opts: if opt in ("-h", "--help"): Usage() sys.exit() elif opt == '-f': File = arg elif opt == '-D': demFile = arg elif opt == '-w': rewrapping = arg elif opt == '-m': min = float(arg) rewrapping = 'no' elif opt == '-M': max = float(arg) rewrapping = 'no' elif opt == '-v': flip_lr = arg elif opt == '-u': flip_ud = arg elif opt == '-s': font_size = int(arg) elif opt == '-c': color_map = arg elif opt == '-e': epoch_number = int(arg) allData2display = 'no' elif opt == '-d': epoch_date = arg allData2display = 'no' elif opt == '-r': figs_rows = int(arg) elif opt == '-p': figs_cols = int(arg) elif opt == '-i': Wspace = float(arg) elif opt == '-j': Hspace = float(arg) elif opt == '-t': title = arg elif opt == '-R': showRef = arg elif opt == '-a': ref_color = arg elif opt == '-b': ref_symbol = arg elif opt == '-k': ref_size = int(arg) elif opt == '-x': win_x = [int(i) for i in arg.split(':')] win_x.sort() elif opt == '-y': win_y = [int(i) for i in arg.split(':')] win_y.sort() elif opt == '-G': disp_geo = arg elif opt == '-O': dip_opposite = arg elif opt == '-S': saveFig = arg elif opt == '-C': dispContour = arg elif opt == '-V': contour_step = float(arg) elif opt == '-P': dispFig = arg elif opt == '-o': figName = arg elif opt == '-g': contour_sigma = float(arg) elif opt == '-l': win_lat = [float(i) for i in arg.split(':')] win_lat.sort() elif opt == '-L': win_lon = [float(i) for i in arg.split(':')] win_lon.sort() elif len(sys.argv) == 2: if argv[0] == '-h': Usage() sys.exit(1) elif os.path.isfile(argv[0]): File = argv[0] else: print 'Input file does not existed: ' + argv[0] sys.exit(1) elif len(sys.argv) < 2: Usage() sys.exit(1) if color_map == 'hsv': ################################################ cdict1 = { 'red': ((0.0, 0.0, 0.0), (0.5, 0.0, 0.0), (0.6, 1.0, 1.0), (0.8, 1.0, 1.0), (1.0, 0.5, 0.5)), 'green': ((0.0, 0.0, 0.0), (0.2, 0.0, 0.0), (0.4, 1.0, 1.0), (0.6, 1.0, 1.0), (0.8, 0.0, 0.0), (1.0, 0.0, 0.0)), 'blue': ( (0.0, 0.5, .5), (0.2, 1.0, 1.0), (0.4, 1.0, 1.0), (0.5, 0.0, 0.0), (1.0, 0.0, 0.0), ) } from matplotlib.colors import LinearSegmentedColormap ccmap = LinearSegmentedColormap('BlueRed1', cdict1) ################################################ else: ccmap = plt.get_cmap(color_map) ################################################## ext = os.path.splitext(File)[1] if ext == '.h5': import h5py h5file = h5py.File(File, 'r') k = h5file.keys() if 'interferograms' in k: k[0] = 'interferograms' elif 'coherence' in k: k[0] = 'coherence' elif 'timeseries' in k: k[0] = 'timeseries' print 'Input: ' + str(k) if k[0] in ('dem', 'velocity', 'mask', 'temporal_coherence', 'rmse'): allData2display = 'no' elif ext in [ '.unw', '.int', '.cor', '.hgt', '.dem', '.trans', '.mli', '.slc' ]: import pysar._readfile as readfile allData2display = 'no' k = [ext] else: print 'File extension not recogized: ' + ext print 'Support file format:\n\ PySAR HDF5 files: velocity.h5, timeseries.h5, LoadedData.h5, ...\n\ ROI_PAC files: .unw .cor .int .hgt .dem .trans .mli' sys.exit(1) #################################################################### ########################## Plot One ################################ if allData2display == 'no': try: font_size except: font_size = 12 ################# File Reading ################## ##### PySAR HDF5 if k[0] in ('dem', 'velocity', 'mask', 'temporal_coherence', 'rmse'): atr = h5file[k[0]].attrs dset = h5file[k[0]].get(k[0]) data = dset[0:dset.shape[0], 0:dset.shape[1]] # rewrapping if rewrapping in ('yes', 'Yes', 'Y', 'y', 'YES'): print 'Rewrapping disabled for ' + k[0] elif k[0] == 'timeseries': dateList = h5file[k[0]].keys() try: epoch_number except: try: epoch_date if len(epoch_date) == 6: epoch_date = yymmdd2yyyymmdd(epoch_date) epoch_number = dateList.index(epoch_date) except: print 'Unrecognized epoch input!' sys.exit(1) print 'Displaying date: ' + dateList[epoch_number] atr = h5file[k[0]].attrs dset = h5file[k[0]].get(dateList[epoch_number]) data = dset[0:dset.shape[0], 0:dset.shape[1]] # rewrapping if rewrapping in ('yes', 'Yes', 'y', 'Y', 'YES'): print 'Rewrapping. Set min/max to -pi/pi. Showing phase' range2phase = 4 * np.pi / float( atr['WAVELENGTH']) #double-way, 2*2*pi/lamda data = range2phase * data data = rewrap(data) min = -np.pi max = np.pi figUnit = '(radian)' elif rewrapping in ('no', 'No', 'N', 'n', 'NO'): print 'No rewrapping. Showing displacement.' figUnit = '(m)' elif k[0] in ('interferograms', 'coherence', 'wrapped'): ifgramList = h5file[k[0]].keys() try: epoch_number except: for i in range(len(ifgramList)): if epoch_date in ifgramList[i]: epoch_number = i print 'Displaying: ' + ifgramList[epoch_number] atr = h5file[k[0]][ifgramList[epoch_number]].attrs dset = h5file[k[0]][ifgramList[epoch_number]].get( ifgramList[epoch_number]) data = dset[0:dset.shape[0], 0:dset.shape[1]] # rewrapping if k[0] in ('coherence', 'wrapped') and rewrapping in ('yes', 'Yes', 'y', 'Y', 'YES'): print 'No rewrapping for coherence/wrapped files, set to "no"' rewrapping = 'no' if rewrapping in ('yes', 'Yes', 'y', 'Y', 'YES'): print 'Rewrapping. Set min/max to -pi/pi.' data = np.angle(np.exp(1j * data)) min = -np.pi max = np.pi ##### ROI_PAC product elif k[0] in ['.slc', '.mli']: data, p, atr = readfile.read_complex64(File) data = np.nanlog10(data) figUnit = '(dB)' elif k[0] == '.int': a, data, atr = readfile.read_complex64(File) min = -np.pi max = np.pi rewrapping = 'no' figUnit = '(radian)' elif k[0] in ['.unw', '.cor', '.hgt', '.trans']: a, data, atr = readfile.read_float32(File) if k[0] == '.unw': figUnit = '(radian)' elif k[0] == '.hgt': figUnit = '(m)' if k[0] in ['.cor', '.hgt', '.trans']: rewrapping = 'no' if rewrapping in ('yes', 'Yes', 'y', 'Y', 'True', 'true'): print 'Rewrapping. Set min/max to -pi/pi.' data = rewrap(data) min = -np.pi max = np.pi elif k[0] == '.dem': data, atr = readfile.read_dem(File) figUnit = '(m)' ############## Data Option ################## # Opposite Sign if dip_opposite in ('yes', 'Yes', 'Y', 'y', 'YES'): data = -1 * data # Subset try: # y/latitude direction win_lat try: atr['Y_FIRST'] win_y = [0] * 2 win_y[0] = int((win_lat[1] - float(atr['Y_FIRST'])) / float(atr['Y_STEP'])) win_y[1] = int((win_lat[0] - float(atr['Y_FIRST'])) / float(atr['Y_STEP'])) if win_y[0] < 0: win_y[0] = 0 print 'input latitude > max latitude! Set to max' print 'subset in latitude - ' + str(win_lat[0]) + ':' + str( win_lat[1]) except: print 'Non-geocoded file, cannot use LatLon option' Usage() sys.exit(1) except: try: win_y print 'subset in y direction - ' + str(win_y[0]) + ':' + str( win_y[1]) except: win_y = [0, int(atr['FILE_LENGTH'])] try: # x/longitude direction win_lon try: atr['X_FIRST'] win_x = [0] * 2 win_x[0] = int((win_lon[0] - float(atr['X_FIRST'])) / float(atr['X_STEP'])) win_x[1] = int((win_lon[1] - float(atr['X_FIRST'])) / float(atr['X_STEP'])) if win_x[0] < 0: win_x[0] = 0 print 'input longitude > max longitude! Set to max' print 'subset in longitude - ' + str(win_lon[0]) + ':' + str( win_lon[1]) except: print 'Non-geocoded file, cannot use LatLon option' Usage() sys.exit(1) except: try: win_x print 'subset in x direction - ' + str(win_x[0]) + ':' + str( win_x[1]) except: win_x = [0, int(atr['WIDTH'])] data = data[win_y[0]:win_y[1], win_x[0]:win_x[1]] # Reference Point try: xref = atr['ref_x'] - win_x[0] yref = atr['ref_y'] - win_y[0] except: print 'No reference point' try: xref = xref - atr['subset_x0'] yref = yref - atr['subset_y0'] except: print 'No subset' # Geo coordinate try: lon_step = float(atr['X_STEP']) lat_step = float(atr['Y_STEP']) lon_unit = atr['Y_UNIT'] lat_unit = atr['X_UNIT'] ullon = float(atr['X_FIRST']) + win_x[0] * lon_step ullat = float(atr['Y_FIRST']) + win_y[0] * lat_step llcrnrlon = ullon llcrnrlat = ullat + lat_step * data.shape[0] urcrnrlon = ullon + lon_step * data.shape[1] urcrnrlat = ullat geocoord = 'yes' print 'Input file is Geocoded' except: geocoord = 'no' # Flip if flip_lr in ('yes', 'Yes', 'Y', 'y', 'YES'): data = np.fliplr(data) xref = np.shape(data)[1] - xref - 1 if flip_ud in ('yes', 'Yes', 'Y', 'y', 'YES'): data = np.flipud(data) yref = np.shape(data)[0] - yref - 1 # Colorbar Extend data_min = np.nanmin(data) data_max = np.nanmax(data) try: min except: min = data_min try: max except: max = data_max if min <= data_min and max >= data_max: cb_extend = 'neither' elif min > data_min and max >= data_max: cb_extend = 'min' elif min <= data_min and max < data_max: cb_extend = 'max' else: cb_extend = 'both' ############## DEM Option ################## try: demFile print 'Show topography' import pysar._readfile as readfile if os.path.basename(demFile).split('.')[1] == 'hgt': amp, dem, demRsc = readfile.read_float32(demFile) elif os.path.basename(demFile).split('.')[1] == 'dem': dem, demRsc = readfile.read_dem(demFile) # Subset dem = dem[win_y[0]:win_y[1], win_x[0]:win_x[1]] # Flip if flip_lr in ('yes', 'Yes', 'Y', 'y', 'YES'): dem = np.fliplr(dem) if flip_ud in ('yes', 'Yes', 'Y', 'y', 'YES'): dem = np.flipud(dem) # DEM data preparation if dispContour in ('no', 'No', 'n', 'N', 'NO', 'yes', 'Yes', 'y', 'Y', 'YES'): #DEM basemap print 'plot DEM as basemap' cmap_dem = plt.get_cmap('gray') import pysar._pysar_utilities as ut if dispContour in ('only', 'Only', 'o', 'O', 'ONLY', 'yes', 'Yes', 'y', 'Y', 'YES'): #contour print 'plot contour' #if smoothContour in ('yes','Yes','y','Y','YES'): import scipy.ndimage as ndimage dem = ndimage.gaussian_filter(dem, sigma=contour_sigma, order=0) contour_sequence = np.arange(-6000, 9000, contour_step) except: print 'No DEM file' ############## Data Plot and Output ################ # Figure Title if k[0] == 'velocity': figTitle = 'Velocity (m/yr)' elif k[0] == 'temporal_coherence': figTitle = 'Temporal coherence' elif k[0] == 'dem': figTitle = 'DEM error' elif k[0] == 'rmse': figTitle = 'RMSE (m/yr)' elif k[0] == 'mask': figTitle = 'Pixels with no valid value.' elif k[0] == 'coherence': figTitle = ifgramList[epoch_number] elif k[0] in ('interferograms', 'wrapped'): figTitle = ifgramList[epoch_number] + ' (radian)' elif k[0] == 'timeseries': try: master_date = atr['ref_date'] except: master_date = atr['DATE'] if len(master_date) == 6: master_date = yymmdd2yyyymmdd(master_date) if dip_opposite in ('yes', 'Yes', 'Y', 'y', 'YES'): figTitle = dateList[ epoch_number] + '_' + master_date + ' ' + figUnit else: figTitle = master_date + '_' + dateList[ epoch_number] + ' ' + figUnit elif k[0] in [ '.unw', '.cor', '.hgt', '.dem', '.trans', '.mli', '.slc' ]: try: figTitle = File + ' ' + figUnit except: figTitle = File # Plot in Geo-coordinate: plot in map if geocoord == 'yes' and disp_geo in ('yes', 'Yes', 'y', 'Y', 'YES'): print 'display Lat/Lon' fig = plt.figure() ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) try: plt.title(figTitle, fontsize=font_size) except: pass # Map - DEM - Data from mpl_toolkits.basemap import Basemap m = Basemap(llcrnrlon=llcrnrlon, llcrnrlat=llcrnrlat, urcrnrlon=urcrnrlon, urcrnrlat=urcrnrlat, resolution='l', area_thresh=1., projection='cyl', suppress_ticks=False, ax=ax) try: demFile if dispContour in ('no', 'No', 'n', 'N', 'NO', 'yes', 'Yes', 'y', 'Y', 'YES'): m.imshow(ut.hillshade(np.flipud(dem), 50.0), cmap=cmap_dem) if dispContour in ('only', 'Only', 'o', 'O', 'ONLY', 'yes', 'Yes', 'y', 'Y', 'YES'): import numpy.matlib c_x = np.linspace(llcrnrlon, urcrnrlon, num=dem.shape[1], endpoint='FALSE').reshape( 1, dem.shape[1]) c_xx = np.matlib.repmat(c_x, dem.shape[0], 1) c_y = np.linspace(llcrnrlat, urcrnrlat, num=dem.shape[0], endpoint='FALSE').reshape( dem.shape[0], 1) c_yy = np.matlib.repmat(c_y, 1, dem.shape[1]) m.contour(c_xx, c_yy, np.flipud(dem), contour_sequence, origin='lower', colors='black', alpha=0.5, latlon='FALSE') except: pass try: im = m.imshow(np.flipud(data), cmap=ccmap, vmin=min, vmax=max) except: im = m.imshow(np.flipud(data), cmap=ccmap) # Reference Point if showRef in ('yes', 'Yes', 'Y', 'y', 'YES'): try: refPoint = ref_color + ref_symbol ref_lon = llcrnrlon + xref * lon_step ref_lat = urcrnrlat + yref * lat_step plt.plot(ref_lon, ref_lat, refPoint, ms=ref_size) except: print 'No reference point' # Colorbar from mpl_toolkits.axes_grid1 import make_axes_locatable divider = make_axes_locatable(ax) cax = divider.append_axes("right", size="5%", pad=0.30) plt.colorbar(im, cax=cax, extend=cb_extend) #plt.colorbar(im,cax=cax) # Status bar def format_coord(x, y): col = int((x - ullon) / lon_step + 0.5) row = int((y - ullat) / lat_step + 0.5) if col >= 0 and col <= data.shape[ 1] and row >= 0 and row <= data.shape[0]: z = data[row, col] return 'lat=%.4f, lon=%.4f, value=%.4f' % (x, y, z) else: return 'lat=%.4f, lon=%.4f' % (x, y) ax.format_coord = format_coord # Plot in x/y coordinate: row and column else: fig = plt.figure() ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) try: plt.title(figTitle, fontsize=font_size) except: pass # Plot try: demFile if dispContour in ('no', 'No', 'n', 'N', 'NO', 'yes', 'Yes', 'y', 'Y', 'YES'): ax.imshow(ut.hillshade(dem, 50.0), cmap=cmap_dem) if dispContour in ('only', 'Only', 'o', 'O', 'ONLY', 'yes', 'Yes', 'y', 'Y', 'YES'): ax.contour(dem, contour_sequence, origin='lower', colors='black', alpha=0.5) except: pass try: im = ax.imshow(data, cmap=ccmap, vmin=min, vmax=max) except: im = ax.imshow(data, cmap=ccmap) cbar = plt.colorbar(im, extend=cb_extend) #cbar.set_label('m/yr') # Reference Point if showRef in ('yes', 'Yes', 'Y', 'y', 'YES'): try: refPoint = ref_color + ref_symbol ax.plot(xref, yref, refPoint, ms=ref_size) except: print 'No reference point' plt.xlim(0, np.shape(data)[1]) plt.ylim(np.shape(data)[0], 0) # Status bar def format_coord(x, y): col = int(x + 0.5) row = int(y + 0.5) if col >= 0 and col <= data.shape[ 1] and row >= 0 and row <= data.shape[0]: z = data[row, col] return 'x=%.4f, y=%.4f, value=%.4f' % (x, y, z) else: return 'x=%.4f, y=%.4f' % (x, y) ax.format_coord = format_coord # Save Figure if saveFig in ('yes', 'Yes', 'Y', 'y', 'YES'): try: figName except: if k[0] == 'velocity': figName = 'velocity.pdf' elif k[0] == 'temporal_coherence': figName = 'temporal_coherence.pdf' elif k[0] == 'dem': figName = 'DEM_error.pdf' elif k[0] == 'rmse': figName = 'rmse.pdf' elif k[0] == 'mask': figName = 'mask.pdf' elif k[0] == 'timeseries': figName = os.path.basename(File).split( '.')[0] + '_' + dateList[epoch_number] + '.pdf' elif k[0] in ('interferograms', 'coherence', 'wrapped'): figName = ifgramList[epoch_number] + '.pdf' elif k[0] in [ '.unw', '.cor', '.hgt', '.dem', '.trans', '.mli', '.slc' ]: figName = File + '.pdf' plt.savefig(figName, dpi=fig_dpi) print 'Saved figure to ' + figName # Show Figure if dispFig in ('yes', 'Yes', 'Y', 'y', 'YES'): plt.show() #################################################################### ########################## Plot All ################################ elif allData2display == 'yes': try: font_size except: font_size = 8 if k[0] == 'timeseries': atr = h5file[k[0]].attrs # rewrapping if rewrapping in ('yes', 'Yes', 'Y', 'y', 'YES'): print 'Rewrapping. Set min/max to -pi/pi. Showing phase.' range2phase = 4 * np.pi / float( h5file['timeseries'].attrs['WAVELENGTH']) min = -np.pi max = np.pi else: print 'No rewrapping. Showing displacement.' elif k[0] in ('interferograms', 'coherence', 'wrapped'): atr = h5file[k[0]][h5file[k[0]].keys()[0]].attrs # rewrapping if k[0] in ('coherence', 'wrapped') and rewrapping in ('yes', 'Yes', 'y', 'Y', 'YES'): print 'No rewrapping for coherence/wrapped files, set to "no"' rewrapping = 'no' if rewrapping in ('yes', 'Yes', 'Y', 'y', 'YES'): print 'Rewrapping. Set min/max to -pi/pi.' min = -np.pi max = np.pi else: print 'No rewrapping' ### Subset Option ### try: # y/latitude direction win_lat try: atr['Y_FIRST'] win_y = [0] * 2 win_y[0] = int((win_lat[1] - float(atr['Y_FIRST'])) / float(atr['Y_STEP'])) win_y[1] = int((win_lat[0] - float(atr['Y_FIRST'])) / float(atr['Y_STEP'])) if win_y[0] < 0: win_y[0] = 0 print 'input latitude > max latitude! Set to max' print 'subset in latitude - ' + str(win_lat[0]) + ':' + str( win_lat[1]) except: print 'Non-geocoded file, cannot use LatLon option' Usage() sys.exit(1) except: try: win_y print 'subset in y direction - ' + str(win_y[0]) + ':' + str( win_y[1]) except: win_y = [0, int(atr['FILE_LENGTH'])] try: # x/longitude direction win_lon try: atr['X_FIRST'] win_x = [0] * 2 win_x[0] = int((win_lon[0] - float(atr['X_FIRST'])) / float(atr['X_STEP'])) win_x[1] = int((win_lon[1] - float(atr['X_FIRST'])) / float(atr['X_STEP'])) if win_x[0] < 0: win_x[0] = 0 print 'input longitude > max longitude! Set to max' print 'subset in longitude - ' + str(win_lon[0]) + ':' + str( win_lon[1]) except: print 'Non-geocoded file, cannot use LatLon option' Usage() sys.exit(1) except: try: win_x print 'subset in x direction - ' + str(win_x[0]) + ':' + str( win_x[1]) except: win_x = [0, int(atr['WIDTH'])] # Figure Name if saveFig in ('yes', 'Yes', 'Y', 'y', 'YES'): try: figName figNameBase = os.path.basename(figName).split('.')[0] figNameExt = os.path.basename(figName).split('.')[1] except: figNameBase = os.path.basename(File).split('.')[0] figNameExt = '.pdf' ################## DEM Options #################### try: demFile print 'Show topography' import pysar._readfile as readfile if os.path.basename(demFile).split('.')[1] == 'hgt': amp, dem, demRsc = readfile.read_float32(demFile) elif os.path.basename(demFile).split('.')[1] == 'dem': dem, demRsc = readfile.read_dem(demFile) # Subset dem = dem[win_y[0]:win_y[1], win_x[0]:win_x[1]] if dispContour in ('no', 'No', 'n', 'N', 'NO', 'yes', 'Yes', 'y', 'Y', 'YES'): #DEM basemap print 'plot DEM as basemap' cmap_dem = plt.get_cmap('gray') import pysar._pysar_utilities as ut hillshade_dem = ut.hillshade(dem, 50.0) if dispContour in ('only', 'Only', 'o', 'O', 'ONLY', 'yes', 'Yes', 'y', 'Y', 'YES'): #contour print 'plot contour' #if smoothContour in ('yes','Yes','y','Y','YES'): import scipy.ndimage as ndimage dem = ndimage.gaussian_filter(dem, sigma=contour_sigma, order=0) contour_sequence = np.arange(-6000, 9000, contour_step) except: print 'No DEM file' ################## Plot Loop #################### ifgramList = h5file[k[0]].keys() nfigs = figs_rows * figs_cols lifgram = len(ifgramList) print 'number of epochs/interferograms to display:' + str(lifgram) kk = int(lifgram / nfigs) + 1 ii = 0 # plot (1,end-1) figures for j in range(1, kk): fig = plt.figure(j) ii = (j - 1) * nfigs + 1 for i in range(ii, ii + nfigs): print 'loading ' + ifgramList[i - 1] ax = fig.add_subplot(figs_rows, figs_cols, i - ii + 1) # Data option if k[0] == 'timeseries': figTitle = ifgramList[i - 1] dset = h5file[k[0]].get(ifgramList[i - 1]) data = dset[0:dset.shape[0], 0:dset.shape[1]] if rewrapping in ('yes', 'Yes', 'Y', 'y', 'YES'): data = range2phase * data data = rewrap(data) elif k[0] in ('interferograms', 'coherence', 'wrapped'): figTitle = str(i) + ' : ' + h5file[k[0]][ifgramList[ i - 1]].attrs['DATE12'] dset = h5file[k[0]][ifgramList[i - 1]].get(ifgramList[i - 1]) data = dset[0:dset.shape[0], 0:dset.shape[1]] if rewrapping in ('yes', 'Yes', 'Y', 'y', 'YES'): data = np.angle(np.exp(1j * data)) data = data[win_y[0]:win_y[1], win_x[0]:win_x[1]] # Plot try: demFile if dispContour in ('no', 'No', 'n', 'N', 'NO', 'yes', 'Yes', 'y', 'Y', 'YES'): plt.imshow(hillshade_dem, cmap=cmap_dem) if dispContour in ('only', 'Only', 'o', 'O', 'ONLY', 'yes', 'Yes', 'y', 'Y', 'YES'): plt.contour(dem, contour_sequence, origin='lower', colors='black', alpha=0.5) except: pass try: ax.imshow(data, cmap=ccmap, vmin=min, vmax=max) except: ax.imshow(data, cmap=ccmap) ax.set_yticklabels([]) ax.set_xticklabels([]) ax.set_xticks([]) ax.set_yticks([]) if title == 'out': ax.set_title(figTitle, fontsize=font_size) elif title == 'in': add_inner_title(ax, figTitle, loc=1) fig.subplots_adjust(wspace=Wspace, hspace=Hspace) if saveFig in ('yes', 'Yes', 'Y', 'y', 'YES'): figName = figNameBase + '_' + str(j) + figNameExt plt.savefig(figName, dpi=fig_dpi) # plot the last figure fig = plt.figure(kk) ii = (kk - 1) * nfigs + 1 for i in range(ii, lifgram + 1): print 'loading ' + ifgramList[i - 1] ax = fig.add_subplot(figs_rows, figs_cols, i - ii + 1) # Data option if k[0] == 'timeseries': figTitle = ifgramList[i - 1] dset = h5file[k[0]].get(ifgramList[i - 1]) data = dset[0:dset.shape[0], 0:dset.shape[1]] if rewrapping in ('yes', 'Yes', 'Y', 'y', 'YES'): data = range2phase * data data = rewrap(data) elif k[0] in ('interferograms', 'coherence', 'wrapped'): figTitle = str(i) + ' : ' + h5file[k[0]][ifgramList[ i - 1]].attrs['DATE12'] dset = h5file[k[0]][ifgramList[i - 1]].get(ifgramList[i - 1]) data = dset[0:dset.shape[0], 0:dset.shape[1]] if rewrapping in ('yes', 'Yes', 'Y', 'y', 'YES'): data = np.angle(np.exp(1j * data)) data = data[win_y[0]:win_y[1], win_x[0]:win_x[1]] # Plot try: demFile if dispContour in ('no', 'No', 'n', 'N', 'NO', 'yes', 'Yes', 'y', 'Y', 'YES'): plt.imshow(hillshade_dem, cmap=cmap_dem) if dispContour in ('only', 'Only', 'o', 'O', 'ONLY', 'yes', 'Yes', 'y', 'Y', 'YES'): plt.contour(dem, contour_sequence, origin='lower', colors='black', alpha=0.5) except: pass try: ax.imshow(data, cmap=ccmap, vmin=min, vmax=max) except: ax.imshow(data, cmap=ccmap) ax.xaxis.label.set_fontsize(20) ax.set_yticklabels([]) ax.set_xticklabels([]) ax.set_xticks([]) ax.set_yticks([]) if title == 'out': ax.set_title(figTitle, fontsize=font_size) elif title == 'in': add_inner_title(ax, figTitle, loc=1) fig.subplots_adjust(wspace=Wspace, hspace=Hspace) if saveFig in ('yes', 'Yes', 'Y', 'y', 'YES'): figName = figNameBase + '_' + str(kk) + figNameExt plt.savefig(figName, dpi=fig_dpi) print 'Saved figure to ' + figNameBase + '_*' + figNameExt if dispFig in ('yes', 'Yes', 'Y', 'y', 'YES'): plt.show() #################################################################### #################################################################### try: h5file.close() except: pass