def fcst_times(self, interval=3600, max_forecast=None):
        '''
    Name:
      awips_fcst_times
    Purpose:
      A function to get forecast times for latest model run
    Inputs:
      request    : A DataAccessLayer request object
    Outputs:
      Returns a list of forecast times
    Keywords:
      interval     : Time step between forecast times in seconds
                        Default is 3600s (1 hour)
      max_forecast : Maximum forecast time to get, in seconds.
                        Default is last available time
    '''
        cycles = DAL.getAvailableTimes(self._request, True)
        # Get forecast cycles
        times = DAL.getAvailableTimes(self._request)  # Get forecast times
        times = DAL.getForecastRun(cycles[-1], times)
        # Get forecast times in latest cycle

        if max_forecast is None:
            max_forecast = times[-1].getFcstTime()
            # Set max_forecast value default based on model
        nTimes = max_forecast // interval + 1
        # Number of forecast steps to get based on inteval
        flt_times = [[] for i in range(nTimes)
                     ]  # Initialized list of empty lists for forecast times

        for time in times:  # Iterate over all times
            fcstTime = time.getFcstTime()
            # Get the valid forecast time
            if ((fcstTime % interval) == 0) and (
                    fcstTime < max_forecast
            ):  # If the forecast hour falls on the interval requested AND is before the max forecast time
                fcstDur = time.getValidPeriod().duration()
                # Get duration of the forecast period
                if (fcstDur == 0) or (
                        fcstDur == interval
                ):  # If instantaneous forecast period OR period covers requested interval
                    index = fcstTime // interval
                    # Index for the times flt_times array
                    flt_times[index].append(time)
                    # Append the time to the list at index
        return flt_times
Ejemplo n.º 2
0
available_grids.sort()
list(available_grids)

request.setLocationNames("NAM12")
availableParms = DataAccessLayer.getAvailableParameters(request)
availableParms.sort()
list(availableParms)

request.setParameters("T")
availableLevels = DataAccessLayer.getAvailableLevels(request)

request.setLevels("0.0SFC")

cycles = DataAccessLayer.getAvailableTimes(request, True)
times = DataAccessLayer.getAvailableTimes(request)
fcstRun = DataAccessLayer.getForecastRun(cycles[-2], times)
list(fcstRun)

response = DataAccessLayer.getGridData(request, [fcstRun[36]])
for grid in response:
    data = grid.getRawData()
    lons, lats = grid.getLatLonCoords()
    print('Time :', str(grid.getDataTime().getFcstTime() / 3600))

Ta = ((data - 273.15))
DataAccessLayer.changeEDEXHost("edex-cloud.unidata.ucar.edu")
dataTypes = DataAccessLayer.getSupportedDatatypes()
dataTypes.sort()
list(dataTypes)

request = DataAccessLayer.newDataRequest()