(datetime_wanted,filename,driftnumber,url,model_option,num,interval_dtime,interval,step_size)=getcodar_ctl_file(inputfilename) id3=int(driftnumber) #change format (maxlon,minlon,maxlat,minlat)=getdrift_raw_range_latlon(filename,id3,interval,datetime_wanted,num,step_size) for i in range(5): if maxlat-minlat<=0.1: maxlat=maxlat+0.01 minlat=minlat-0.01 if maxlon-minlon<=0.1: maxlon=maxlon+0.01 minlon=minlon-0.01 gbox=[minlon-0.03,maxlon+0.03, minlat-0.03, maxlat+0.03] # get the edge of the picture for x in range(num): (lat,lon,time1)=getdrift_raw(filename,id3,interval,datetime_wanted) fig = plt.figure() ax = fig.add_subplot(111) plt.title(str(num2date(datetime_wanted).strftime("%d-%b-%Y %H"))+'h') lat_wanted=lat[-1] lon_wanted=lon[-1] plt.plot(lon_wanted,lat_wanted,'.',markersize=30,color='r',label='end') #plt.plot(np.reshape(lon,np.size(lon)),np.reshape(lat,np.size(lat))) plt.plot(np.reshape(lon,np.size(lon)),np.reshape(lat,np.size(lat)),color='black') #basemap_usgs([minlat-1,maxlat+1],[minlon-1,maxlon+1],'True') plt.plot(lon[0],lat[0],'.',markersize=20,color='g',label='start') # start time pylab.ylim([minlat-0.02,maxlat+0.02]) pylab.xlim([minlon-0.02,maxlon+0.02]) ax.patch.set_facecolor('lightblue')
from hx import getcodar_ctl_file, getdrift_raw_range_latlon, getcodar_ctl_id from hx import getdrift_raw, getcodar, gettrack_codar #### input ######################################################### inputfilename = './getcodar_bydrifter_ctl.txt' (datetime_wanted, filename, driftnumber, url, model_option, num, interval_dtime, interval, step_size) = getcodar_ctl_file(inputfilename) startdate = datetime_wanted id3 = int(driftnumber) #change format datetime_wanted_1 = datetime_wanted (maxlon, minlon, maxlat, minlat) = getdrift_raw_range_latlon(filename, id3, interval, datetime_wanted_1, num, step_size) id = getcodar_ctl_id(model_option, url, startdate) (lat, lon, time) = getdrift_raw(filename, id3, interval, datetime_wanted) #drifter lat lon time la = lat[0] lo = lon[0] lat_k, lon_k = [la], [lo] uu, vv = [0], [0] for q in range(interval): lat_vel, lon_vel, u, v = getcodar(url, id) lon_vel_list = lon_vel[0] lat_vel_list = [] for g in range(len(lat_vel)): lat_vel_list.append(lat_vel[g][0]) lat_k1, lon_k1, time1, uu, vv = gettrack_codar(lon_vel_list, lat_vel_list, u, v, startdate, interval, la, lo, uu, vv, q) la = lat_k1
(maxlon,minlon,maxlat,minlat)=getdrift_raw_range_latlon(filename,id3,interval,datetime_wanted_1,num,step_size) for i in range(5): #make sure the picture can show lat and lon clearly if maxlat-minlat<=0.1: maxlat=maxlat+0.01 minlat=minlat-0.01 if maxlon-minlon<=0.1: maxlon=maxlon+0.01 minlon=minlon-0.01 (lat_max_i,lon_max_i,lat_min_i,lon_min_i)=getcodar_ctl_lalo(model_option,maxlat,maxlon,minlat,minlon)# get index of max min lat lon gbox=[minlon-0.03,maxlon+0.03, minlat-0.03, maxlat+0.03] # get edge for get sst for x in range(num): id=getcodar_ctl_id(model_option,url,datetime_wanted) #get index of codar ask_input=num2date(datetime_wanted) #get time for getsst (drifter_data)=getdrift_raw(filename,id3,interval,datetime_wanted) #get drifter data lat=drifter_data['lat'] lon=drifter_data['lon'] (lat_vel,lon_vel,u,v)=getcodar_edge(url,id,lat_max_i,lon_max_i,lat_min_i,lon_min_i) #get codar data id=str(id) idg1=list(ml.find(np.array(u)<>-999.0/100.)) idg2=list(ml.find(np.array(lat_vel)>=minlat)) idg12=list(set(idg1).intersection(set(idg2))) idg3=list(ml.find(np.array(lon_vel)>=minlon)) idg=list(set(idg12).intersection(set(idg3))) #get index for codar data based on edge and id(time) png_num=png_num+1 #for save movie picture if len(idg)<>0: fig = plt.figure()
minlat = minlat - 0.01 if maxlon - minlon <= 0.1: maxlon = maxlon + 0.01 minlon = minlon - 0.01 (lat_max_i, lon_max_i, lat_min_i, lon_min_i) = getcodar_ctl_lalo(model_option, maxlat, maxlon, minlat, minlon) # get index of max min lat lon gbox = [minlon - 0.03, maxlon + 0.03, minlat - 0.03, maxlat + 0.03] # get edge for get sst for x in range(num): id = getcodar_ctl_id(model_option, url, datetime_wanted) #get index of codar ask_input = num2date(datetime_wanted) #get time for getsst (lat, lon, time1) = getdrift_raw(filename, id3, interval, datetime_wanted) #get drifter data (lat_vel, lon_vel, u, v) = getcodar_edge(url, id, lat_max_i, lon_max_i, lat_min_i, lon_min_i) #get codar data id = str(id) idg1 = list(ml.find(np.array(u) <> -999.0 / 100.)) idg2 = list(ml.find(np.array(lat_vel) >= minlat)) idg12 = list(set(idg1).intersection(set(idg2))) idg3 = list(ml.find(np.array(lon_vel) >= minlon)) idg = list(set(idg12).intersection( set(idg3))) #get index for codar data based on edge and id(time) png_num = png_num + 1 #for save movie picture if len(idg) <> 0:
utc = pytz.timezone('UTC') png_num = 0 #for save picture #option=raw_input("If you have a file of column lat and lon,please input '1'\nIf you want to input points' location, please input '2'\n" #"If you want to use the control file,please input '3'\n") if option == '3': inputfilename = 'getcodar_bydrifter_ctl.txt' #default control file (datetime_wanted, filename, driftnumber, url, model_option, num, interval_dtime, interval, step_size) = getcodar_ctl_file(inputfilename) if drifter == 'raw': maxlon, minlon, maxlat, minlat, lat, lon = range_latlon( filename, driftnumber) else: drifter_data = getdrift_raw( filename, driftnumber, interval, datetime_wanted) #uses pydap to get remote drifter data lon = drifter_data['lon'] lat = drifter_data['lat'] maxlon = max(lon) minlon = min(lon) maxlat = max(lat) minlat = min(lat) if option == '2': datetime_wanted = date2num( dt.datetime.strptime( raw_input( "please input datetime you wanted, the format like: 2012,8,26,0,0\n" ), '%Y,%m,%d,%H,%M')) lat_list = raw_input( "Please input points SW & NE latitude in order,and split them by ',':")
#sys.path.append(pydir) from hx import getcodar_ctl_file,getdrift_raw_range_latlon,getcodar_ctl_id from hx import getdrift_raw,getcodar,gettrack_codar #### input ######################################################### inputfilename='getcodar_bydrifter_ctl.txt' (datetime_wanted,filename,driftnumber,url,model_option,num,interval_dtime,interval,step_size)=getcodar_ctl_file(inputfilename) startdate=datetime_wanted id3=int(driftnumber) #change format datetime_wanted_1=datetime_wanted (maxlon,minlon,maxlat,minlat)=getdrift_raw_range_latlon(filename,id3,interval,datetime_wanted_1,num,step_size) id=getcodar_ctl_id(model_option,url,startdate) (lat,lon,time)=getdrift_raw(filename,id3,interval,datetime_wanted) #drifter lat lon time la=lat[0] lo=lon[0] lat_k,lon_k=[la],[lo] uu,vv=[0],[0] for q in range(interval): lat_vel,lon_vel,u,v=getcodar(url,id) lon_vel_list=lon_vel[0] lat_vel_list=[] for g in range(len(lat_vel)): lat_vel_list.append(lat_vel[g][0]) lat_k1,lon_k1,time1,uu,vv=gettrack_codar(lon_vel_list,lat_vel_list,u,v,startdate,interval,la,lo,uu,vv,q) la=lat_k1 lo=lon_k1 lat_k.append(lat_k1)
minlon=min(lon1) maxlat=max(lat1) minlat=min(lat1) return maxlon,minlon,maxlat,minlat,lat1,lon1 utc = pytz.timezone('UTC') png_num=0 #for save picture #option=raw_input("If you have a file of column lat and lon,please input '1'\nIf you want to input points' location, please input '2'\n" #"If you want to use the control file,please input '3'\n") if option=='3': inputfilename='getcodar_bydrifter_ctl.txt' #default control file (datetime_wanted,filename,driftnumber,url,model_option,num,interval_dtime,interval,step_size)=getcodar_ctl_file(inputfilename) if drifter=='raw': maxlon,minlon,maxlat,minlat,lat,lon=range_latlon(filename,driftnumber) else: drifter_data=getdrift_raw(filename,driftnumber,interval,datetime_wanted) #uses pydap to get remote drifter data lon=drifter_data['lon'] lat=drifter_data['lat'] maxlon=max(lon) minlon=min(lon) maxlat=max(lat) minlat=min(lat) if option=='2': datetime_wanted=date2num(dt.datetime.strptime(raw_input("please input datetime you wanted, the format like: 2012,8,26,0,0\n"),'%Y,%m,%d,%H,%M')) lat_list=raw_input("Please input points SW & NE latitude in order,and split them by ',':") lon_list=raw_input("Please input points lon in order,and split them by ',':") lat1=lat_list[0:].split(',') lon1=lon_list[0:].split(',') lat,lon=[],[] for q in range(len(lon1)): lat.append(float(lat1[q]))