awips2/edexOsgi/com.raytheon.edex.uengine/web/compactBarnesAnalysisWinds.jsp
root 7dbd17a5aa Initial revision of AWIPS2 11.9.0-7p5
Former-commit-id: 133dc97f67 [formerly a02aeb236c] [formerly 9f19e3f712] [formerly 133dc97f67 [formerly a02aeb236c] [formerly 9f19e3f712] [formerly 06a8b51d6d [formerly 9f19e3f712 [formerly 64fa9254b946eae7e61bbc3f513b7c3696c4f54f]]]]
Former-commit-id: 06a8b51d6d
Former-commit-id: 9bb8decbcf [formerly 8e80217e59] [formerly 377dcd10b9 [formerly 3360eb6c5f]]
Former-commit-id: 377dcd10b9
Former-commit-id: e2ecdcfe33
2012-01-06 08:55:05 -06:00

249 lines
8.3 KiB
Text

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Barnes Analysis</title>
<STYLE TYPE="text/css">
h1 {text-align:center}
table {background-color:silver;border-style:solid;border-color:black;border-width:1}
td {background-color:white;border-style:solid;border-color:black;border-width:1}
th {background-color:white;border-style:solid;border-color:black;border-width:1}
</STYLE>
</head>
<body>
<table align=center>
<TR><TD><img src="rayAWIPS.jpg" align=middle></TD>
<TD><H1>
&mu;Engine Demonstration<BR>
JScript Script Runner<BR>
Barnes Analysis
</H1></TD>
<TD><img src="rayAWIPS.jpg" align=middle></TD></TR>
<TR><TD COLSPAN=3>
<CENTER>
This script demonstrates using Barnes Scheme analysis to correct a Wind Speed grid.<BR>
The Wind Speed grid is generated by combining the <em>Wind-U</em> and <em>Wind-V</em> parameters.<BR>
A spatial query is performed to obtain the wind speed observations.<BR>
This page uses <em>GribWinds.js</em>, <em>GribImage.js</em>, and <em>ObsSpatial.js</em> from the script library.
</CENTER>
</TD></TR>
</table>
<form method=post action="runAction.jas">
<input type=hidden name=requesttype value=javascript>
<input type=hidden name=sortby value=timeobs>
<table align=center>
<tr><td colspan=2>
<textarea name="actionXML" cols="80" rows="22" style="background-color:aqua">
include("GribWinds.js");
include("GribImage.js");
include("ObsSpatial.js");
/* Define the class to perform the analysis */
function BarnesAnalysisWinds() {
/* names of things */
this.grib = "grib";
this.obs = "obs";
this.icao = "icao";
this.geometry = "geometry";
this.obParam = "windSpeed";
/* settings for Barnes Analysis */
this.radius = "50000.0";
this.weight = "0.50";
this.stations = "1";
this.passes = "1";
/* query objects */
this.gQuery = new GribWinds(this.grib,true);
this.oQuery = new ObsSpatialQuery(this.obs,this.obParam);
/* the image creator */
this.iMaker = new GribImage(this.grib);
/* the logger */
this.logger = new SystemLog();
}
function _execute() {
var response;
/* get the wind speed as a grib */
var wResult = this.gQuery.execute();
if (wResult.getClass().getSimpleName() != "FloatDataRecord") {
this.logger.log("warn","GRIB Winds creation failed.");
return wResult;
}
this.logger.log("info","GRIB Winds creation successful.");
var geom = this.gQuery.getGeom();
var crs = this.gQuery.getCRS();
/* get and geolocate the wind speed observations */
var oResult = this.oQuery.execute();
if(oResult.getClass().getSimpleName() != "ArrayList") {
this.logger.log("warn","Spatial ob query for " + this.obParam + " failed.");
return oResult;
}
this.logger.log("info","Spatial ob query for " + this.obParam + " successful.");
/* setup the analyzer and perform the analysis */
var analyzer = new ObjectiveAnalysis(wResult,
geom,
crs,
oResult);
analyzer.addParameter("searchRadius",this.radius);
analyzer.addParameter("weight",this.weight);
analyzer.addParameter("minNoStns",this.stations);
analyzer.addParameter("numPasses",this.passes);
analyzer.addParameter("extrapolate","true");
var analyzed = analyzer.execute();
/* create the derived image */
this.iMaker.setGrid(analyzed);
this.iMaker.setCrs(crs);
this.iMaker.setGeom(geom);
var imageOut = this.iMaker.execute();
geom = this.iMaker.getGeom();
var format = this.iMaker.getFormat();
/* write the image to the file and return the response */
var fileOut = new FileOut(imageOut, format);
var writeFile = fileOut.execute();
var makeResponse = new MakeResponseUri(writeFile,
null,
this.gQuery.getDataURI(),
this.format);
return makeResponse.execute();
}
/* helper methods */
function _makeError(message,query) {
var response = new MakeResponseNull(message,query);
return response.execute();
}
/* setters for query objects */
function _addParameter(grid,name,value) {
var query = (grid)?this.gQuery:this.oQuery;
query.addParameter(name,value);
}
function _addList(grid,name,value) {
var query = (grid)?this.gQuery:this.oQuery;
query.addParameter(name,value,"in");
}
function _setSortValue(grid,sortValue) {
var query = (grid)?this.gQuery:this.oQuery;
query.setSortby(sortValue);
}
function _setCount(grid,count) {
var query = (grid)?this.gQuery:this.oQuery;
query.setCount(count);
}
/* setters for image creation parameters */
function _setScaleFactor(scale) {
this.iMaker.setScaleFactor(scale);
}
function _reprojectImage(reproject) {
this.iMaker.setReproject(reproject);
}
function _setColorMap(colormap){
this.iMaker.setColormap(colormap);
}
function _setFormat(format){
this.iMaker.setFormat(format);
}
/* setters for the spatial query */
function _setSpatialBounds(ulLat, ulLon, lrLat, lrLon) {
this.oQuery.setSpatialBounds(ulLat,
ulLon,
lrLat,
lrLon,
this.icao,
this.geometry);
}
/* setters for Barnes Analysis */
function _setBarnesParameters(radius,weight,stations,passes) {
this.radius = radius;
this.weight = weight;
this.stations = stations;
this.passes = passes;
}
/* mapping functions to the object */
BarnesAnalysisWinds.prototype.execute = _execute;
BarnesAnalysisWinds.prototype.addParameter = _addParameter;
BarnesAnalysisWinds.prototype.addList = _addList;
BarnesAnalysisWinds.prototype.setSortValue = _setSortValue;
BarnesAnalysisWinds.prototype.setCount = _setCount;
BarnesAnalysisWinds.prototype.setScaleFactor = _setScaleFactor;
BarnesAnalysisWinds.prototype.reprojectImage = _reprojectImage;
BarnesAnalysisWinds.prototype.setColorMap = _setColorMap;
BarnesAnalysisWinds.prototype.setFormat = _setFormat;
BarnesAnalysisWinds.prototype.setSpatialBounds = _setSpatialBounds;
BarnesAnalysisWinds.prototype.setBarnesParameters = _setBarnesParameters;
BarnesAnalysisWinds.prototype.makeError = _makeError;
var runner = new BarnesAnalysisWinds();
/* setup the basic grib queries */
runner.addParameter(true,"levelinfo","10.0_m");
runner.addParameter(true,"forecasttime","0");
runner.addParameter(true,"gridid",212);
runner.setSortValue(true,"basetime");
runner.setCount(true,1);
/* setup the basic obs query */
runner.addParameter(false,"refhour","20070601190000");
runner.setSortValue(false,"timeobs");
runner.setCount(false,0);
/* setup the spatial search parameters */
runner.setSpatialBounds(43.00, -98.00, 37.00, -92.00);
/* setup the Barnes analysis paramters */
runner.setBarnesParameters("50000.0","0.50","1","1");
/* set image properties */
runner.setColorMap("GribRGB");
runner.setFormat("png");
runner.setScaleFactor(3.0);
/* execute the script */
runner.execute();
</textarea>
</td></tr>
<tr><th colspan=2><em>Enter Values for Message</em></th></tr>
<tr><td><B>Name:</B></td>
<td><input type=text name=name value="JS Request"></td></tr>
</td></td>
<tr><td><B>Action:</B></td><td>
<input type=radio name=function value=validate disabled>Validate
<input type=radio name=function value=subscribe disabled>Subscribe
<input type=radio name=function value=execute checked>Execute</tr>
</td></tr></table>
<br>
<div align=center>
<input type="submit" value="Get Report">
<input type=reset>
Timeout:
<select name=receiveTime>
<option value=60000>1 minute
<option value=120000>2 minutes
<option value=180000>3 minutes
<option value=240000 selected>4 minutes
<option value=300000>5 minutes
<option value=360000>6 minutes
<option value=420000>7 minutes
<option value=480000>8 minutes
<option value=540000>9 minutes
<option value=600000>10 minutes
</select>
</div>
</form>
</body>
</html>