@@ -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 | 652 | self.ini =0 |
|
653 | 653 | self.len_azi =0 |
|
654 | 654 | self.buffer_ini = None |
|
655 |
self.buffer_ |
|
|
655 | self.buffer_ele = None | |
|
656 | 656 | self.plots_adjust.update({'wspace': 0.4, 'hspace':0.4, 'left': 0.1, 'right': 0.9, 'bottom': 0.08}) |
|
657 | 657 | self.flag =0 |
|
658 | 658 | self.indicador= 0 |
|
659 |
self.last_data_ |
|
|
659 | self.last_data_ele = None | |
|
660 | 660 | self.val_mean = None |
|
661 | 661 | |
|
662 | 662 | def update(self, dataOut): |
@@ -672,6 +672,161 class WeatherRHIPlot(Plot): | |||
|
672 | 672 | data['ele'] = dataOut.data_ele |
|
673 | 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 | 830 | def plot(self): |
|
676 | 831 | thisDatetime = datetime.datetime.utcfromtimestamp(self.data.times[-1]).strftime('%Y-%m-%d %H:%M:%S') |
|
677 | 832 | data = self.data[-1] |
@@ -680,14 +835,50 class WeatherRHIPlot(Plot): | |||
|
680 | 835 | r_mask = numpy.where(r>=0)[0] |
|
681 | 836 | r = numpy.arange(len(r_mask))*delta_height |
|
682 | 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 | 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 | 875 | ###self.res_azi = numpy.mean(data['azi']) |
|
685 | 876 | #------------- |
|
686 | 877 | # 90 angulos en el axis 0 |
|
687 | 878 | # 1000 step en el axis 1 |
|
688 |
self.res_weather = numpy.ones([ |
|
|
879 | self.res_weather = numpy.ones([120,1000]) | |
|
689 | 880 | r = numpy.linspace(0,1999,1000) |
|
690 |
self.res_ele = numpy.arange(0, |
|
|
881 | self.res_ele = numpy.arange(0,120) | |
|
691 | 882 | self.res_azi = 240 |
|
692 | 883 | #------------- |
|
693 | 884 | for i,ax in enumerate(self.axes): |
@@ -3961,7 +3961,7 class WeatherRadar(Operation): | |||
|
3961 | 3961 | |
|
3962 | 3962 | return data_param[:,i,:] |
|
3963 | 3963 | |
|
3964 |
def getCoeficienteCorrelacionROhv_R(self |
|
|
3964 | def getCoeficienteCorrelacionROhv_R(self,dataOut): | |
|
3965 | 3965 | type = dataOut.inputUnit |
|
3966 | 3966 | nHeis = dataOut.nHeights |
|
3967 | 3967 | data_RhoHV_R = numpy.zeros((nHeis)) |
@@ -3976,7 +3976,7 class WeatherRadar(Operation): | |||
|
3976 | 3976 | |
|
3977 | 3977 | return data_RhoHV_R |
|
3978 | 3978 | |
|
3979 |
def getFasediferencialPhiD_P(self |
|
|
3979 | def getFasediferencialPhiD_P(self,dataOut,phase= True): | |
|
3980 | 3980 | type = dataOut.inputUnit |
|
3981 | 3981 | nHeis = dataOut.nHeights |
|
3982 | 3982 | data_PhiD_P = numpy.zeros((nHeis)) |
@@ -4061,25 +4061,34 class PedestalInformation(Operation): | |||
|
4061 | 4061 | Operation.__init__(self) |
|
4062 | 4062 | |
|
4063 | 4063 | |
|
4064 |
def getAnguloProfile(self,utc_adq, |
|
|
4064 | def getAnguloProfile(self,utc_adq,utc_ped_list): | |
|
4065 | 4065 | utc_adq = utc_adq |
|
4066 | list_pedestal = list_pedestal | |
|
4067 |
utc_ped_list = |
|
|
4068 | for i in range(len(list_pedestal)): | |
|
4069 | #print(i)# OJO IDENTIFICADOR DE SINCRONISMO | |
|
4070 | utc_ped_list.append(self.gettimeutcfromDirFilename(path=self.path_ped,file=list_pedestal[i])) | |
|
4071 | ||
|
4066 | ##list_pedestal = list_pedestal | |
|
4067 | utc_ped_list = utc_ped_list | |
|
4068 | #for i in range(len(list_pedestal)): | |
|
4069 | # #print(i)# OJO IDENTIFICADOR DE SINCRONISMO | |
|
4070 | # utc_ped_list.append(self.gettimeutcfromDirFilename(path=self.path_ped,file=list_pedestal[i])) | |
|
4072 | 4071 | nro_file,utc_ped,utc_ped_1 =self.getNROFile(utc_adq,utc_ped_list) |
|
4073 |
|
|
|
4072 | #print("NROFILE************************************", nro_file,utc_ped) | |
|
4074 | 4073 | if nro_file < 0: |
|
4075 | 4074 | return numpy.NaN,numpy.NaN |
|
4076 | 4075 | else: |
|
4077 | 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 | 4079 | #angulo = self.getDatavaluefromDirFilename(path=self.path_ped,file=ff_pedestal,value="azimuth") |
|
4080 | 4080 | angulo = self.getDatavaluefromDirFilename(path=self.path_ped,file=ff_pedestal,value="azi_pos") |
|
4081 | 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 | 4092 | if 99>=nro_key_p>0: |
|
4084 | 4093 | ##print("angulo_array :",angulo[nro_key_p]) |
|
4085 | 4094 | return angulo[nro_key_p],angulo_ele[nro_key_p] |
@@ -4148,11 +4157,14 class PedestalInformation(Operation): | |||
|
4148 | 4157 | #print(utc_adq) |
|
4149 | 4158 | #print(len(utc_ped_list)) |
|
4150 | 4159 | ###print(utc_ped_list) |
|
4151 |
f |
|
|
4152 | if utc_adq>utc_ped_list[i]: | |
|
4153 | #print("mayor") | |
|
4154 |
|
|
|
4155 | c +=1 | |
|
4160 | if utc_adq<utc_ped_list[0]: | |
|
4161 | pass | |
|
4162 | else: | |
|
4163 | for i in range(len(utc_ped_list)): | |
|
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 | 4169 | return c-1,utc_ped_list[c-1],utc_ped_list[c] |
|
4158 | 4170 | |
@@ -4171,7 +4183,12 class PedestalInformation(Operation): | |||
|
4171 | 4183 | self.path_ped = path_ped |
|
4172 | 4184 | self.t_Interval_p = t_Interval_p |
|
4173 | 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 | 4190 | dataOut.wr_exp = wr_exp |
|
4191 | print("SETUP READY") | |
|
4175 | 4192 | |
|
4176 | 4193 | |
|
4177 | 4194 | def setNextFileP(self,dataOut): |
@@ -4194,12 +4211,12 class PedestalInformation(Operation): | |||
|
4194 | 4211 | self.isConfig = True |
|
4195 | 4212 | #print("config TRUE") |
|
4196 | 4213 | utc_adq = dataOut.utctime |
|
4197 |
|
|
|
4214 | #print("utc_adq---------------",utc_adq) | |
|
4198 | 4215 | |
|
4199 | 4216 | list_pedestal = self.list_pedestal |
|
4200 | #print("list_pedestal",list_pedestal) | |
|
4201 |
angulo,angulo_ele = self.getAnguloProfile(utc_adq=utc_adq, |
|
|
4202 |
|
|
|
4217 | #print("list_pedestal",list_pedestal[:20]) | |
|
4218 | angulo,angulo_ele = self.getAnguloProfile(utc_adq=utc_adq,utc_ped_list=self.utc_ped_list) | |
|
4219 | #print("angulo**********",angulo) | |
|
4203 | 4220 | dataOut.flagNoData = False |
|
4204 | 4221 | if numpy.isnan(angulo) or numpy.isnan(angulo_ele) : |
|
4205 | 4222 | dataOut.flagNoData = True |
@@ -4356,12 +4373,13 class Block360(Operation): | |||
|
4356 | 4373 | if self.__dataReady: |
|
4357 | 4374 | dataOut.data_360 = data_360 # S |
|
4358 | 4375 | ##print("---------------------------------------------------------------------------------") |
|
4359 |
|
|
|
4376 | print("---------------------------DATAREADY---------------------------------------------") | |
|
4360 | 4377 | ##print("---------------------------------------------------------------------------------") |
|
4361 | 4378 | ##print("data_360",dataOut.data_360.shape) |
|
4362 | 4379 | dataOut.data_azi = data_p |
|
4363 | 4380 | dataOut.data_ele = data_e |
|
4364 | 4381 | #####print("azi: ",dataOut.data_azi) |
|
4382 | print("ele: ",dataOut.data_ele) | |
|
4365 | 4383 | #print("jroproc_parameters",data_p[0],data_p[-1])#,data_360.shape,avgdatatime) |
|
4366 | 4384 | dataOut.utctime = avgdatatime |
|
4367 | 4385 | dataOut.flagNoData = False |
@@ -1378,7 +1378,7 class PulsePair(Operation): | |||
|
1378 | 1378 | pair0 = pair0.real |
|
1379 | 1379 | lag_0 = numpy.sum(pair0,1) |
|
1380 | 1380 | #-----------------Calculo de Cscp------------------------------ New |
|
1381 |
cspc_pair01 = self.__buffer[0]* |
|
|
1381 | cspc_pair01 = self.__buffer[0]*self.__buffer[1] | |
|
1382 | 1382 | #------------------Calculo de Ruido x canal-------------------- |
|
1383 | 1383 | self.noise = numpy.zeros(self.__nch) |
|
1384 | 1384 | for i in range(self.__nch): |
@@ -1463,7 +1463,7 class PulsePair(Operation): | |||
|
1463 | 1463 | self.__lastdatatime = datatime |
|
1464 | 1464 | |
|
1465 | 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 | 1468 | avgdatatime = self.__initime |
|
1469 | 1469 | deltatime = datatime - self.__lastdatatime |
@@ -25,17 +25,25 controllerObj.setup(id = '191', name='Test_USRP', description=desc) | |||
|
25 | 25 | #path = '/media/data/data/vientos/57.2063km/echoes/NCO_Woodman' |
|
26 | 26 | #path = '/DATA_RM/TEST_INTEGRACION' |
|
27 | 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' | |
|
31 | figpath = '/home/soporte/Pictures/TEST_RP_6000' | |
|
32 | figpath = '/home/soporte/Pictures/USRP' | |
|
30 | path = '/DATA_RM/TEST_2M' | |
|
31 | path = '/DATA_RM/TEST_2M_UD' | |
|
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 | 41 | #remotefolder = "/home/wmaster/graficos" |
|
34 | 42 | ####################################################################### |
|
35 | 43 | ################# RANGO DE PLOTEO###################################### |
|
36 | 44 | ####################################################################### |
|
37 |
dBmin = ' |
|
|
38 |
dBmax = ' |
|
|
45 | dBmin = '20' | |
|
46 | dBmax = '60' | |
|
39 | 47 | xmin = '0' |
|
40 | 48 | xmax ='24' |
|
41 | 49 | ymin = '0' |
@@ -52,16 +60,16 yesterday = str2.strftime("%Y/%m/%d") | |||
|
52 | 60 | ####################################################################### |
|
53 | 61 | readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader', |
|
54 | 62 | path=path, |
|
55 |
startDate="202 |
|
|
56 |
endDate="202 |
|
|
57 |
startTime=' |
|
|
63 | startDate="2022/02/18",#today, | |
|
64 | endDate="2022/02/18",#today, | |
|
65 | startTime='00:00:00',# inicio libre | |
|
58 | 66 | #startTime='00:00:00', |
|
59 |
endTime=' |
|
|
67 | endTime='23:59:59', | |
|
60 | 68 | delay=0, |
|
61 | 69 | #set=0, |
|
62 |
online= |
|
|
70 | online=1, | |
|
63 | 71 | walk=1, |
|
64 |
ippKm = 60 |
|
|
72 | ippKm = 60) | |
|
65 | 73 | |
|
66 | 74 | opObj11 = readUnitConfObj.addOperation(name='printInfo') |
|
67 | 75 | #opObj11 = readUnitConfObj.addOperation(name='printNumberOfBlock') |
@@ -71,11 +79,24 opObj11 = readUnitConfObj.addOperation(name='printInfo') | |||
|
71 | 79 | |
|
72 | 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 | 95 | opObj11 = procUnitConfObjA.addOperation(name='selectHeights') |
|
75 | 96 | opObj11.addParameter(name='minIndex', value='1', format='int') |
|
76 | 97 |
|
|
77 | 98 | opObj11.addParameter(name='maxIndex', value='39980', format='int') |
|
78 | ||
|
99 | ''' | |
|
79 | 100 | # |
|
80 | 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 | 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 | 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 | 178 | ########## OPERACIONES DOMINIO DE LA FRECUENCIA######################## |
|
153 | 179 | ####################################################################### |
|
154 | 180 | |
|
155 |
|
|
|
156 |
|
|
|
157 |
|
|
|
158 | ||
|
181 | procUnitConfObjB = controllerObj.addProcUnit(datatype='SpectraProc', inputId=procUnitConfObjA.getId()) | |
|
182 | procUnitConfObjB.addParameter(name='nFFTPoints', value='32', format='int') | |
|
183 | procUnitConfObjB.addParameter(name='nProfiles', value='32', format='int') | |
|
184 | ''' | |
|
159 | 185 | procUnitConfObjC = controllerObj.addProcUnit(datatype='SpectraHeisProc', inputId=procUnitConfObjA.getId()) |
|
160 | 186 |
|
|
161 | 187 |
|
@@ -174,7 +200,8 opObj11.addParameter(name='n', value='100', format='int') | |||
|
174 | 200 |
|
|
175 | 201 |
|
|
176 | 202 |
|
|
177 | ||
|
203 | ''' | |
|
204 | ''' | |
|
178 | 205 | opObj11 = procUnitConfObjC.addOperation(name='SpectraHeisPlot') |
|
179 | 206 | opObj11.addParameter(name='id', value='10', format='int') |
|
180 | 207 | opObj11.addParameter(name='wintitle', value='Spectra_Alturas', format='str') |
@@ -189,7 +216,7 opObj11.addParameter(name='grid', value=True, format='bool') | |||
|
189 | 216 |
|
|
190 | 217 | opObj11.addParameter(name='save', value=figpath, format='str') |
|
191 | 218 |
|
|
192 | ||
|
219 | ''' | |
|
193 | 220 | ''' |
|
194 | 221 | opObj11 = procUnitConfObjC.addOperation(name='RTIHeisPlot') |
|
195 | 222 | opObj11.addParameter(name='id', value='10', format='int') |
@@ -204,7 +231,7 opObj11.addParameter(name='showprofile', value='1', format='int') | |||
|
204 | 231 | opObj11.addParameter(name='save', value=figpath, format='str') |
|
205 | 232 | opObj11.addParameter(name='save_period', value=10, format='int') |
|
206 | 233 | ''' |
|
207 | ''' | |
|
234 | ||
|
208 | 235 | #SpectraPlot |
|
209 | 236 | |
|
210 | 237 | opObj11 = procUnitConfObjB.addOperation(name='SpectraPlot', optype='external') |
@@ -220,6 +247,7 opObj11.addParameter(name='showprofile', value='1', format='int') | |||
|
220 | 247 | opObj11.addParameter(name='save', value=figpath, format='str') |
|
221 | 248 | opObj11.addParameter(name='save_period', value=10, format='int') |
|
222 | 249 | |
|
250 | ||
|
223 | 251 | #RTIPLOT |
|
224 | 252 | |
|
225 | 253 | opObj11 = procUnitConfObjB.addOperation(name='RTIPlot', optype='external') |
@@ -259,7 +287,7 opObj11.addParameter(name='save_period', value=10, format='int') | |||
|
259 | 287 |
|
|
260 | 288 |
|
|
261 | 289 |
|
|
262 | ||
|
290 | ''' | |
|
263 | 291 | ''' |
|
264 | 292 | ####################################################################### |
|
265 | 293 | ############### UNIDAD DE ESCRITURA ################################### |
@@ -16,6 +16,7 print("[SETUP]-RADAR METEOROLOGICO-") | |||
|
16 | 16 | path_ped = "/DATA_RM/TEST_PEDESTAL/P20211111-173856" |
|
17 | 17 | print("PATH PEDESTAL :",path_ped) |
|
18 | 18 | path_adq = "/DATA_RM/11" |
|
19 | path_adq = "/DATA_RM/10MHZDRONE/" | |
|
19 | 20 | print("PATH DATA :",path_adq) |
|
20 | 21 | |
|
21 | 22 | |
@@ -60,9 +61,9 n= int(1/(VEL*ipp_sec)) | |||
|
60 | 61 | print("N° Profiles : ", n) |
|
61 | 62 | #--------------------------------------------------------------------------------------- |
|
62 | 63 | plot_rti = 0 |
|
63 |
plot_ppi = |
|
|
64 | plot_ppi = 1 | |
|
64 | 65 | integration = 1 |
|
65 |
save = |
|
|
66 | save = 0 | |
|
66 | 67 | #---------------------------RANGO DE PLOTEO---------------------------------- |
|
67 | 68 | dBmin = '1' |
|
68 | 69 | dBmax = '85' |
@@ -94,9 +95,9 controllerObj.setup(id = '191', name='Test_USRP', description=desc) | |||
|
94 | 95 | #---------------------UNIDAD DE LECTURA-------------------------------- |
|
95 | 96 | readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader', |
|
96 | 97 | path=path_adq, |
|
97 |
startDate="202 |
|
|
98 |
endDate="202 |
|
|
99 |
startTime=' |
|
|
98 | startDate="2022/02/19",#today, | |
|
99 | endDate="2022/02/18",#today, | |
|
100 | startTime='00:00:00', | |
|
100 | 101 | endTime='23:59:59', |
|
101 | 102 | delay=0, |
|
102 | 103 | #set=0, |
@@ -18,8 +18,10 from schainpy.controller import Project | |||
|
18 | 18 | #----------------------------------------------------------------------------------------- |
|
19 | 19 | print("[SETUP]-RADAR METEOROLOGICO-") |
|
20 | 20 | path_ped = "/DATA_RM/TEST_PEDESTAL/P20211123-143826" |
|
21 | path_ped = "/DATA_RM/TEST_PEDESTAL/P20220217-172216" | |
|
21 | 22 | print("PATH PEDESTAL :",path_ped) |
|
22 | 23 | path_adq = "/DATA_RM/DRONE/2MHZ_5V_ELEVACION/" |
|
24 | path_adq = "/DATA_RM/2MHZTEST/" | |
|
23 | 25 | print("PATH DATA :",path_adq) |
|
24 | 26 | figpath_pp_rti = "/home/soporte/Pictures/TEST_PP_RHI" |
|
25 | 27 | print("PATH PP RTI :",figpath_pp_rti) |
@@ -44,7 +46,7 else: | |||
|
44 | 46 | ff_pedestal = list_ped[2] |
|
45 | 47 | ele_vel = getDatavaluefromDirFilename(path=path_ped,file=ff_pedestal,value="ele_vel") |
|
46 | 48 | V = round(ele_vel[0]) |
|
47 | V = 10.0 | |
|
49 | V = 8.0#10.0 | |
|
48 | 50 | print("VELOCIDAD ELE :", int(numpy.mean(ele_vel)),"°/seg") |
|
49 | 51 | print(" ") |
|
50 | 52 | #--------------------------------------------------------------------------------------- |
@@ -83,9 +85,9 controllerObj.setup(id = '191', name='Test_USRP', description=desc) | |||
|
83 | 85 | #---------------------UNIDAD DE LECTURA-------------------------------- |
|
84 | 86 | readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader', |
|
85 | 87 | path=path_adq, |
|
86 |
startDate="202 |
|
|
87 |
endDate="202 |
|
|
88 |
startTime=' |
|
|
88 | startDate="2022/02/17",#today, | |
|
89 | endDate="2022/02/17",#today, | |
|
90 | startTime='00:00:00', | |
|
89 | 91 | endTime='23:59:59', |
|
90 | 92 | delay=0, |
|
91 | 93 | #set=0, |
@@ -109,6 +111,7 if mode_proc==0: | |||
|
109 | 111 | opObj11 = procUnitConfObjB.addOperation(name='PedestalInformation') |
|
110 | 112 | opObj11.addParameter(name='path_ped', value=path_ped) |
|
111 | 113 | opObj11.addParameter(name='t_Interval_p', value='0.01', format='float') |
|
114 | opObj11.addParameter(name='wr_exp', value='RHI') | |
|
112 | 115 | |
|
113 | 116 | if plot_rhi==1: |
|
114 | 117 | opObj11 = procUnitConfObjB.addOperation(name='Block360') |
@@ -16,6 +16,7 path_ped = '/DATA_RM/TEST_PEDESTAL/P20211020-131248' | |||
|
16 | 16 | path_ped = '/DATA_RM/TEST_PEDESTAL/P20211110-171003' |
|
17 | 17 | path_ped = '/DATA_RM/TEST_PEDESTAL/P20211111-173856' |
|
18 | 18 | path_ped = '/DATA_RM/TEST_PEDESTAL/P20211123-143826' |
|
19 | path_ped = "/DATA_RM/TEST_PEDESTAL/P20220217-172216" | |
|
19 | 20 | #path_ped = '/DATA_RM/TEST_PEDESTAL/P20211111-173409' |
|
20 | 21 | # Metodo para verificar numero |
|
21 | 22 | def isNumber(str): |
@@ -48,7 +49,7 for i in range(m): | |||
|
48 | 49 | tmp_azi_pos = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="azi_pos") |
|
49 | 50 | tmp_ele_pos = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="ele_pos") |
|
50 | 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=" |
|
|
52 | tmp_ele_vel = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="ele_vel")# nuevo :D | |
|
52 | 53 | |
|
53 | 54 | time_[i] = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="utc") |
|
54 | 55 | |
@@ -72,8 +73,10 z=0 | |||
|
72 | 73 | # CONDICION POR LEER EN TIEMPO REAL NO OFFLINE |
|
73 | 74 | |
|
74 | 75 | for filename in LIST: |
|
75 | 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") | |
|
76 | #tmp_azi_pos = getDatavaluefromDirFilename(path=path_ped,file=filename,value="azi_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 | 80 | # CONDICION POR LEER EN TIEMPO REAL NO OFFLINE |
|
78 | 81 | |
|
79 | 82 | if z==(m-1): |
General Comments 0
You need to be logged in to leave comments.
Login now