admin管理员组

文章数量:1552323

2024年1月31日发(作者:)

pass else: (dataBuff) if self.m_InfoLevel>1: print "x0,xn:",x0,xn print "datacount(read,get):",dataOption[0],len(dataDiff)

#value from diff if len(dataDiff)>0 : v=self.x0 (self.x0) (0) ('b') for i in range(1,len(dataDiff)): v+=dataDiff[i] (v) ("m")

#hits=100,btime step=10000/hits=100,microseconds step=10000 msc=10000*i msv=msc%1000000 sv=msc/1000000 td=lta(seconds=sv,microseconds=msv)

dt1=0+td (dt1) dataTimeFlag[len(dataDiff)-1]='e'

##!! #must match for data count if len(dataDiff)!=dataOption[0]: print "data count from parsing error(fromFile,parse):",dataOption[0],len(dataDiff) ()

return (dataDiff,dataVal,dataTime,dataTimeFlag,True)

def _frame_getW0Ck(self,w0): w0ck=[] w0b=bin(w0) bn=len(w0b)-2 #remove 0b ck='0'*(32-bn)+w0b[2:] for i in range(0,16): (ck[i*2:(i+1)*2]) return w0ck

def _parse2_Dnib4Ck11(self,val): vals=[] h2=(val>>30)&0x3 nv=0; bits=0 if h2==0: #6bit*5 bits=6; nv=5; m1 = 0x0000003f

if h2==1: #5bit*6 bits=5; nv=6; m1 = 0x0000001f

if h2==2: #4bit*7 bits=4; nv=7; m1 = 0x0000000f;

for i in range(0,nv): ((val>>(bits*i))&m1)

for i in range(len(vals)): if vals[i]>(2**bits)/2: vals[i]=vals[i]-(2**bits)

##print valW,bin(valW)

e() ##print "##(dnib-11)h2,vals:",h2,vals

return vals

def _parse2_Dnib4Ck10(self,val): vals=[] h2=(val>>30)&0x3 nv=0; bits=0 if h2==1: #30bit*1 ?? ==1 bits=30; nv=1; m1 = 0x3fffffff

#print "30bit:",val,bin(val) #()

if h2==2: #15bit*2 bits=15; nv=2; m1 = 0x00007fff

if h2==3: #10bit*3 bits=10; nv=3; m1 = 0x000003ff;

for i in range(0,nv): ((val>>(bits*i))&m1)

#sign for i in range(len(vals)): if vals[i]>(2**bits)/2: vals[i]=vals[i]-(2**bits)

##print valW,bin(valW) e() ##print "##(dnib-10)h2,vals:",h2,vals return vals

def _parse2_Byte1x4(self,val): vals=[] bits=8; nv=4; m1 = 0x000000ff;

for i in range(0,nv): ((val>>(bits*i))&m1)

for i in range(len(vals)): if vals[i]>(2**bits)/2: vals[i]=vals[i]-(2**bits)

##print valW,bin(valW) e() ##print "byte1x4",vals return vals

def _parse_package(self,valW,ck): vals0=[] if ck=='00': pass #print "ck=0" #()

if ck=='01': #1byte*4 vals0=self._parse2_Byte1x4(valW) ''' #ok,ok, same as cpp code sFmt='>bbbb' #sFmt_byte1='>bbbb' valBin=('>i',valW)

vals=(sFmt,valBin) vals0=list(vals) print valW print "ck,vals",ck,vals '''

if ck=='10':

vals0=self._parse2_Dnib4Ck10(valW) if ck=="11": vals0=self._parse2_Dnib4Ck11(valW) return vals0

#ok def _parse_frame0(self,sFrame): lineFlag=sFrame[:8] lineData=sFrame[8:] sSta=lineData[:5] sPos=lineData[5:7] sChn=lineData[7:10] sNet=lineData[10:12] sFmtBTime='>HHBBBBH' sFmtDataHeader='>HhhBBBBiHH' hdrDataBtime=lineData[12:22] hdrDataOption=lineData[22:40] dataBtime=(sFmtBTime,hdrDataBtime) dataOption=(sFmtDataHeader,hdrDataOption) return (dataBtime,dataOption,{'sta':sSta,'pos':sPos,'chn':sChn,'net':sNet,'flag':lineFlag})

#ok

def _parse_frame1(self,sFrame): dataBuff=[] Wn=('>Iii'+'i'*13,sFrame) w0=Wn[0] self.x0=Wn[1] =Wn[2] w0ck=self._frame_getW0Ck(w0) #print 'w0ck:',w0ck #print 'Wn:',Wn

for i in range(3,16): vals=self._parse_package(Wn[i],w0ck[i]) if not vals: pass else: (vals) return dataBuff

def _parse_frame(self,sFrame): dataBuff=[] Wn=('>I'+'i'*15,sFrame) w0=Wn[0] #maybe not exist data if w0>0 :

w0ck=self._frame_getW0Ck(w0) #print 'w0',w0ck #print 'Wn:',Wn

for i in range(1,16): vals=self._parse_package(Wn[i],w0ck[i]) if not vals: pass else:

(vals) return (dataBuff,1)

else: return (dataBuff,0)

class mseed_reader: ''' seed file read/write. 2013-06-20 by WangBin. '''

#ok def read(self,sFile): self.m_mseedfile=sFile #try f=open(sFile,'rb') n_all=() ()

self.g_dataDiff=[] self.g_dataVal=[] self.g_dataTime=[] self.g_dataTimeFlag=[] _bin_ok=True return True

def exportSacFile(self,sSacFile,pydatetimeFrom,pydatetimeTo,bBin): #export to sac file

#find gap fsac=open("d:","wt") dc=len(self.g_dataTimeFlag) for i in range(1,dc): #skip first b if self.g_dataTimeFlag[i]=='b': dt1=self.g_dataTime[i] dt0=self.g_dataTime[i-1] ts0=dt1-dt0 #hits=100 #if (s>0) or (econds>10000): ?? if _seconds()>0.01: (str(i)+"n") else: pass ()

if bBin==True: pass

if bBin==False: pass

def parseData(self,infoLevel): self.m_InfoLevel=infoLevel idxData=0 blocksize=512 self.g_dataDiff=[] self.g_dataVal=[]

self.g_dataTime=[] self.g_dataTimeFlag=[]

while True: recordBin=n_all[blocksize*idxData:blocksize*(idxData+1)] #seed=4096,mseed=512 if not recordBin: print ""

break;

if recordBin[6]=='D':

mrs=mseed_record_parser() (dataDiff,dataVal,dataTime,dataTimeFlag,result)=(recordBin,infoLevel)

if result==True: self.g_(dataDiff) self.g_(dataVal) self.g_(dataTime) self.g_(dataTimeFlag)

idxData=idxData+1

_ok=True

if self.m_InfoLevel==0: print "record,data count:",idxData,len(self.g_dataDiff)

def _export_temp(self): #export to file if len(self.g_dataDiff)>0 : #diff f3=open(self.m_mseedfile+"_","wt") for i in range(len(self.g_dataDiff)): (str(self.g_dataDiff[i])+'n') ()

if len(self.g_dataVal)>0 : #value

f4=open(self.m_mseedfile+"_","wt") for v in range(len(self.g_dataVal)): (self.g_dataTimeFlag[v]+" "+self.g_dataTime[v].strftime('%Y-%m-%d %H.%M.%S %f')+" "+str(self.g_dataVal[v])+'n') #(str(self.g_dataVal[v])+'n') ()

def plot(self): (1) npts=len(self.g_dataVal) (range(1,npts+1),self.g_dataVal,linewidth=0.3) g(self.m_mseedfile+".") ()if __name__=='__main__': ''' g_InfoLevel: 0=rec count,data count; 1=rec-index,net,station; 2=frame0,x0,xn,datacount; 3=

''' g_InfoLevel=0

mseed=mseed_reader()

sFile='d:data_.D.2013.001' (sFile) ata(g_InfoLevel) #mseed._export_temp() #() sSacFile="d:" dt0=me(2013,01,01,0,0,1) dt1=me(2013,01,01,23,59,59) bBin=True

SacFile(sSacFile,dt0,dt1,bBin)

本文标签: 读取格式文件