' '---------------------------- '--- creation information --- '---------------------------- ' 'Name: timeave.ave 'Version: 1.0 'Date: 03/09/97 'Author: Ferdi Hellweger ' Center for Research in Water Resources ' The University of Texas at Austin ' ferdi@crwr.utexas.edu ' www.ce.utexas.edu/stu/ferdi/ ' '--------------------------- '--- purpose/description --- '--------------------------- ' 'This is a time averaging utility for sample data. ' '----------------- '--- get table --- '----------------- ' intable = av.getactivedoc ' '-------------------- '--- set up table --- '-------------------- ' invtab = intable.getvtab insegidf = invtab.findfield("segid") indatef = invtab.findfield("date") inmsmtf = invtab.findfield("msmt") ' '--------------------------- '--- set up output table --- '--------------------------- ' outfilenamestring = msgbox.input("Output file name", "WARDIMP", "c:\warddata\wqsalsur3.dbf") outfilename = filename.make(outfilenamestring) outvtab = vtab.makenew(outfilename, dBASE) outfields = list.make outsegidf = field.make("segid", #FIELD_CHAR, 4, 0) outavef = field.make("ave", #FIELD_DECIMAL, 16, 4) outnvalf = field.make("nval", #FIELD_DECIMAL, 16, 4) outfields = outfields.add(outsegidf) outfields = outfields.add(outavef) outfields = outfields.add(outnvalf) outvtab.addfields(outfields) outvtab.seteditable(true) ' '-------------------- '--- process data --- '-------------------- ' 'algorithm assumes data in chronological order ' 'time handled as decimal years, due to problem with early, ca. 68 dates 'arcview crashes ' nval = 0 tottime = 0 totweight = 0 thissegid = invtab.returnvalue(insegidf, 0) 'datestring = invtab.returnvalue(indatef, 0).asstring.Split({2,4}, ":") 'lastdate = date.make(datestring, "yy:MM:dd") datestr = invtab.returnvalue(indatef, 0).asstring datenum1 = datestr.left(2).asnumber datenum2 = datestr.left(4).right(2).asnumber / 12 datenum3 = datestr.right(2).asnumber / 30 / 12 datenum = datenum1 + datenum2 + datenum3 lastdate = datenum.clone for each inrec in invtab insegid = invtab.returnvalue(insegidf, inrec) datestr = invtab.returnvalue(indatef, inrec).asstring datenum1 = datestr.left(2).asnumber datenum2 = datestr.left(4).right(2).asnumber / 12 datenum3 = datestr.right(2).asnumber / 30 / 12 datenum = datenum1.clone + datenum2.clone + datenum3.clone indate = datenum.clone inmsmt = invtab.returnvalue(inmsmtf, inrec) if (thissegid <> insegid) then ave = totweight.clone / tottime.clone ' message = "thissegid = " + thissegid.asstring ' message = message + nl + "insegid = " + insegid.asstring ' message = message + nl + "nval = " + nval.asstring ' message = message + nl + "totweight = " + totweight.asstring ' message = message + nl + "tottime = " + tottime.asstring ' message = message + nl + "ave = " + ave.asstring ' keepgoing = msgbox.yesno(message, "WARDIMP", true) ' if (not keepgoing) then ' exit ' end outrec = outvtab.addrecord outvtab.setvalue(outsegidf, outrec, thissegid.clone) outvtab.setvalue(outavef, outrec, ave.clone) outvtab.setvalue(outnvalf, outrec, nval.clone) nval = 0 tottime = 0 totweight = 0 thissegid = insegid.clone lastdate = indate.clone end mytime = indate - lastdate ' message = "indate = " + indate.asstring ' keepgoing = msgbox.yesno(message, "WARDIMP", true) ' if (not keepgoing) then ' exit ' end weight = mytime.clone * inmsmt.clone nval = nval.clone + 1 tottime = tottime.clone + mytime.clone totweight = totweight.clone + weight.clone lastdate = indate.clone end ' 'close up ' msgbox.info("Averages calculated", "WARDIMP") ' 'end '