def bperp_btemp_master_slave(drsFiles=None): from dateutil import parser mresfiles = [] sresfiles = [] iresfiles = [] for f in drsFiles: d = adore.drs2dict(f) mresfiles.append(d['general']['m_resfile'].strip()) sresfiles.append(d['general']['s_resfile'].strip()) iresfiles.append(d['general']['i_resfile'].strip()) bperp = [] btemp = [] master = [] slave = [] for f in N.r_[0:len(mresfiles)]: mobj = adore.dict2obj(adore.res2dict(mresfiles[f])) sobj = adore.dict2obj(adore.res2dict(sresfiles[f])) ires = adore.res2dict(iresfiles[f]) iobj = adore.dict2obj(ires) master.append(parser.parse(mobj.readfiles.First_pixel_azimuth_time)) slave.append(parser.parse(sobj.readfiles.First_pixel_azimuth_time)) bperp.append(iobj.coarse_orbits.Bperp) btemp.append(iobj.coarse_orbits.Btemp) return bperp, btemp, master, slave
def bperp_btemp_master_slave(drsFiles=None): from dateutil import parser mresfiles=[] sresfiles=[] iresfiles=[] for f in drsFiles: d=adore.drs2dict(f); mresfiles.append(d['general']['m_resfile'].strip()); sresfiles.append(d['general']['s_resfile'].strip()); iresfiles.append(d['general']['i_resfile'].strip()); bperp=[] btemp=[] master=[] slave=[] for f in N.r_[0:len(mresfiles)]: mobj=adore.dict2obj(adore.res2dict(mresfiles[f])) sobj=adore.dict2obj(adore.res2dict(sresfiles[f])) ires=adore.res2dict(iresfiles[f]) iobj=adore.dict2obj(ires) master.append( parser.parse(mobj.readfiles.First_pixel_azimuth_time) ) slave.append( parser.parse(sobj.readfiles.First_pixel_azimuth_time) ) bperp.append( iobj.coarse_orbits.Bperp ) btemp.append( iobj.coarse_orbits.Btemp ) return bperp, btemp, master, slave
def main(argv=None): if argv is None: argv = sys.argv drsfile = argv[1] try: ct = float(argv[2]) except: ct = 0.0 if drsfile is not None: d = adore.drs2dict(drsfile) mresfile = d['general']['m_resfile'].strip() sresfile = d['general']['s_resfile'].strip() iresfile = d['general']['i_resfile'].strip() iobj = adore.dict2obj(adore.res2dict(iresfile)) mobj = adore.dict2obj(adore.res2dict(mresfile)) sobj = adore.dict2obj(adore.res2dict(sresfile)) A = iobj.fine_coreg.results #ires['fine_coreg']['results']; A = A[A[:, 5] > ct, :] #figure pylab.figure() pylab.title('Range: Fine Correlation - Coregistration Polynomial') rg = adore.basic.rescale( A[:, 2], [-2, 2], arrlim=[mobj.crop.First_pixel, mobj.crop.Last_pixel]) az = adore.basic.rescale( A[:, 1], [-2, 2], arrlim=[mobj.crop.First_line, mobj.crop.Last_line]) pixelOffset = adore.polyval(rg, az, iobj.comp_coregpm.Estimated_coefficientsP) lineOffset = adore.polyval(rg, az, iobj.comp_coregpm.Estimated_coefficientsL) Q = pylab.quiver(A[:, 2], A[:, 1], A[:, 4] - pixelOffset, A[:, 3] - lineOffset, A[:, 5]) azStd = round(pylab.np.std(A[:, 3] - lineOffset)) rgStd = round(pylab.np.std(A[:, 4] - pixelOffset)) qk = pylab.quiverkey(Q, 0.33, 0.92, azStd, ('%d [px az]' % (azStd)), labelpos='W', fontproperties={'weight': 'bold'}) qk = pylab.quiverkey(Q, 0.66, 0.92, rgStd, ('%d [px rg]' % (rgStd)), labelpos='W', fontproperties={'weight': 'bold'}) pylab.colorbar() pylab.show()
def main(argv=None): if argv is None: argv = sys.argv iresfile = argv[1] try: ct = float(argv[2]) except: ct = 0.0 ires = adore.res2dict(iresfile) A = ires['fine_coreg']['results'] A = A[A[:, 5] > ct, :] az = int(ires['fine_coreg']['Initial offsets'].split(',')[0]) rg = int(ires['fine_coreg']['Initial offsets'].split(',')[1]) #figure1 pylab.figure() pylab.title('Fine Correlation Results') pylab.quiver(A[:, 2], A[:, 1], A[:, 4], A[:, 3], A[:, 5]) pylab.colorbar() #figure2 pylab.figure() pylab.title('Fine Correlation Deviations') pylab.quiver(A[:, 2], A[:, 1], A[:, 4] - rg, A[:, 3] - az, A[:, 5]) pylab.colorbar() pylab.show()
def main(argv=None): if argv is None: argv=sys.argv iresfile=argv[1]; try: ct=float(argv[2]); except: ct=0.0 ires=adore.res2dict(iresfile); A=ires['fine_coreg']['results']; A=A[A[:,5]>ct,:] az=int(ires['fine_coreg']['Initial offsets'].split(',')[0]); rg=int(ires['fine_coreg']['Initial offsets'].split(',')[1]); #figure1 pylab.figure() pylab.title('Fine Correlation Results') pylab.quiver(A[:,2], A[:,1], A[:,4], A[:,3], A[:,5]); pylab.colorbar() #figure2 pylab.figure() pylab.title('Fine Correlation Deviations') pylab.quiver(A[:,2], A[:,1], A[:,4]-rg, A[:,3]-az, A[:,5]); pylab.colorbar() pylab.show()
def main(argv=None): if argv is None: argv = sys.argv iresfile = argv[1] try: ct = float(argv[2]) except: ct = 0.0 ires = adore.res2dict(iresfile) A = ires['fine_coreg']['results'] A = A[A[:, 5] > ct, :] az = int(ires['fine_coreg']['Initial offsets'].split(',')[0]) rg = int(ires['fine_coreg']['Initial offsets'].split(',')[1]) #figure1 pylab.figure() pylab.title('Fine Correlation Results') Q = pylab.quiver(A[:, 2], A[:, 1], A[:, 4], A[:, 3], A[:, 5]) azAvg = round(pylab.np.mean(A[:, 3])) rgAvg = round(pylab.np.mean(A[:, 4])) qk = pylab.quiverkey(Q, 0.33, 0.92, azAvg, ('%d [px az]' % (azAvg)), labelpos='W', fontproperties={'weight': 'bold'}) qk = pylab.quiverkey(Q, 0.66, 0.92, rgAvg, ('%d [px rg]' % (rgAvg)), labelpos='W', fontproperties={'weight': 'bold'}) pylab.colorbar() #figure2 pylab.figure() pylab.title('Fine Correlation Deviations') pylab.quiver(A[:, 2], A[:, 1], A[:, 4] - rg, A[:, 3] - az, A[:, 5]) Q = pylab.quiver(A[:, 2], A[:, 1], A[:, 4] - rg, A[:, 3] - az, A[:, 5]) azStd = round(pylab.np.std(A[:, 3] - az)) rgStd = round(pylab.np.std(A[:, 4] - rg)) qk = pylab.quiverkey(Q, 0.33, 0.92, azStd, ('%d [px az]' % (azStd)), labelpos='W', fontproperties={'weight': 'bold'}) qk = pylab.quiverkey(Q, 0.66, 0.92, rgStd, ('%d [px rg]' % (rgStd)), labelpos='W', fontproperties={'weight': 'bold'}) pylab.colorbar() pylab.show()
def bperp_btemp(drsFiles): from dateutil import parser mresfiles = [] sresfiles = [] iresfiles = [] for f in drsFiles: d = adore.drs2dict(f) mresfiles.append(d['general']['m_resfile'].strip()) sresfiles.append(d['general']['s_resfile'].strip()) iresfiles.append(d['general']['i_resfile'].strip()) bperp = [] btemp = [] for f in N.r_[0:len(mresfiles)]: mobj = adore.dict2obj(adore.res2dict(mresfiles[f])) sobj = adore.dict2obj(adore.res2dict(sresfiles[f])) ires = adore.res2dict(iresfiles[f]) iobj = adore.dict2obj(ires) bperp.append(iobj.coarse_orbits.Bperp) btemp.append(iobj.coarse_orbits.Btemp) return bperp, btemp
def bperp_btemp(drsFiles): from dateutil import parser mresfiles=[] sresfiles=[] iresfiles=[] for f in drsFiles: d=adore.drs2dict(f); mresfiles.append(d['general']['m_resfile'].strip()); sresfiles.append(d['general']['s_resfile'].strip()); iresfiles.append(d['general']['i_resfile'].strip()); bperp=[] btemp=[] for f in N.r_[0:len(mresfiles)]: mobj=adore.dict2obj(adore.res2dict(mresfiles[f])) sobj=adore.dict2obj(adore.res2dict(sresfiles[f])) ires=adore.res2dict(iresfiles[f]) iobj=adore.dict2obj(ires) bperp.append( iobj.coarse_orbits.Bperp ) btemp.append( iobj.coarse_orbits.Btemp ) return bperp, btemp
def main(argv=None): if argv is None: argv = sys.argv iresfile = argv[1] ires = adore.res2dict(iresfile) A = ires['coarse_correl']['results'] az = ires['coarse_correl']['Coarse_correlation_translation_lines'] rg = ires['coarse_correl']['Coarse_correlation_translation_pixels'] #figure1 pylab.figure() pylab.title('Coarse Correlation Results') Q = pylab.quiver(A[:, 2], A[:, 1], A[:, 5], A[:, 4], A[:, 3]) azAvg = round(pylab.np.mean(A[:, 3])) rgAvg = round(pylab.np.mean(A[:, 4])) qk = pylab.quiverkey(Q, 0.33, 0.92, azAvg, ('%d [px az]' % (azAvg)), labelpos='W', fontproperties={'weight': 'bold'}) qk = pylab.quiverkey(Q, 0.66, 0.92, rgAvg, ('%d [px rg]' % (rgAvg)), labelpos='W', fontproperties={'weight': 'bold'}) pylab.colorbar() #figure2 pylab.figure() pylab.title('Coarse Correlation Deviations') Q = pylab.quiver(A[:, 2], A[:, 1], A[:, 5] - rg, A[:, 4] - az, A[:, 3]) azStd = round(pylab.np.std(A[:, 3] - az)) rgStd = round(pylab.np.std(A[:, 4] - rg)) qk = pylab.quiverkey(Q, 0.33, 0.92, azStd, ('%d [px az]' % (azStd)), labelpos='W', fontproperties={'weight': 'bold'}) qk = pylab.quiverkey(Q, 0.66, 0.92, rgStd, ('%d [px rg]' % (rgStd)), labelpos='W', fontproperties={'weight': 'bold'}) pylab.colorbar() pylab.show()
def average_coherence_adore(iresfiles=None, drsFiles=None): """ avg_coherence=average_coherence_adore(iresfiles=None, drsFiles=None): """ from dateutil import parser if drsFiles is not None: iresfiles = [] for f in drsFiles: d = adore.drs2dict(f) iresfiles.append(d['general']['i_resfile'].strip()) coh = [] for f in N.r_[0:len(iresfiles)]: ires = adore.res2dict(iresfiles[f]) iobj = adore.dict2obj(ires) coh.append(adore.getProduct(ires, 'coherence')) coh = N.rollaxis(N.dstack(coh), 2, 0) return coh.mean(0)
def average_coherence_adore(iresfiles=None, drsFiles=None): """ avg_coherence=average_coherence_adore(iresfiles=None, drsFiles=None): """ from dateutil import parser if drsFiles is not None: iresfiles=[] for f in drsFiles: d=adore.drs2dict(f); iresfiles.append(d['general']['i_resfile'].strip()); coh=[] for f in N.r_[0:len(iresfiles)]: ires=adore.res2dict(iresfiles[f]) iobj=adore.dict2obj(ires) coh.append( adore.getProduct(ires,'coherence') ); coh=N.rollaxis(N.dstack(coh),2,0) return coh.mean(0);
def main(argv=None): if argv is None: argv = sys.argv iresfile = argv[1] ires = adore.res2dict(iresfile) A = ires['coarse_correl']['results'] az = ires['coarse_correl']['Coarse_correlation_translation_lines'] rg = ires['coarse_correl']['Coarse_correlation_translation_pixels'] #figure1 pylab.figure() pylab.title('Coarse Correlation Results') pylab.quiver(A[:, 2], A[:, 1], A[:, 5], A[:, 4], A[:, 3]) pylab.colorbar() #figure2 pylab.figure() pylab.title('Coarse Correlation Deviations') pylab.quiver(A[:, 2], A[:, 1], A[:, 5] - rg, A[:, 4] - az, A[:, 3]) pylab.colorbar() pylab.show()
def main(argv=None): if argv is None: argv=sys.argv iresfile=argv[1]; ires=adore.res2dict(iresfile); A=ires['coarse_correl']['results']; az=ires['coarse_correl']['Coarse_correlation_translation_lines']; rg=ires['coarse_correl']['Coarse_correlation_translation_pixels']; #figure1 pylab.figure() pylab.title('Coarse Correlation Results') pylab.quiver(A[:,2], A[:,1], A[:,5], A[:,4], A[:,3]); pylab.colorbar() #figure2 pylab.figure() pylab.title('Coarse Correlation Deviations') pylab.quiver(A[:,2], A[:,1], A[:,5]-rg, A[:,4]-az, A[:,3]); pylab.colorbar() pylab.show()
def estimate_overlap(baselinesFolder, buffers=[200, 200], masterRes=None): """estimate_overlap(baselinesFolder, buffers[az_buf, rg_buf]) az_buf=200 rg_buf=200 ex: baselinesFolder=setobj.adore.baselinesfolder.strip('"') estimate_overlap(baselinesFolder, [400,400]) """ import glob if masterRes is not None: mobj = adore.dict2obj(adore.res2dict(masterRes)) ifiles = glob.glob(baselinesFolder + '/*_*.res') i12s = [] #interferogram objects list master = [] #master names list slave = [] #slave names list lines = [] #list of translation lines (az) pixels = [] #list of translation pixels (rg) for f in ifiles: d = adore.res2dict(f) #dictionary #i12s.append(adore.dict2obj(d)) iobj = adore.dict2obj(d) master.append(os.path.splitext(os.path.basename(f))[0].split('_')[0]) slave.append(os.path.splitext(os.path.basename(f))[0].split('_')[1]) lines.append(iobj.coarse_orbits.Coarse_orbits_translation_lines) pixels.append(iobj.coarse_orbits.Coarse_orbits_translation_pixels) K = len(ifiles) #number of interferograms allDates = master + slave #merge master and slave lists allDates = N.sort(list(set(allDates))) I = len(allDates) #Number of images (dates) A = N.zeros([K + 1, I]) if masterRes is None: masterScene = 0 else: masterScene = os.path.splitext(os.path.basename(masterRes))[0] masterScene = (allDates == masterScene) for k in xrange(K): A[k, :] = (allDates == master[k]) * -1 + (allDates == slave[k]) * 1 A[-1, masterScene] = 1 l = N.dot(N.linalg.pinv(A), lines + [0]) #merge zero to the end of list p = N.dot(N.linalg.pinv(A), pixels + [0]) #merge zero to the end of list neg_line_off = min(l[l < 0]) #negative line offset pos_line_off = max(l[l > 0]) #positive line offset neg_pix_off = min(p[p < 0]) #negative px offset pos_pix_off = max(p[p > 0]) #positive px offset if masterRes is not None: return -1 # if lo > 0: # lmin=0 # if mobj.process_control.oversample == 1: # lmax=mobj.oversample.Last_line-lo/mobj.oversample.Multilookfactor_azimuth_direction # else: # lmax=mobj.crop.Last_line-lo # else: # if mobj.process_control.oversample == 1: # lmin=mobj.oversample.First_line-l0/mobj.oversample.Multilookfactor_azimuth_direction # lmax=mobj.oversample.Last_line # else: # lmin=mobj.crop.First_line-l0 # lmax=mobj.crop.Last_line # if po > 0: # pmin=0 # if mobj.process_control.oversample == 1: # pmax=mobj.oversample.Last_pixel-po/mobj.oversample.Multilookfactor_range_direction # else: # pmax=mobj.crop.Last_line-po # else: # if mobj.process_control.oversample == 1: # pmin=mobj.oversample.First_pixel-p0/mobj.oversample.Multilookfactor_range_direction # pmax=mobj.oversample.Last_pixel # else: # lmin=mobj.crop.First_pixel-p0 # lmax=mobj.crop.Last_pixel # return [mobj.crop.First_line+lo, po] else: return [neg_line_off, pos_line_off, neg_pix_off, pos_pix_off]
def estimate_overlap(baselinesFolder,buffers=[200,200], masterRes=None): """estimate_overlap(baselinesFolder, buffers[az_buf, rg_buf]) az_buf=200 rg_buf=200 ex: baselinesFolder=setobj.adore.baselinesfolder.strip('"') estimate_overlap(baselinesFolder, [400,400]) """ import glob if masterRes is not None: mobj=adore.dict2obj(adore.res2dict( masterRes )) ifiles=glob.glob(baselinesFolder+'/*_*.res') i12s=[] #interferogram objects list master=[] #master names list slave=[] #slave names list lines=[] #list of translation lines (az) pixels=[] #list of translation pixels (rg) for f in ifiles: d=adore.res2dict(f) #dictionary #i12s.append(adore.dict2obj(d)) iobj=adore.dict2obj(d) master.append(os.path.splitext(os.path.basename(f))[0].split('_')[0]) slave.append(os.path.splitext(os.path.basename(f))[0].split('_')[1]) lines.append(iobj.coarse_orbits.Coarse_orbits_translation_lines) pixels.append(iobj.coarse_orbits.Coarse_orbits_translation_pixels) K=len(ifiles) #number of interferograms allDates=master + slave #merge master and slave lists allDates=N.sort(list(set(allDates))); I=len(allDates); #Number of images (dates) A=N.zeros([K+1,I]); if masterRes is None: masterScene=0 else: masterScene=os.path.splitext(os.path.basename(masterRes))[0] masterScene=(allDates==masterScene) for k in xrange(K): A[k,:]=(allDates==master[k])*-1+(allDates==slave[k])*1; A[-1,masterScene]=1 l=N.dot(N.linalg.pinv(A),lines+[0]) #merge zero to the end of list p=N.dot(N.linalg.pinv(A),pixels+[0]) #merge zero to the end of list neg_line_off=min(l[l<0]) #negative line offset pos_line_off=max(l[l>0]) #positive line offset neg_pix_off=min(p[p<0]) #negative px offset pos_pix_off=max(p[p>0]) #positive px offset if masterRes is not None: return -1 # if lo > 0: # lmin=0 # if mobj.process_control.oversample == 1: # lmax=mobj.oversample.Last_line-lo/mobj.oversample.Multilookfactor_azimuth_direction # else: # lmax=mobj.crop.Last_line-lo # else: # if mobj.process_control.oversample == 1: # lmin=mobj.oversample.First_line-l0/mobj.oversample.Multilookfactor_azimuth_direction # lmax=mobj.oversample.Last_line # else: # lmin=mobj.crop.First_line-l0 # lmax=mobj.crop.Last_line # if po > 0: # pmin=0 # if mobj.process_control.oversample == 1: # pmax=mobj.oversample.Last_pixel-po/mobj.oversample.Multilookfactor_range_direction # else: # pmax=mobj.crop.Last_line-po # else: # if mobj.process_control.oversample == 1: # pmin=mobj.oversample.First_pixel-p0/mobj.oversample.Multilookfactor_range_direction # pmax=mobj.oversample.Last_pixel # else: # lmin=mobj.crop.First_pixel-p0 # lmax=mobj.crop.Last_pixel # return [mobj.crop.First_line+lo, po] else: return [neg_line_off, pos_line_off, neg_pix_off, pos_pix_off]
def main(argv=None): A = adore.Object() if argv is None: argv = sys.argv iresfile = argv[1] try: mode = argv[2] product = argv[3] except: product = 'geocoding' mode = 'p' ires = adore.res2dict(iresfile) iobj = adore.dict2obj(ires) lat = adore.getProduct(iobj.geocoding, filename=iobj.geocoding.Data_output_file_lamda) lon = adore.getProduct(iobj.geocoding, filename=iobj.geocoding.Data_output_file_phi) if product == 'geocoding': hei = adore.getProduct(iobj.geocoding, filename=iobj.geocoding.Data_output_file_hei) else: #check if includes colon: if ":" in product: filename = product.split(':')[1] product = product.split(':')[0] else: filename = None #hei is actually any data at this point... hei = adore.getProduct(ires, product, filename=filename) #d0 is longitude, d1 is latitude d0, d1 = numpy.meshgrid(numpy.linspace(lat.min(), lat.max(), lon.shape[1]), numpy.linspace(lon.min(), lon.max(), lon.shape[0])) if lat[0, 0] > 0: #northern hemisphere if d1[0, 0] < d1[-1, 0]: d1 = numpy.flipud(d1) hei_gridded = interpolate.griddata((lon.ravel(), lat.ravel()), hei.ravel(), (d1, d0), method='linear') #set-up basemap print('Please wait... Generating map\n') m = Basemap(llcrnrlon=d0.min(), llcrnrlat=d1.min(), urcrnrlon=d0.max(), urcrnrlat=d1.max(), resolution='f', area_thresh=1., projection='cyl') if 'complex' in ires[product][ 'Data_output_format']: #any(numpy.iscomplex(hei_gridded)): if mode == 'p': m.imshow(numpy.angle(hei_gridded), interpolation='nearest', origin='upper') else: m.imshow(10 * numpy.log10(abs(hei_gridded)), interpolation='nearest', origin='upper') pl.gray() else: m.imshow(hei_gridded, interpolation='nearest', origin='upper') m.drawcoastlines(color='w', linewidth=0.8) m.drawmapboundary() # draw a line around the map region m.drawrivers() m.drawparallels(numpy.arange(int(d1.min()), int(d1.max()), 1), linewidth=0.2, labels=[1, 0, 0, 0]) m.drawmeridians(numpy.arange(int(d0.min()), int(d0.max()), 1), linewidth=0.2, labels=[0, 0, 0, 1]) #MAYAVI TAKES TOO LONG # #visualize points # pts =mlab.points3d(lon.ravel(), lat.ravel(), hei.ravel(), hei.ravel(), scale_mode='none', scale_factor=0.2) # #create the mesh # mesh=mlab.pipeline.delaunay2d(pts) # #visualize the mesh # surf=mlab.pipeline.surf(mesh) # # mlab.show() #do not quit the program until enter print "Press ENTER to quit." pl.ginput(n=10000, timeout=0, mouse_add=3, mouse_pop=1)
def main(argv=None): A=adore.Object() if argv is None: argv=sys.argv iresfile=argv[1]; try: mode=argv[2]; product=argv[3]; except: product='geocoding' mode='p'; ires=adore.res2dict(iresfile); iobj=adore.dict2obj(ires); lat=adore.getProduct(iobj.geocoding, filename=iobj.geocoding.Data_output_file_lamda) lon=adore.getProduct(iobj.geocoding, filename=iobj.geocoding.Data_output_file_phi) if product=='geocoding': hei=adore.getProduct(iobj.geocoding, filename=iobj.geocoding.Data_output_file_hei) else: #check if includes colon: if ":" in product: filename=product.split(':')[1] product=product.split(':')[0] else: filename=None #hei is actually any data at this point... hei=adore.getProduct(ires, product, filename=filename) #d0 is longitude, d1 is latitude d0,d1=numpy.meshgrid(numpy.linspace(lat.min(),lat.max(), lon.shape[1]), numpy.linspace(lon.min(), lon.max(), lon.shape[0])) if lat[0,0] > 0: #northern hemisphere if d1[0,0]<d1[-1,0]: d1=numpy.flipud(d1) hei_gridded = interpolate.griddata((lon.ravel(),lat.ravel()), hei.ravel(), (d1, d0), method='linear') #set-up basemap print ('Please wait... Generating map\n') m = Basemap(llcrnrlon=d0.min(), llcrnrlat=d1.min(), urcrnrlon=d0.max(), urcrnrlat=d1.max(), resolution='f', area_thresh=1., projection='cyl') if 'complex' in ires[product]['Data_output_format']:#any(numpy.iscomplex(hei_gridded)): if mode=='p': m.imshow(numpy.angle(hei_gridded), interpolation='nearest', origin='upper') else: m.imshow(10*numpy.log10(abs(hei_gridded)), interpolation='nearest', origin='upper') pl.gray(); else: m.imshow(hei_gridded, interpolation='nearest', origin='upper') m.drawcoastlines(color='w',linewidth=0.8) m.drawmapboundary() # draw a line around the map region m.drawrivers() m.drawparallels(numpy.arange(int(d1.min()), int(d1.max()), 1),linewidth=0.2,labels=[1,0,0,0]) m.drawmeridians(numpy.arange(int(d0.min()), int(d0.max()), 1),linewidth=0.2,labels=[0,0,0,1]) #MAYAVI TAKES TOO LONG # #visualize points # pts =mlab.points3d(lon.ravel(), lat.ravel(), hei.ravel(), hei.ravel(), scale_mode='none', scale_factor=0.2) # #create the mesh # mesh=mlab.pipeline.delaunay2d(pts) # #visualize the mesh # surf=mlab.pipeline.surf(mesh) # # mlab.show() #do not quit the program until enter print "Press ENTER to quit." pl.ginput(n=10000, timeout=0, mouse_add=3, mouse_pop=1)