From 65ae6ea47e4eef4beb6527d8f0c56fcfaa3f6dab 2012-09-18 15:08:01 From: Daniel Valdez Date: 2012-09-18 15:08:01 Subject: [PATCH] Hasta el momento se realiza la lectura de Rawdata --- diff --git a/schainpy2/Data/Spectra.py b/schainpy2/Data/Spectra.py new file mode 100644 index 0000000..81500fa --- /dev/null +++ b/schainpy2/Data/Spectra.py @@ -0,0 +1,60 @@ +import os, sys +import numpy + +path = os.path.split(os.getcwd())[0] +sys.path.append(path) + +from JROData import JROData +from IO.JROHeader import SystemHeader, RadarControllerHeader + +class Spectra(JROData): + data_spc = None + + data_cspc = None + + data_dc = None + + nFFTPoints = None + + nPairs = None + + pairsList = None + + nIncohInt = None + + def __init__(self): + ''' + Constructor + ''' + + self.m_RadarControllerHeader = RadarControllerHeader() + + self.m_SystemHeader = SystemHeader() + + self.type = "Spectra" + + #data es un numpy array de 2 dmensiones ( canales, alturas) +# self.data = None + + self.dtype = None + + self.nChannels = 0 + + self.nHeights = 0 + + self.nProfiles = None + + self.heightList = None + + self.channelList = None + + self.channelIndexList = None + + self.flagNoData = True + + self.flagTimeBlock = False + + self.dataUtcTime = None + + self.nIncohInt = None + \ No newline at end of file diff --git a/schainpy2/Data/Voltage.py b/schainpy2/Data/Voltage.py index 5161637..4cd00fe 100644 --- a/schainpy2/Data/Voltage.py +++ b/schainpy2/Data/Voltage.py @@ -46,7 +46,3 @@ class Voltage(JROData): self.dataUtcTime = None self.nCohInt = None - - - - \ No newline at end of file diff --git a/schainpy2/IO/JRODataIO.py b/schainpy2/IO/JRODataIO.py index 95b1c47..1c65d5a 100644 --- a/schainpy2/IO/JRODataIO.py +++ b/schainpy2/IO/JRODataIO.py @@ -11,6 +11,25 @@ sys.path.append(path) from JROHeader import * from Data.JROData import JROData +def isNumber(str): + """ + Chequea si el conjunto de caracteres que componen un string puede ser convertidos a un numero. + + Excepciones: + Si un determinado string no puede ser convertido a numero + Input: + str, string al cual se le analiza para determinar si convertible a un numero o no + + Return: + True : si el string es uno numerico + False : no es un string numerico + """ + try: + float( str ) + return True + except: + return False + def isThisFileinRange(filename, startUTSeconds, endUTSeconds): """ Esta funcion determina si un archivo de datos se encuentra o no dentro del rango de fecha especificado. @@ -108,6 +127,10 @@ class JRODataIO: nTotalBlocks = None + maxTimeStep = 30 + + lastUTTime = None + def __init__(self): pass @@ -237,7 +260,7 @@ class JRODataReader(JRODataIO): return None - self.updateDataHeader() +# self.updateDataHeader() return self.dataOutObj @@ -288,6 +311,43 @@ class JRODataReader(JRODataIO): self.nReadBlocks = 0 return 1 + def __setNewBlock(self): + if self.fp == None: + return 0 + + if self.flagIsNewFile: + return 1 + + self.lastUTTime = self.basicHeaderObj.utc + currentSize = self.fileSize - self.fp.tell() + neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize + + if (currentSize >= neededSize): + self.__rdBasicHeader() + return 1 + + if not(self.setNextFile()): + return 0 + + deltaTime = self.basicHeaderObj.utc - self.lastUTTime # + + self.flagTimeBlock = 0 + + if deltaTime > self.maxTimeStep: + self.flagTimeBlock = 1 + + return 1 + + + def readNextBlock(self): + if not(self.__setNewBlock()): + return 0 + + if not(self.readBlock()): + return 0 + + return 1 + def __rdProcessingHeader(self, fp=None): if fp == None: fp = self.fp diff --git a/schainpy2/IO/JROHeader.py b/schainpy2/IO/JROHeader.py index d799ec6..48b784f 100644 --- a/schainpy2/IO/JROHeader.py +++ b/schainpy2/IO/JROHeader.py @@ -189,7 +189,7 @@ class RadarControllerHeader(Header): self.samplingWindowStruct = numpy.dtype([('h0','