awips2/cave/com.raytheon.viz.gfe/help/SmartScriptClassGridAccess.html
2017-04-21 18:33:55 -06:00

252 lines
8.5 KiB
HTML

<html>
<title>Smart Script Class Grid Access</title>
<body>
<h1><a name="GridAccess"></a>Grid Access Methods</h1>
<p>
<a href="#getGrids">getGrids</a>
<br>
<a href="#taperGrid">taperGrid</a>
<br>
<a href="#directionTaperGrid">directionTaperGrid</a>
<br>
<a href="#getComposite">getComposite (numeric only)</a>
<br>
<a href="#getGridInfo">getGridInfo</a>
<br>
<hr width="100%">
<h2><a name="getGrids"></a>getGrids</h2>
def getGrids(self, model, element, level, timeRange,
mode="TimeWtAverage",
noDataError=1, mostRecentModel=0, cache=1):
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Get the value(s) for the given model,
element, and level
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # at the x, y coordinate and over the
given timeRange.
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # The resulting grid values can be
accessed
as follows:
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # PoPGrid =
self.getGrids("Fcst","PoP","SFC",
GridTimeRange)
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # popValue = PoPGrid[x][y]
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # where x and y are integer grid
coordinates.
<h2><a name="taperGrid"></a>taperGrid</h2>
def taperGrid(self, editArea, taperFactor=5):
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Returns a 2-D Grid of values between
0-1 about the
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # given edit area.
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # These values can be applied by smart
tools to taper results.
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Argument:
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # editArea: Reference data or None<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # (use editArea tool argument)
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # taperFactor: If set to zero, will
do Full Taper
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Example:
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # def preProcessTool(self, editArea):
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp; self._tGrid
= self.getTaperGrid(editArea, 5)
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # def execute(self, variableElement):
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp; return =
variableElement + self._tGrid * 10.0
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #
<h2><a name="directionTaperGrid"></a>directionTaperGrid</h2>
def directionTaperGrid(self, editArea, direction):
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Returns a 2-D Grid of values between
0-1 within the
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # given edit area.
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # E.g. if the Dir is W and x,y is
half-way
along the
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # W to E vector within the given edit
area, the value of
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # directionTaperGrid at x,y will be
.5
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # These values can be applied by smart
tools to show
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # spatial progress across an edit area.
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Argument:
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # editArea : ReferenceData
or None
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # (use editArea tool argument)
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # direction : 16 point text direction
e.g. "NNW", "NW", etc.
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Example:
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # def preProcessTool(self, editArea):
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp; self._spaceProgress
= self.directionTaperGrid(editArea, "NW")
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # def execute(self, variableElement):
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp; return
variableElement * self._spaceProgress
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #
<h2><a name="getComposite"></a>getComposite (numeric only)</h2>
def getComposite(self, WEname, GridTimeRange, exactMatch=1, onlyISC=0):
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Returns a composite grid
consisting
of the primary grid and any
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # corresponding ISC grid, blended
together based on the mask information
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # derived from the Grid Data
History.
Primary grid must exist. Returns
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # the set of points that are valid
in the output grid. (Note the output
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # grid consists of the primary
grid and isc grid. Any "invalid" points,
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # indicate those areas that have
no isc data and are outside the home
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # site's region. The returned
grid will have the primary data in
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # the site's region.)
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # A Python tuple is returned.
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # For Scalar elements, the tuple
contains:
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # a numeric grid of 1's and 0's
where 1 indicates a valid point
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # a numeric grid of scalar values
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # For Vector elements, the tuple
contains:
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # a numeric grid of 1's and 0's
where 1 indicates a valid point
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # a numeric grid of scalar values
representing magnitude
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # a numeric grid of scalar values
representing direction
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # For Weather elements, the tuple
contains:
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # a numeric grid of 1's and 0's
where 1 indicates a valid point
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # a numeric grid of byte values
representing the weather value
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # list of keys corresponding to
the weather values
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # For example:
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp; isc
= self.getComposite(WEname, GridTimeRange)
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp; if isc
is None:
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
self.noData()
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp; # See
if we are working with a Scalar or Vector element
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp; wxType
= variableElement_GridInfo.type()
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp; if
wxType
== 0: # SCALAR
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
bits, values = isc
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp;&nbsp;&nbsp; elif
wxType == 1: # VECTOR
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
bits, mag, dir = isc
<br>
<h2><a name="getGridInfo"></a>getGridInfo</h2>
def getGridInfo(self, model, element, level, timeRange,
mostRecentModel=0):
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; Return the GridInfo object for the given weather element and timeRange<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; timeRange = self.getTimeRange("Today")<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; infoList = self.getGridInfo("Fcst", "T", "SFC", timeRange)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; for info in infoList:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; print "grid", info.gridTime()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; @param model: The model for which grid info is requested.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; @type model: DatabaseId or String<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; @param element: The element for which grid info is requested.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; @type element: String<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; @param level: The level for which grid info is requested.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; @type level: String<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; @param timeRange: A time range over which grid info is requested.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; @type timeRange: com.raytheon.uf.common.time.TimeRange or TimeRange<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; @param mostRecentModel: whether to use current time in request expr.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; @type mostRecentModel: integer or boolean<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; @return: Java GridParmInfo object<br>