예제 #1
0
def createXMRGSummaryFiles(configFile):
  
  try:
    
    xmrgData = dhecXMRGProcessing(configFile)
    db = dhecDB(xmrgData.configSettings.dbSettings['dbName'], xmrgData.configSettings.loggerName)
    if(db.logger != None):
      db.logger.debug("Beginning createXMRGSummaryFiles");
    else:
      print("Beginning createXMRGSummaryFiles")      
    outputDirectory = xmrgData.configSettings.getEntry('//xmrgData/processingSettings/summaryDirectory')
    if(outputDirectory == None or len(outputDirectory) == 0):
      if(db.logger != None):
        db.logger.error("No output directory given in config file for //xmrgData/processingSettings/summaryDirectory. Cannot continue.")
      else:
        print("No output directory given in config file for //xmrgData/processingSettings/summaryDirectory. Cannot continue.")      
          
    #Starting date is yesterday at 12am. We take the current date and subtract a day, then set time to 12am.
    dateTime = (time.mktime(time.localtime()) - (24 * 3600))
    dateTime = time.localtime(dateTime)
    #now set the hour,min,second to 12am(00:00:00)
    dateTime = time.struct_time((dateTime[0],dateTime[1],dateTime[2],0,0,0,0,0,0))
    #Now finally let's get the UTC time.
    localTime = time.strftime("%Y-%m-%d_%H-%M-%S", dateTime)
    dateTime = time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime(time.mktime(dateTime)))
    rgCursor = db.getRainGauges();
    for row in rgCursor:    
      platformHandle = row['platform_handle']
      shortName = row['short_name']
      if(db.logger != None):
        db.logger.debug("Processing %s" %(platformHandle));
      else:
        print("Processing %s" %(platformHandle))      

      #Open the output file.
      fileName = "%s/%s-%s.csv" %(outputDirectory, shortName,localTime)
      if(db.logger != None):
        db.logger.debug("Opening output file %s" %(fileName));
      else:
        print("Opening output file %s" %(fileName))      
      outFile = open(fileName, "w")

      xmrgData = db.createXMRGStats(dateTime, shortName)
      #Loop through and convert values to strings.
      for key in xmrgData:
        xmrgData[key] = ("" if xmrgData[key] == None else str(xmrgData[key])) 
      outbuf = ''
      header = '';
      if(shortName == 'nmb1'):
        header = ''
        outbuf = ''
      
      elif(shortName == 'nmb2'):
        header = 'Sum past 6 days rainfall'
        outbuf = xmrgData['radarSum144']
      
      elif(shortName == 'nmb3'):
        header = "Yesterday's rainfall,Intensity of yesterday's rain,Sum past 2 days rainfall,Sum past 6 days rainfall"
        outbuf = "%s,%s,%s,%s" %\
        (xmrgData['radarSum24'],
         xmrgData['radarIntensity'],
         xmrgData['radarSum48'],
         xmrgData['radarSum144'])
      
      elif(shortName == 'mb1'):
        header = "Yesterday's rainfall,Intensity of yesterday's rain,# Previous dry days,Two day delay rain,Sum past 2 days rainfall"
        outbuf = "%s,%s,%s,%s,%s"\
           % (xmrgData['radarSum24'],
              xmrgData['radarIntensity'],
              xmrgData['radarDryCnt'],
              xmrgData['radarsum2daydelay'],
              xmrgData['radarSum48'])
      
      elif(shortName == 'mb2'):
        header = "Yesterday's rainfall,Intensity of yesterday's rain,# Previous dry days,One day delay rain,Sum past 6 days rainfall"
        outbuf = "%s,%s,%s,%s,%s"\
        % (xmrgData['radarSum24'],
           xmrgData['radarIntensity'],
           xmrgData['radarDryCnt'],
           xmrgData['radarsum1daydelay'],
           xmrgData['radarSum144'])
      
      elif(shortName == 'mb3'):
        header = "Yesterday's rainfall,Intensity of yesterday's rain,One day delay rain,Sum past 3 days rainfall,Sum past 6 days rainfall,Sum past 7 days rainfall"
        outbuf = "%s,%s,%s,%s,%s,%s"\
        % (xmrgData['radarSum24'],
           xmrgData['radarIntensity'],
           xmrgData['radarsum1daydelay'],
           xmrgData['radarSum72'],
           xmrgData['radarSum144'],
           xmrgData['radarSum168'])
  
      elif(shortName == 'mb4'):
        header = "Yesterday's rainfall,Intensity of yesterday's rain,# Previous dry days,Two day delay rain,Three day delay rain,Sum past 2 days rainfall,Sum past 3 days rainfall,Sum past 7 days rainfall"
        outbuf = "%s,%s,%s,%s,%s,%s,%s,%s" \
        % (xmrgData['radarSum24'],
           xmrgData['radarIntensity'],
           xmrgData['radarDryCnt'],
           xmrgData['radarsum2daydelay'],
           xmrgData['radarsum3daydelay'],
           xmrgData['radarSum48'],
           xmrgData['radarSum72'],
           xmrgData['radarSum168'])
  
      elif(shortName == 'surfside'):
        header = "Yesterday's rainfall,Intensity of yesterday's rain,# Previous dry days,Two day delay rain,Sum past 2 days rainfall,Sum past 3 days rainfall,Sum past 4 days rainfall,Sum past 5 days rainfall,Sum past 6 days rainfall"
        outbuf = "%s,%s,%s,%s,%s,%s,%s,%s,%s"\
        %( xmrgData['radarSum24'],
           xmrgData['radarIntensity'],
           xmrgData['radarDryCnt'],
           xmrgData['radarsum2daydelay'],
           xmrgData['radarSum48'],
           xmrgData['radarSum72'],
           xmrgData['radarSum96'],
           xmrgData['radarSum120'],
           xmrgData['radarSum144'])
        
      elif(shortName == 'gardcty'):
        header = "Yesterday's rainfall,Intensity of yesterday's rain,Sum past 5 days rainfall"
        outbuf = "%s,%s,%s"\
        %(xmrgData['radarSum24'],
          xmrgData['radarIntensity'],
          xmrgData['radarSum120'])
        
      outFile.write(header + "\n")
      outFile.write(outbuf + "\n")
      if(db.logger != None):
        db.logger.debug("Closing output file %s" %(fileName));
      else:
        print("Closing output file %s" %(fileName))      
      
      outFile.close()
  except Exception, e:
    if(db.logger != None):
      db.logger.critical(str(e) + ' Terminating script.', exc_info=1)
    #else:
    #  print("ErrMsg: %s SQL: '%s'" % (e.args[0], sql))      
    sys.exit(-1)
예제 #2
0
def archiveXMRGFiles(configFile):
  dhecData = dhecXMRGProcessing(configFile)
  archiveDir = dhecData.configSettings.getEntry('//xmrgData/archiveFilesDir')
  if(archiveDir):
    cleanUp = xmrgCleanup(dhecData.configSettings.xmrgDLDir, archiveDir)
    cleanUp.organizeFilesIntoDirectories(datetime.datetime.utcnow())
예제 #3
0
def getXMRGData(configFile):
  xmrgData = dhecXMRGProcessing(configFile)
  xmrgData.getLatestHourXMRGData()
예제 #4
0
def vacuum(configFile):
  dhecData = dhecXMRGProcessing(configFile)
  dhecData.vacuumDB()