##// END OF EJS Templates
last_update primeras correciones rhi
avaldezp -
r1418:2ccc6450afd4
parent child
Show More
@@ -0,0 +1,64
1 import numpy as np
2 import matplotlib.pyplot as pl
3 import warnings
4 #export WRADLIB_DATA=/path/to/wradlib-data
5 warnings.filterwarnings('ignore')
6
7 from wradlib.io import read_generic_netcdf
8 from wradlib.util import get_wradlib_data_file
9 import os
10
11
12
13 # A little helper function for repeated tasks
14 def read_and_overview(filename):
15 """Read NetCDF using read_generic_netcdf and print upper level dictionary keys
16 """
17 test = read_generic_netcdf(filename)
18 print("\nPrint keys for file %s" % os.path.basename(filename))
19 for key in test.keys():
20 print("\t%s" % key)
21 return test
22
23
24 filename = '/home/soporte/Downloads/PX1000/PX-20180220-174014-E0.0-Z.nc'
25 filename = get_wradlib_data_file(filename)
26 test= read_and_overview(filename)
27 print("Height",test['Height'])
28 print("Azimuth",test['Azimuth'])
29 print("Elevation",test['Elevation'])
30 print("CalibH-value",test['CalibH-value'])
31 print("attributes",test['attributes'])
32 print("-------------------------------------------------------------------------------------")
33 for key in test.keys():
34 print(key,test[str(key)])
35
36 '''
37 try:
38 get_ipython().magic('matplotlib inline')
39 except:
40 pl.ion()
41 img, meta = wradlib.io.read_dx(filename)
42 print("Shape of polar array: %r\n" % (img.shape,))
43 print("Some meta data of the DX file:")
44 #print("\tdatetime: %r" % (meta["datetime"],))
45 #print("\tRadar ID: %s" % (meta["radarid"],))
46
47 img[200:250,:]= np.ones([50,img.shape[1]])*np.nan
48
49 img[300:360,:]= np.ones([60,img.shape[1]])*np.nan
50
51 cgax, pm= wradlib.vis.plot_ppi(img)
52 txt = pl.title('Simple PPI')
53 print("coordenada angular",img[:,0],len(img[:,0]))
54 print("COORDENADA 0",img[0],len(img[0]))
55 cbar = pl.gcf().colorbar(pm, pad=0.075)
56
57 #r = np.arange(40, 80)
58 #az = np.arange(200, 250)
59 #ax, pm = wradlib.vis.plot_ppi(img[200:250, 40:80], r, az, autoext=False)
60 #ax, pm = wradlib.vis.plot_ppi(img[200:250, 40:80], r, az)
61
62 #txt = pl.title('Sector PPI')
63 pl.show()
64 '''
@@ -652,11 +652,11 class WeatherRHIPlot(Plot):
652 self.ini =0
652 self.ini =0
653 self.len_azi =0
653 self.len_azi =0
654 self.buffer_ini = None
654 self.buffer_ini = None
655 self.buffer_azi = None
655 self.buffer_ele = None
656 self.plots_adjust.update({'wspace': 0.4, 'hspace':0.4, 'left': 0.1, 'right': 0.9, 'bottom': 0.08})
656 self.plots_adjust.update({'wspace': 0.4, 'hspace':0.4, 'left': 0.1, 'right': 0.9, 'bottom': 0.08})
657 self.flag =0
657 self.flag =0
658 self.indicador= 0
658 self.indicador= 0
659 self.last_data_azi = None
659 self.last_data_ele = None
660 self.val_mean = None
660 self.val_mean = None
661
661
662 def update(self, dataOut):
662 def update(self, dataOut):
@@ -672,6 +672,161 class WeatherRHIPlot(Plot):
672 data['ele'] = dataOut.data_ele
672 data['ele'] = dataOut.data_ele
673 return data, meta
673 return data, meta
674
674
675 def get2List(self,angulos):
676 list1=[]
677 list2=[]
678 for i in reversed(range(len(angulos))):
679 diff_ = angulos[i]-angulos[i-1]
680 if diff_ >1.5:
681 list1.append(i-1)
682 list2.append(diff_)
683 return list(reversed(list1)),list(reversed(list2))
684
685 def fixData180(self,list_,ang_):
686 if list_[0]==-1:
687 vec = numpy.where(ang_<ang_[0])
688 ang_[vec] = ang_[vec]+180
689 return ang_
690 return ang_
691
692 def fixData180HL(self,angulos):
693 vec = numpy.where(angulos>=180)
694 angulos[vec]=angulos[vec]-180
695 return angulos
696
697
698 def search_pos(self,pos,list_):
699 for i in range(len(list_)):
700 if pos == list_[i]:
701 return True,i
702 i=None
703 return False,i
704
705 def fixDataComp(self,ang_,list1_,list2_):
706 size = len(ang_)
707 size2 = 0
708 for i in range(len(list2_)):
709 size2=size2+round(list2_[i])-1
710 new_size= size+size2
711 ang_new = numpy.zeros(new_size)
712 ang_new2 = numpy.zeros(new_size)
713
714 tmp = 0
715 c = 0
716 for i in range(len(ang_)):
717 ang_new[tmp +c] = ang_[i]
718 ang_new2[tmp+c] = ang_[i]
719 condition , value = self.search_pos(i,list1_)
720 if condition:
721 pos = tmp + c + 1
722 for k in range(round(list2_[value])-1):
723 ang_new[pos+k] = ang_new[pos+k-1]+1
724 ang_new2[pos+k] = numpy.nan
725 tmp = pos +k
726 c = 0
727 c=c+1
728 return ang_new,ang_new2
729
730 def globalCheckPED(self,angulos):
731 l1,l2 = self.get2List(angulos)
732 if len(l1)>0:
733 angulos2 = self.fixData180(list_=l1,ang_=angulos)
734 l1,l2 = self.get2List(angulos2)
735
736 ang1_,ang2_ = self.fixDataComp(ang_=angulos2,list1_=l1,list2_=l2)
737 ang1_ = self.fixData180HL(ang1_)
738 ang2_ = self.fixData180HL(ang2_)
739 else:
740 ang1_= angulos
741 ang2_= angulos
742 return ang1_,ang2_
743
744
745 def replaceNAN(self,data_weather,data_ele,val):
746 data= data_ele
747 data_T= data_weather
748 if data.shape[0]> data_T.shape[0]:
749 data_N = numpy.ones( [data.shape[0],data_T.shape[1]])
750 c = 0
751 for i in range(len(data)):
752 if numpy.isnan(data[i]):
753 data_N[i,:]=numpy.ones(data_T.shape[1])*numpy.nan
754 else:
755 data_N[i,:]=data_T[c,:]
756 sc=c+1
757 else:
758 for i in range(len(data)):
759 if numpy.isnan(data[i]):
760 data_T[i,:]=numpy.ones(data_T.shape[1])*numpy.nan
761 return data_T
762
763 def const_ploteo(self,data_weather,data_ele,step,res):
764 if self.ini==0:
765 #-------
766 n = (180/res)-len(data_ele)
767 #--------------------- new -------------------------
768 data_ele_new ,data_ele_old= self.globalCheckPED(data_ele)
769 #------------------------
770 start = data_ele_new[-1] + res
771 end = data_ele_new[0] - res
772 #------ new
773 self.last_data_ele = end
774 if start>end:
775 end = end + 180
776 ele_vacia = numpy.linspace(start,end,int(n))
777 ele_vacia = numpy.where(ele_vacia>180,ele_vacia-180,ele_vacia)
778 data_ele = numpy.hstack((data_ele_new,ele_vacia))
779 # RADAR
780 val_mean = numpy.mean(data_weather[:,-1])
781 self.val_mean = val_mean
782 data_weather_cmp = numpy.ones([(180-data_weather.shape[0]),data_weather.shape[1]])*val_mean
783 data_weather = self.replaceNAN(data_weather=data_weather,data_ele=data_ele_old,val=self.val_mean)
784 data_weather = numpy.vstack((data_weather,data_weather_cmp))
785 else:
786 # azimuth
787 flag=0
788 start_ele = self.res_ele[0]
789 #-----------new------------
790 data_ele ,data_ele_old= self.globalCheckPED(data_ele)
791 data_weather = self.replaceNAN(data_weather=data_weather,data_ele=data_ele_old,val=self.val_mean)
792 #--------------------------
793 start = data_ele[0]
794 end = data_ele[-1]
795 self.last_data_ele= end
796 if start< start_ele:
797 start = start +180
798 if end <start_ele:
799 end = end +180
800
801 pos_ini = int((start-start_ele)/res)
802 len_ele = len(data_ele)
803 if (180-pos_ini)<len_ele:
804 if pos_ini+1==180:
805 pos_ini=0
806 else:
807 flag=1
808 dif= 180-pos_ini
809 comp= len_ele-dif
810 #-----------------
811 if flag==0:
812 # elevacion
813 self.res_ele[pos_ini:pos_ini+len_ele] = data_ele
814 # RADAR
815 self.res_weather[pos_ini:pos_ini+len_ele,:] = data_weather
816 else:
817 # elevacion
818 self.res_ele[pos_ini:pos_ini+dif] = data_ele[0:dif]
819 self.res_ele[0:comp] = data_ele[dif:]
820 # RADAR
821 self.res_weather[pos_ini:pos_ini+dif,:] = data_weather[0:dif,:]
822 self.res_weather[0:comp,:] = data_weather[dif:,:]
823 flag=0
824 data_ele = self.res_ele
825 data_weather = self.res_weather
826
827 return data_weather,data_ele
828
829
675 def plot(self):
830 def plot(self):
676 thisDatetime = datetime.datetime.utcfromtimestamp(self.data.times[-1]).strftime('%Y-%m-%d %H:%M:%S')
831 thisDatetime = datetime.datetime.utcfromtimestamp(self.data.times[-1]).strftime('%Y-%m-%d %H:%M:%S')
677 data = self.data[-1]
832 data = self.data[-1]
@@ -680,14 +835,50 class WeatherRHIPlot(Plot):
680 r_mask = numpy.where(r>=0)[0]
835 r_mask = numpy.where(r>=0)[0]
681 r = numpy.arange(len(r_mask))*delta_height
836 r = numpy.arange(len(r_mask))*delta_height
682 self.y = 2*r
837 self.y = 2*r
838 '''
839 #-------------------------------------------------------------
840 # RADAR
841 #data_weather = data['weather']
842 # PEDESTAL
843 #data_azi = data['azi']
844 res = 1
845 # STEP
846 step = (180/(res*data['weather'].shape[0]))
847
848
849 self.res_weather, self.res_ele = self.const_ploteo(data_weather=data['weather'][:,r_mask],data_ele=data['ele'],step=step,res=res)
850 self.res_azi = numpy.mean(data['azi'])
851 print("self.res_ele------------------------------:",self.res_ele)
852 ################# PLOTEO ###################
853
854 for i,ax in enumerate(self.axes):
855 if ax.firsttime:
856 plt.clf()
857 cgax, pm = wrl.vis.plot_rhi(self.res_weather,r=r,th=self.res_ele,fig=self.figures[0], proj='cg', vmin=8, vmax=35)
858 else:
859 plt.clf()
860 cgax, pm = wrl.vis.plot_rhi(self.res_weather,r=r,th=self.res_ele,fig=self.figures[0], proj='cg', vmin=8, vmax=35)
861 caax = cgax.parasites[0]
862 paax = cgax.parasites[1]
863 cbar = plt.gcf().colorbar(pm, pad=0.075)
864 caax.set_xlabel('x_range [km]')
865 caax.set_ylabel('y_range [km]')
866 plt.text(1.0, 1.05, 'Elevacion '+str(thisDatetime)+" Step "+str(self.ini)+ " Azi: "+str(round(self.res_azi,2)), transform=caax.transAxes, va='bottom',ha='right')
867
868 self.ini= self.ini+1
869
870
871 '''
872 #--------------------------------------------------------
873
683 ###self.res_weather, self.res_ele = self.const_ploteo(data_weather=data['weather'][:,r_mask],data_azi=data['ele'],step=step,res=res)
874 ###self.res_weather, self.res_ele = self.const_ploteo(data_weather=data['weather'][:,r_mask],data_azi=data['ele'],step=step,res=res)
684 ###self.res_azi = numpy.mean(data['azi'])
875 ###self.res_azi = numpy.mean(data['azi'])
685 #-------------
876 #-------------
686 # 90 angulos en el axis 0
877 # 90 angulos en el axis 0
687 # 1000 step en el axis 1
878 # 1000 step en el axis 1
688 self.res_weather = numpy.ones([90,1000])
879 self.res_weather = numpy.ones([120,1000])
689 r = numpy.linspace(0,1999,1000)
880 r = numpy.linspace(0,1999,1000)
690 self.res_ele = numpy.arange(0,90)
881 self.res_ele = numpy.arange(0,120)
691 self.res_azi = 240
882 self.res_azi = 240
692 #-------------
883 #-------------
693 for i,ax in enumerate(self.axes):
884 for i,ax in enumerate(self.axes):
@@ -3961,7 +3961,7 class WeatherRadar(Operation):
3961
3961
3962 return data_param[:,i,:]
3962 return data_param[:,i,:]
3963
3963
3964 def getCoeficienteCorrelacionROhv_R(self.dataOut):
3964 def getCoeficienteCorrelacionROhv_R(self,dataOut):
3965 type = dataOut.inputUnit
3965 type = dataOut.inputUnit
3966 nHeis = dataOut.nHeights
3966 nHeis = dataOut.nHeights
3967 data_RhoHV_R = numpy.zeros((nHeis))
3967 data_RhoHV_R = numpy.zeros((nHeis))
@@ -3976,7 +3976,7 class WeatherRadar(Operation):
3976
3976
3977 return data_RhoHV_R
3977 return data_RhoHV_R
3978
3978
3979 def getFasediferencialPhiD_P(self.dataOut,phase= True):
3979 def getFasediferencialPhiD_P(self,dataOut,phase= True):
3980 type = dataOut.inputUnit
3980 type = dataOut.inputUnit
3981 nHeis = dataOut.nHeights
3981 nHeis = dataOut.nHeights
3982 data_PhiD_P = numpy.zeros((nHeis))
3982 data_PhiD_P = numpy.zeros((nHeis))
@@ -4061,25 +4061,34 class PedestalInformation(Operation):
4061 Operation.__init__(self)
4061 Operation.__init__(self)
4062
4062
4063
4063
4064 def getAnguloProfile(self,utc_adq,list_pedestal):
4064 def getAnguloProfile(self,utc_adq,utc_ped_list):
4065 utc_adq = utc_adq
4065 utc_adq = utc_adq
4066 list_pedestal = list_pedestal
4066 ##list_pedestal = list_pedestal
4067 utc_ped_list = []
4067 utc_ped_list = utc_ped_list
4068 for i in range(len(list_pedestal)):
4068 #for i in range(len(list_pedestal)):
4069 #print(i)# OJO IDENTIFICADOR DE SINCRONISMO
4069 # #print(i)# OJO IDENTIFICADOR DE SINCRONISMO
4070 utc_ped_list.append(self.gettimeutcfromDirFilename(path=self.path_ped,file=list_pedestal[i]))
4070 # utc_ped_list.append(self.gettimeutcfromDirFilename(path=self.path_ped,file=list_pedestal[i]))
4071
4072 nro_file,utc_ped,utc_ped_1 =self.getNROFile(utc_adq,utc_ped_list)
4071 nro_file,utc_ped,utc_ped_1 =self.getNROFile(utc_adq,utc_ped_list)
4073 ###print("NROFILE************************************", nro_file)
4072 #print("NROFILE************************************", nro_file,utc_ped)
4074 if nro_file < 0:
4073 if nro_file < 0:
4075 return numpy.NaN,numpy.NaN
4074 return numpy.NaN,numpy.NaN
4076 else:
4075 else:
4077 nro_key_p = int((utc_adq-utc_ped)/self.t_Interval_p)-1 # ojito al -1 estimado alex
4076 nro_key_p = int((utc_adq-utc_ped)/self.t_Interval_p)-1 # ojito al -1 estimado alex
4078 ff_pedestal = list_pedestal[nro_file]
4077 #print("nro_key_p",nro_key_p)
4078 ff_pedestal = self.list_pedestal[nro_file]
4079 #angulo = self.getDatavaluefromDirFilename(path=self.path_ped,file=ff_pedestal,value="azimuth")
4079 #angulo = self.getDatavaluefromDirFilename(path=self.path_ped,file=ff_pedestal,value="azimuth")
4080 angulo = self.getDatavaluefromDirFilename(path=self.path_ped,file=ff_pedestal,value="azi_pos")
4080 angulo = self.getDatavaluefromDirFilename(path=self.path_ped,file=ff_pedestal,value="azi_pos")
4081 angulo_ele = self.getDatavaluefromDirFilename(path=self.path_ped,file=ff_pedestal,value="ele_pos")
4081 angulo_ele = self.getDatavaluefromDirFilename(path=self.path_ped,file=ff_pedestal,value="ele_pos")
4082
4082 #-----Adicion de filtro........................
4083 vel_ele = self.getDatavaluefromDirFilename(path=self.path_ped,file=ff_pedestal,value="ele_vel")
4084 '''
4085 vel_mean = numpy.mean(vel_ele)
4086 print("#############################################################")
4087 print("VEL MEAN----------------:",vel_mean)
4088 f vel_mean<7.7 or vel_mean>8.3:
4089 return numpy.NaN,numpy.NaN
4090 #------------------------------------------------------------------------------------------------------
4091 '''
4083 if 99>=nro_key_p>0:
4092 if 99>=nro_key_p>0:
4084 ##print("angulo_array :",angulo[nro_key_p])
4093 ##print("angulo_array :",angulo[nro_key_p])
4085 return angulo[nro_key_p],angulo_ele[nro_key_p]
4094 return angulo[nro_key_p],angulo_ele[nro_key_p]
@@ -4148,11 +4157,14 class PedestalInformation(Operation):
4148 #print(utc_adq)
4157 #print(utc_adq)
4149 #print(len(utc_ped_list))
4158 #print(len(utc_ped_list))
4150 ###print(utc_ped_list)
4159 ###print(utc_ped_list)
4151 for i in range(len(utc_ped_list)):
4160 if utc_adq<utc_ped_list[0]:
4152 if utc_adq>utc_ped_list[i]:
4161 pass
4153 #print("mayor")
4162 else:
4154 #print("utc_ped_list",utc_ped_list[i])
4163 for i in range(len(utc_ped_list)):
4155 c +=1
4164 if utc_adq>utc_ped_list[i]:
4165 #print("mayor")
4166 #print("utc_ped_list",utc_ped_list[i])
4167 c +=1
4156
4168
4157 return c-1,utc_ped_list[c-1],utc_ped_list[c]
4169 return c-1,utc_ped_list[c-1],utc_ped_list[c]
4158
4170
@@ -4171,7 +4183,12 class PedestalInformation(Operation):
4171 self.path_ped = path_ped
4183 self.path_ped = path_ped
4172 self.t_Interval_p = t_Interval_p
4184 self.t_Interval_p = t_Interval_p
4173 self.list_pedestal = self.getfirstFilefromPath(path=self.path_ped,meta="PE",ext=".hdf5")
4185 self.list_pedestal = self.getfirstFilefromPath(path=self.path_ped,meta="PE",ext=".hdf5")
4186 self.utc_ped_list= []
4187 for i in range(len(self.list_pedestal)):
4188 #print(i)# OJO IDENTIFICADOR DE SINCRONISMO
4189 self.utc_ped_list.append(self.gettimeutcfromDirFilename(path=self.path_ped,file=self.list_pedestal[i]))
4174 dataOut.wr_exp = wr_exp
4190 dataOut.wr_exp = wr_exp
4191 print("SETUP READY")
4175
4192
4176
4193
4177 def setNextFileP(self,dataOut):
4194 def setNextFileP(self,dataOut):
@@ -4194,12 +4211,12 class PedestalInformation(Operation):
4194 self.isConfig = True
4211 self.isConfig = True
4195 #print("config TRUE")
4212 #print("config TRUE")
4196 utc_adq = dataOut.utctime
4213 utc_adq = dataOut.utctime
4197 ###print("utc_adq---------------",utc_adq)
4214 #print("utc_adq---------------",utc_adq)
4198
4215
4199 list_pedestal = self.list_pedestal
4216 list_pedestal = self.list_pedestal
4200 #print("list_pedestal",list_pedestal)
4217 #print("list_pedestal",list_pedestal[:20])
4201 angulo,angulo_ele = self.getAnguloProfile(utc_adq=utc_adq,list_pedestal=list_pedestal)
4218 angulo,angulo_ele = self.getAnguloProfile(utc_adq=utc_adq,utc_ped_list=self.utc_ped_list)
4202 ###print("angulo**********",angulo)
4219 #print("angulo**********",angulo)
4203 dataOut.flagNoData = False
4220 dataOut.flagNoData = False
4204 if numpy.isnan(angulo) or numpy.isnan(angulo_ele) :
4221 if numpy.isnan(angulo) or numpy.isnan(angulo_ele) :
4205 dataOut.flagNoData = True
4222 dataOut.flagNoData = True
@@ -4356,12 +4373,13 class Block360(Operation):
4356 if self.__dataReady:
4373 if self.__dataReady:
4357 dataOut.data_360 = data_360 # S
4374 dataOut.data_360 = data_360 # S
4358 ##print("---------------------------------------------------------------------------------")
4375 ##print("---------------------------------------------------------------------------------")
4359 #####print("---------------------------DATAREADY---------------------------------------------")
4376 print("---------------------------DATAREADY---------------------------------------------")
4360 ##print("---------------------------------------------------------------------------------")
4377 ##print("---------------------------------------------------------------------------------")
4361 ##print("data_360",dataOut.data_360.shape)
4378 ##print("data_360",dataOut.data_360.shape)
4362 dataOut.data_azi = data_p
4379 dataOut.data_azi = data_p
4363 dataOut.data_ele = data_e
4380 dataOut.data_ele = data_e
4364 #####print("azi: ",dataOut.data_azi)
4381 #####print("azi: ",dataOut.data_azi)
4382 print("ele: ",dataOut.data_ele)
4365 #print("jroproc_parameters",data_p[0],data_p[-1])#,data_360.shape,avgdatatime)
4383 #print("jroproc_parameters",data_p[0],data_p[-1])#,data_360.shape,avgdatatime)
4366 dataOut.utctime = avgdatatime
4384 dataOut.utctime = avgdatatime
4367 dataOut.flagNoData = False
4385 dataOut.flagNoData = False
@@ -1378,7 +1378,7 class PulsePair(Operation):
1378 pair0 = pair0.real
1378 pair0 = pair0.real
1379 lag_0 = numpy.sum(pair0,1)
1379 lag_0 = numpy.sum(pair0,1)
1380 #-----------------Calculo de Cscp------------------------------ New
1380 #-----------------Calculo de Cscp------------------------------ New
1381 cspc_pair01 = self.__buffer[0]*__self.buffer[1]
1381 cspc_pair01 = self.__buffer[0]*self.__buffer[1]
1382 #------------------Calculo de Ruido x canal--------------------
1382 #------------------Calculo de Ruido x canal--------------------
1383 self.noise = numpy.zeros(self.__nch)
1383 self.noise = numpy.zeros(self.__nch)
1384 for i in range(self.__nch):
1384 for i in range(self.__nch):
@@ -1463,7 +1463,7 class PulsePair(Operation):
1463 self.__lastdatatime = datatime
1463 self.__lastdatatime = datatime
1464
1464
1465 if data_power is None:
1465 if data_power is None:
1466 return None, None, None,None,None,None
1466 return None, None, None,None,None,None,None
1467
1467
1468 avgdatatime = self.__initime
1468 avgdatatime = self.__initime
1469 deltatime = datatime - self.__lastdatatime
1469 deltatime = datatime - self.__lastdatatime
@@ -25,17 +25,25 controllerObj.setup(id = '191', name='Test_USRP', description=desc)
25 #path = '/media/data/data/vientos/57.2063km/echoes/NCO_Woodman'
25 #path = '/media/data/data/vientos/57.2063km/echoes/NCO_Woodman'
26 #path = '/DATA_RM/TEST_INTEGRACION'
26 #path = '/DATA_RM/TEST_INTEGRACION'
27 #path = '/DATA_RM/PRUEBA_USRP_RP'
27 #path = '/DATA_RM/PRUEBA_USRP_RP'
28 path = '/DATA_RM/PRUEBA_USRP_RP'
28 #path = '/DATA_RM/PRUEBA_USRP_RP'
29
29
30 figpath = '/home/soporte/Pictures/TEST_RP_0001'
30 path = '/DATA_RM/TEST_2M'
31 figpath = '/home/soporte/Pictures/TEST_RP_6000'
31 path = '/DATA_RM/TEST_2M_UD'
32 figpath = '/home/soporte/Pictures/USRP'
32 path = '/DATA_RM/2MHZ17022022'
33 path = '/DATA_RM/10MHZTEST/'
34 path = '/DATA_RM/10MHZDRONE/'
35
36 #figpath = '/home/soporte/Pictures/TEST_RP_0001'
37 #figpath = '/home/soporte/Pictures/TEST_RP_6000'
38 figpath = '/home/soporte/Pictures/USRP_TEST_2M'
39 figpath = '/home/soporte/Pictures/USRP_TEST_2M_UD'
40 figpaht = '/home/soporte/Pictures/10MHZDRONE'
33 #remotefolder = "/home/wmaster/graficos"
41 #remotefolder = "/home/wmaster/graficos"
34 #######################################################################
42 #######################################################################
35 ################# RANGO DE PLOTEO######################################
43 ################# RANGO DE PLOTEO######################################
36 #######################################################################
44 #######################################################################
37 dBmin = '-5'
45 dBmin = '20'
38 dBmax = '20'
46 dBmax = '60'
39 xmin = '0'
47 xmin = '0'
40 xmax ='24'
48 xmax ='24'
41 ymin = '0'
49 ymin = '0'
@@ -52,16 +60,16 yesterday = str2.strftime("%Y/%m/%d")
52 #######################################################################
60 #######################################################################
53 readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader',
61 readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader',
54 path=path,
62 path=path,
55 startDate="2021/07/02",#today,
63 startDate="2022/02/18",#today,
56 endDate="2021/07/02",#today,
64 endDate="2022/02/18",#today,
57 startTime='14:50:00',# inicio libre
65 startTime='00:00:00',# inicio libre
58 #startTime='00:00:00',
66 #startTime='00:00:00',
59 endTime='14:55:59',
67 endTime='23:59:59',
60 delay=0,
68 delay=0,
61 #set=0,
69 #set=0,
62 online=0,
70 online=1,
63 walk=1,
71 walk=1,
64 ippKm = 6000)
72 ippKm = 60)
65
73
66 opObj11 = readUnitConfObj.addOperation(name='printInfo')
74 opObj11 = readUnitConfObj.addOperation(name='printInfo')
67 #opObj11 = readUnitConfObj.addOperation(name='printNumberOfBlock')
75 #opObj11 = readUnitConfObj.addOperation(name='printNumberOfBlock')
@@ -71,11 +79,24 opObj11 = readUnitConfObj.addOperation(name='printInfo')
71
79
72 procUnitConfObjA = controllerObj.addProcUnit(datatype='VoltageProc', inputId=readUnitConfObj.getId())
80 procUnitConfObjA = controllerObj.addProcUnit(datatype='VoltageProc', inputId=readUnitConfObj.getId())
73
81
82 '''
83 # OJO SCOPE
84 opObj10 = procUnitConfObjA.addOperation(name='ScopePlot', optype='external')
85 opObj10.addParameter(name='id', value='10', format='int')
86 ##opObj10.addParameter(name='xmin', value='0', format='int')
87 ##opObj10.addParameter(name='xmax', value='50', format='int')
88 opObj10.addParameter(name='type', value='iq')
89 opObj10.addParameter(name='ymin', value='-1200', format='int')
90 opObj10.addParameter(name='ymax', value='1200', format='int')
91 opObj10.addParameter(name='save', value=figpath, format='str')
92 opObj10.addParameter(name='save_period', value=10, format='int')
93 '''
94 '''
74 opObj11 = procUnitConfObjA.addOperation(name='selectHeights')
95 opObj11 = procUnitConfObjA.addOperation(name='selectHeights')
75 opObj11.addParameter(name='minIndex', value='1', format='int')
96 opObj11.addParameter(name='minIndex', value='1', format='int')
76 # opObj11.addParameter(name='maxIndex', value='10000', format='int')
97 # opObj11.addParameter(name='maxIndex', value='10000', format='int')
77 opObj11.addParameter(name='maxIndex', value='39980', format='int')
98 opObj11.addParameter(name='maxIndex', value='39980', format='int')
78
99 '''
79 #
100 #
80 # codigo64='1,1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,1,0,0,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,1,0,1,1,1,0,0,0,1,0,'+\
101 # codigo64='1,1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,1,0,0,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,1,0,1,1,1,0,0,0,1,0,'+\
81 # '1,1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,1,0,0,0,1,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,0,1,0,0,0,1,1,1,0,1'
102 # '1,1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,1,0,0,0,1,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,0,1,0,0,0,1,1,1,0,1'
@@ -148,14 +169,19 opObj11.addParameter(name='save_period', value=1)
148 8
169 8
149 '''
170 '''
150
171
172
173
174 opObj11 = procUnitConfObjA.addOperation(name='CohInt', optype='other')
175 opObj11.addParameter(name='n', value='250', format='int')
176
151 #######################################################################
177 #######################################################################
152 ########## OPERACIONES DOMINIO DE LA FRECUENCIA########################
178 ########## OPERACIONES DOMINIO DE LA FRECUENCIA########################
153 #######################################################################
179 #######################################################################
154
180
155 #procUnitConfObjB = controllerObj.addProcUnit(datatype='SpectraProc', inputId=procUnitConfObjA.getId())
181 procUnitConfObjB = controllerObj.addProcUnit(datatype='SpectraProc', inputId=procUnitConfObjA.getId())
156 #procUnitConfObjB.addParameter(name='nFFTPoints', value='32', format='int')
182 procUnitConfObjB.addParameter(name='nFFTPoints', value='32', format='int')
157 #procUnitConfObjB.addParameter(name='nProfiles', value='32', format='int')
183 procUnitConfObjB.addParameter(name='nProfiles', value='32', format='int')
158
184 '''
159 procUnitConfObjC = controllerObj.addProcUnit(datatype='SpectraHeisProc', inputId=procUnitConfObjA.getId())
185 procUnitConfObjC = controllerObj.addProcUnit(datatype='SpectraHeisProc', inputId=procUnitConfObjA.getId())
160 #procUnitConfObjB.addParameter(name='nFFTPoints', value='64', format='int')
186 #procUnitConfObjB.addParameter(name='nFFTPoints', value='64', format='int')
161 #procUnitConfObjB.addParameter(name='nProfiles', value='64', format='int')
187 #procUnitConfObjB.addParameter(name='nProfiles', value='64', format='int')
@@ -174,7 +200,8 opObj11.addParameter(name='n', value='100', format='int')
174 ########## PLOTEO DOMINIO DE LA FRECUENCIA#############################
200 ########## PLOTEO DOMINIO DE LA FRECUENCIA#############################
175 #######################################################################
201 #######################################################################
176 #----
202 #----
177
203 '''
204 '''
178 opObj11 = procUnitConfObjC.addOperation(name='SpectraHeisPlot')
205 opObj11 = procUnitConfObjC.addOperation(name='SpectraHeisPlot')
179 opObj11.addParameter(name='id', value='10', format='int')
206 opObj11.addParameter(name='id', value='10', format='int')
180 opObj11.addParameter(name='wintitle', value='Spectra_Alturas', format='str')
207 opObj11.addParameter(name='wintitle', value='Spectra_Alturas', format='str')
@@ -189,7 +216,7 opObj11.addParameter(name='grid', value=True, format='bool')
189 #opObj11.addParameter(name='showprofile', value='1', format='int')
216 #opObj11.addParameter(name='showprofile', value='1', format='int')
190 opObj11.addParameter(name='save', value=figpath, format='str')
217 opObj11.addParameter(name='save', value=figpath, format='str')
191 #opObj11.addParameter(name='save_period', value=10, format='int')
218 #opObj11.addParameter(name='save_period', value=10, format='int')
192
219 '''
193 '''
220 '''
194 opObj11 = procUnitConfObjC.addOperation(name='RTIHeisPlot')
221 opObj11 = procUnitConfObjC.addOperation(name='RTIHeisPlot')
195 opObj11.addParameter(name='id', value='10', format='int')
222 opObj11.addParameter(name='id', value='10', format='int')
@@ -204,7 +231,7 opObj11.addParameter(name='showprofile', value='1', format='int')
204 opObj11.addParameter(name='save', value=figpath, format='str')
231 opObj11.addParameter(name='save', value=figpath, format='str')
205 opObj11.addParameter(name='save_period', value=10, format='int')
232 opObj11.addParameter(name='save_period', value=10, format='int')
206 '''
233 '''
207 '''
234
208 #SpectraPlot
235 #SpectraPlot
209
236
210 opObj11 = procUnitConfObjB.addOperation(name='SpectraPlot', optype='external')
237 opObj11 = procUnitConfObjB.addOperation(name='SpectraPlot', optype='external')
@@ -220,6 +247,7 opObj11.addParameter(name='showprofile', value='1', format='int')
220 opObj11.addParameter(name='save', value=figpath, format='str')
247 opObj11.addParameter(name='save', value=figpath, format='str')
221 opObj11.addParameter(name='save_period', value=10, format='int')
248 opObj11.addParameter(name='save_period', value=10, format='int')
222
249
250
223 #RTIPLOT
251 #RTIPLOT
224
252
225 opObj11 = procUnitConfObjB.addOperation(name='RTIPlot', optype='external')
253 opObj11 = procUnitConfObjB.addOperation(name='RTIPlot', optype='external')
@@ -259,7 +287,7 opObj11.addParameter(name='save_period', value=10, format='int')
259 # opObj11.addParameter(name='save', value=0, format='bool')
287 # opObj11.addParameter(name='save', value=0, format='bool')
260 # opObj11.addParameter(name='pairsList', value='(0,1)', format='pairsList')
288 # opObj11.addParameter(name='pairsList', value='(0,1)', format='pairsList')
261 #
289 #
262
290 '''
263 '''
291 '''
264 #######################################################################
292 #######################################################################
265 ############### UNIDAD DE ESCRITURA ###################################
293 ############### UNIDAD DE ESCRITURA ###################################
@@ -16,6 +16,7 print("[SETUP]-RADAR METEOROLOGICO-")
16 path_ped = "/DATA_RM/TEST_PEDESTAL/P20211111-173856"
16 path_ped = "/DATA_RM/TEST_PEDESTAL/P20211111-173856"
17 print("PATH PEDESTAL :",path_ped)
17 print("PATH PEDESTAL :",path_ped)
18 path_adq = "/DATA_RM/11"
18 path_adq = "/DATA_RM/11"
19 path_adq = "/DATA_RM/10MHZDRONE/"
19 print("PATH DATA :",path_adq)
20 print("PATH DATA :",path_adq)
20
21
21
22
@@ -60,9 +61,9 n= int(1/(VEL*ipp_sec))
60 print("N° Profiles : ", n)
61 print("N° Profiles : ", n)
61 #---------------------------------------------------------------------------------------
62 #---------------------------------------------------------------------------------------
62 plot_rti = 0
63 plot_rti = 0
63 plot_ppi = 0
64 plot_ppi = 1
64 integration = 1
65 integration = 1
65 save = 1
66 save = 0
66 #---------------------------RANGO DE PLOTEO----------------------------------
67 #---------------------------RANGO DE PLOTEO----------------------------------
67 dBmin = '1'
68 dBmin = '1'
68 dBmax = '85'
69 dBmax = '85'
@@ -94,9 +95,9 controllerObj.setup(id = '191', name='Test_USRP', description=desc)
94 #---------------------UNIDAD DE LECTURA--------------------------------
95 #---------------------UNIDAD DE LECTURA--------------------------------
95 readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader',
96 readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader',
96 path=path_adq,
97 path=path_adq,
97 startDate="2021/11/11",#today,
98 startDate="2022/02/19",#today,
98 endDate="2021/12/30",#today,
99 endDate="2022/02/18",#today,
99 startTime='17:39:17',
100 startTime='00:00:00',
100 endTime='23:59:59',
101 endTime='23:59:59',
101 delay=0,
102 delay=0,
102 #set=0,
103 #set=0,
@@ -18,8 +18,10 from schainpy.controller import Project
18 #-----------------------------------------------------------------------------------------
18 #-----------------------------------------------------------------------------------------
19 print("[SETUP]-RADAR METEOROLOGICO-")
19 print("[SETUP]-RADAR METEOROLOGICO-")
20 path_ped = "/DATA_RM/TEST_PEDESTAL/P20211123-143826"
20 path_ped = "/DATA_RM/TEST_PEDESTAL/P20211123-143826"
21 path_ped = "/DATA_RM/TEST_PEDESTAL/P20220217-172216"
21 print("PATH PEDESTAL :",path_ped)
22 print("PATH PEDESTAL :",path_ped)
22 path_adq = "/DATA_RM/DRONE/2MHZ_5V_ELEVACION/"
23 path_adq = "/DATA_RM/DRONE/2MHZ_5V_ELEVACION/"
24 path_adq = "/DATA_RM/2MHZTEST/"
23 print("PATH DATA :",path_adq)
25 print("PATH DATA :",path_adq)
24 figpath_pp_rti = "/home/soporte/Pictures/TEST_PP_RHI"
26 figpath_pp_rti = "/home/soporte/Pictures/TEST_PP_RHI"
25 print("PATH PP RTI :",figpath_pp_rti)
27 print("PATH PP RTI :",figpath_pp_rti)
@@ -44,7 +46,7 else:
44 ff_pedestal = list_ped[2]
46 ff_pedestal = list_ped[2]
45 ele_vel = getDatavaluefromDirFilename(path=path_ped,file=ff_pedestal,value="ele_vel")
47 ele_vel = getDatavaluefromDirFilename(path=path_ped,file=ff_pedestal,value="ele_vel")
46 V = round(ele_vel[0])
48 V = round(ele_vel[0])
47 V = 10.0
49 V = 8.0#10.0
48 print("VELOCIDAD ELE :", int(numpy.mean(ele_vel)),"°/seg")
50 print("VELOCIDAD ELE :", int(numpy.mean(ele_vel)),"°/seg")
49 print(" ")
51 print(" ")
50 #---------------------------------------------------------------------------------------
52 #---------------------------------------------------------------------------------------
@@ -83,9 +85,9 controllerObj.setup(id = '191', name='Test_USRP', description=desc)
83 #---------------------UNIDAD DE LECTURA--------------------------------
85 #---------------------UNIDAD DE LECTURA--------------------------------
84 readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader',
86 readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader',
85 path=path_adq,
87 path=path_adq,
86 startDate="2021/11/23",#today,
88 startDate="2022/02/17",#today,
87 endDate="2021/12/30",#today,
89 endDate="2022/02/17",#today,
88 startTime='14:38:23',
90 startTime='00:00:00',
89 endTime='23:59:59',
91 endTime='23:59:59',
90 delay=0,
92 delay=0,
91 #set=0,
93 #set=0,
@@ -109,6 +111,7 if mode_proc==0:
109 opObj11 = procUnitConfObjB.addOperation(name='PedestalInformation')
111 opObj11 = procUnitConfObjB.addOperation(name='PedestalInformation')
110 opObj11.addParameter(name='path_ped', value=path_ped)
112 opObj11.addParameter(name='path_ped', value=path_ped)
111 opObj11.addParameter(name='t_Interval_p', value='0.01', format='float')
113 opObj11.addParameter(name='t_Interval_p', value='0.01', format='float')
114 opObj11.addParameter(name='wr_exp', value='RHI')
112
115
113 if plot_rhi==1:
116 if plot_rhi==1:
114 opObj11 = procUnitConfObjB.addOperation(name='Block360')
117 opObj11 = procUnitConfObjB.addOperation(name='Block360')
@@ -16,6 +16,7 path_ped = '/DATA_RM/TEST_PEDESTAL/P20211020-131248'
16 path_ped = '/DATA_RM/TEST_PEDESTAL/P20211110-171003'
16 path_ped = '/DATA_RM/TEST_PEDESTAL/P20211110-171003'
17 path_ped = '/DATA_RM/TEST_PEDESTAL/P20211111-173856'
17 path_ped = '/DATA_RM/TEST_PEDESTAL/P20211111-173856'
18 path_ped = '/DATA_RM/TEST_PEDESTAL/P20211123-143826'
18 path_ped = '/DATA_RM/TEST_PEDESTAL/P20211123-143826'
19 path_ped = "/DATA_RM/TEST_PEDESTAL/P20220217-172216"
19 #path_ped = '/DATA_RM/TEST_PEDESTAL/P20211111-173409'
20 #path_ped = '/DATA_RM/TEST_PEDESTAL/P20211111-173409'
20 # Metodo para verificar numero
21 # Metodo para verificar numero
21 def isNumber(str):
22 def isNumber(str):
@@ -48,7 +49,7 for i in range(m):
48 tmp_azi_pos = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="azi_pos")
49 tmp_azi_pos = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="azi_pos")
49 tmp_ele_pos = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="ele_pos")
50 tmp_ele_pos = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="ele_pos")
50 tmp_azi_vel = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="azi_vel")
51 tmp_azi_vel = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="azi_vel")
51 tmp_ele_vel = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="azi_vel")# nuevo :D
52 tmp_ele_vel = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="ele_vel")# nuevo :D
52
53
53 time_[i] = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="utc")
54 time_[i] = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="utc")
54
55
@@ -72,8 +73,10 z=0
72 # CONDICION POR LEER EN TIEMPO REAL NO OFFLINE
73 # CONDICION POR LEER EN TIEMPO REAL NO OFFLINE
73
74
74 for filename in LIST:
75 for filename in LIST:
75 tmp_azi_pos = getDatavaluefromDirFilename(path=path_ped,file=filename,value="azi_pos")
76 #tmp_azi_pos = getDatavaluefromDirFilename(path=path_ped,file=filename,value="azi_pos")
76 tmp_ele_pos = getDatavaluefromDirFilename(path=path_ped,file=filename,value="ele_pos")
77 #tmp_ele_pos = getDatavaluefromDirFilename(path=path_ped,file=filename,value="ele_pos")
78 tmp_azi_pos = getDatavaluefromDirFilename(path=path_ped,file=filename,value="ele_vel")
79 tmp_ele_pos = getDatavaluefromDirFilename(path=path_ped,file=filename,value="azi_vel")
77 # CONDICION POR LEER EN TIEMPO REAL NO OFFLINE
80 # CONDICION POR LEER EN TIEMPO REAL NO OFFLINE
78
81
79 if z==(m-1):
82 if z==(m-1):
General Comments 0
You need to be logged in to leave comments. Login now