##// END OF EJS Templates
update WeatherRadar
update WeatherRadar

File last commit:

r1427:6570b3c66916
r1508:6520a1ac8270
Show More
wr_marzo_v1_002.py
188 lines | 8.4 KiB | text/x-python | PythonLexer
# Ing. AVP
# 06/10/2021
# ARCHIVO DE LECTURA
import os, sys
import datetime
import time
from schainpy.controller import Project
#### NOTA###########################################
# INPUT :
# VELOCIDAD PARAMETRO : V = 2°/seg
# MODO PULSE PAIR O MOMENTOS: 0 : Pulse Pair ,1 : Momentos
######################################################
##### PROCESAMIENTO ##################################
##### OJO TENER EN CUENTA EL n= para el Pulse Pair ##
##### O EL n= nFFTPoints ###
######################################################
######## BUSCAMOS EL numero de IPP equivalente 1°#####
######## Sea V la velocidad del Pedestal en °/seg#####
######## 1° sera Recorrido en un tiempo de 1/V ######
######## IPP del Radar 400 useg --> 60 Km ############
######## n = 1/(V(°/seg)*IPP(Km)) , NUMERO DE IPP ##
######## n = 1/(V*IPP) #############################
#-------------------------VELOCIDAD DEL PEDESTAL Y MODO ------------------------
print("SETUP- RADAR METEOROLOGICO")
IPP = 400*1e-6
V = 12
samp_rate = 10# VERIFICAR
MODE_TABLE = 1 # PUEDE SER 1 sO 0
AXIS = [1,1,1,1] # AZIMUTH 1 ELEVACION 0
SPEED_AXIS = [10,10,10,10] # VELOCIDAD
ANGLE_AXIS = [20,25,30,15] # ANGULOS
mode_proc = 0
#-----------------------------PATH ADQ Y PEDESTAL-------------------------------
path = "/DATA_RM/DRONE2"
path_ped = "/DATA_RM/TEST_PEDESTAL/P20220329-174143"
#-------------------------------------------------------------------------------
figpath_pp = "/home/soporte/Pictures/MARTES_29_PP_10M_.1us"
figpath_spec = "/home/soporte/Pictures/MARTES_29_10M_.1us"
figpath_pp_ppi = "/home/soporte/Pictures/MARTES_29_10M_.1us_PPI"
#--------------------------OPCIONES---------------------------------------------
plot = 1
plot_ppi = 1
integration = 1
save = 0
plot_spec = 0
#---------------------------SAVE HDF5 PROCESADO/--------------------------------
if save == 1:
if mode_proc==0:
path_save = '/DATA_RM/TEST_HDF5_PP_MAR22/6v'
else:
path_save = '/DATA_RM/TEST_HDF5_SPEC_MAR22/6v'
print("[SETUP]-RADAR METEOROLOGICO-")
print("* PATH data ADQ :", path)
print("* PATH data PED :", path_ped)
print("* SAMPLE RATE ADQ Mhz :", samp_rate)
print("* Velocidad Pedestal :",V,"°/seg")
print("* Configuracion del Pedestal *")
print("*** AXIS :",AXIS)
print("*** SPEED_AXIS:",SPEED_AXIS)
print("*** ANGLE_AXIS:",ANGLE_AXIS)
num_alturas = int(samp_rate*IPP*1e6)
print("* Nro de Altura :",num_alturas)
############################ NRO Perfiles PROCESAMIENTO ###################
V=V
n= int(1/(V*IPP))
print("* n - NRO Perfiles Proc:", n )
################################## MODE ###################################
print("* Modo de Operacion :",mode_proc)
if mode_proc ==0:
print("* Met. Seleccionado : Pulse Pair")
else:
print("* Met. Momentos : Momentos")
################################## MODE ###################################
print("* Grabado de datos :",save)
if save ==1:
if mode_proc==0:
print("[ ON ] MODE PULSEPAIR")
else:
print("[ ON ] MODE FREQUENCY")
print("* Integracion de datos :",integration)
print("* Ploteo de datos Parameters:", plot)
if plot==1:
print("* Path PP plot :", figpath_pp )
if plot_ppi==1:
print("* Path PPI plot :", figpath_pp_ppi )
time.sleep(5)
#remotefolder = "/home/wmaster/graficos"
################# RANGO DE PLOTEO######################################
dBmin = '20'
dBmax = '80'
xmin = '17.6' #17.1,17.5
xmax = '17.9' #17.2,17.8
ymin = '0' #### PONER A 0
ymax = '8' #### PONER A 8
########################FECHA##########################################
str1 = datetime.date.today()
today = str1.strftime("%Y/%m/%d")
str2 = str1 - datetime.timedelta(days=1)
yesterday = str2.strftime("%Y/%m/%d")
#------------------------SIGNAL CHAIN-------------------------------------------
desc = "USRP_test"
filename = "USRP_processing.xml"
controllerObj = Project()
controllerObj.setup(id = '191', name='Test_USRP', description=desc)
#------------------------ UNIDAD DE LECTURA-------------------------------------
readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader',
path=path,
startDate="2022/03/29",#today,
endDate="2022/03/29",#today,
startTime='17:40:00',#'17:39:25',
endTime='23:59:59',#23:59:59',
delay=0,
#set=0,
online=0,
walk=1,
ippKm = 60,
getByBlock=1,
nProfileBlocks=250)
opObj11 = readUnitConfObj.addOperation(name='printInfo')
procUnitConfObjA = controllerObj.addProcUnit(datatype='VoltageProc', inputId=readUnitConfObj.getId())
###opObj11 = procUnitConfObjA.addOperation(name='setH0')
###opObj11.addParameter(name='h0', value='-1.5', format='float')
opObj11 = procUnitConfObjA.addOperation(name='selectHeights')
opObj11.addParameter(name='minIndex', value='1', format='int')
#opObj11.addParameter(name='maxIndex', value='1000', format='int')
#opObj11.addParameter(name='maxIndex', value=str(int(num_alturas/4.0)), format='int')
# CUARTA PARTE de 60 Km POR ESO ENTRE 4 - 15 Km
opObj11.addParameter(name='maxIndex', value=str(int(num_alturas/10.0)), format='int')
# CUARTA PARTE de 60 Km POR ESO ENTRE 10 - 6 Km
if mode_proc ==0:
####################### METODO PULSE PAIR ######################################################################
opObj11 = procUnitConfObjA.addOperation(name='PulsePair', optype='other')
opObj11.addParameter(name='n', value=int(n), format='int')#10 VOY A USAR 250 DADO QUE LA VELOCIDAD ES 10 GRADOS
#opObj11.addParameter(name='removeDC', value=1, format='int')
####################### METODO Parametros ######################################################################
procUnitConfObjB= controllerObj.addProcUnit(datatype='ParametersProc',inputId=procUnitConfObjA.getId())
if plot==1:
opObj11 = procUnitConfObjB.addOperation(name='GenericRTIPlot',optype='external')
opObj11.addParameter(name='attr_data', value='dataPP_POWER')
opObj11.addParameter(name='colormap', value='jet')
opObj11.addParameter(name='xmin', value=xmin)
opObj11.addParameter(name='xmax', value=xmax)
#opObj11.addParameter(name='ymin', value=ymin)
#opObj11.addParameter(name='ymax', value=ymax)
opObj11.addParameter(name='zmin', value=dBmin)
opObj11.addParameter(name='zmax', value=dBmax)
opObj11.addParameter(name='save', value=figpath_pp)
opObj11.addParameter(name='showprofile', value=0)
opObj11.addParameter(name='save_period', value=10)
####################### METODO ESCRITURA #######################################################################
if save==1:
opObj10 = procUnitConfObjB.addOperation(name='HDFWriter')
opObj10.addParameter(name='path',value=path_save)
#opObj10.addParameter(name='mode',value=0)
opObj10.addParameter(name='blocksPerFile',value='100',format='int')
opObj10.addParameter(name='metadataList',value='utctimeInit,timeZone,paramInterval,profileIndex,channelList,heightList,flagDataAsBlock',format='list')
opObj10.addParhirameter(name='dataList',value='dataPP_POWER,dataPP_DOP,utctime',format='list')#,format='list'
if integration==1:
opObj11 = procUnitConfObjB.addOperation(name='PedestalInformation')
opObj11.addParameter(name='path_ped', value=path_ped)
opObj11.addParameter(name='t_Interval_p', value='0.01', format='float')
opObj11.addParameter(name='wr_exp', value='PPI')
if plot_ppi==1:
opObj11 = procUnitConfObjB.addOperation(name='Block360')
opObj11.addParameter(name='n', value='10', format='int')
opObj11.addParameter(name='mode', value=mode_proc, format='int')
# este bloque funciona bien con divisores de 360 no olvidar 0 10 20 30 40 60 90 120 180
opObj11= procUnitConfObjB.addOperation(name='WeatherPlot',optype='other')
opObj11.addParameter(name='save', value=figpath_pp_ppi)
opObj11.addParameter(name='save_period', value=1)
controllerObj.start()