[Mapbender-commits] r5002 - in trunk/mapbender/http: javascripts php

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Tue Nov 17 11:24:19 EST 2009


Author: kmq
Date: 2009-11-17 11:24:19 -0500 (Tue, 17 Nov 2009)
New Revision: 5002

Added:
   trunk/mapbender/http/javascripts/mod_wps_client.js
   trunk/mapbender/http/php/mod_wps.php
Log:
create WPS requests. not quite done

Added: trunk/mapbender/http/javascripts/mod_wps_client.js
===================================================================
--- trunk/mapbender/http/javascripts/mod_wps_client.js	                        (rev 0)
+++ trunk/mapbender/http/javascripts/mod_wps_client.js	2009-11-17 16:24:19 UTC (rev 5002)
@@ -0,0 +1,180 @@
+
+//make this php ?
+
+$('<div id="wpsClientDialog" title="WPS Client">\n\
+<style> fieldset ul { list-style-type: none;  padding: 0em }\n\
+		fieldset li {padding-left: 0em; border-bottom: 1px dotted gray; }\n\
+		fieldset li label { min-width: 17em; display: inline-block;}\n\
+		fieldset li img { height: 1em; width: 1em;}\n\
+		fieldset input { width: 10em; }\n\
+		.validationError { visibility: hidden; color: red;}\n\
+}</style>\n\
+<form>\n\
+ <fieldset>\n\
+ <ul>\n\
+  <li>\n\
+  	<label for="wps_interpol">interpolation system</label> \n\
+	<select id="wps_interpol">\n\
+		<option value="psgp">psgp</option>\n\
+		<option value="automap">automap</option>\n\
+		<option value="transGaussian">transGaussian</option>\n\
+		<option value="copula">copula</option>\n\
+		<option value="idw">idw</option>\n\
+		<option value="automatic">automatic</option>\n\
+	</select>\n\
+  </li>\n\
+<li> <label for="wps_maxcalctime">max. calculation time (minutes)</label><input id="wps_maxcalctime" type="text" class="text" /></li>\n\
+</ul>\n\
+ </fieldset>\n\
+ <fieldset>\n\
+<ul>\n\
+	<li> <label for="wps_mean"><input id="wps_mean" type="checkbox" checked="checked" disabled="disabled">mean</label>\n\
+	<img id="wps_cs_mean" src="../img/colorscheme_default.png" />\n\
+	<select id="wps_selectcs_mean">\n\
+		<option value="default" selected="selected" >default</option>\n\
+		<option value="2"> colorscheme 2</option>\n\
+		<option value="3"> colorscheme 3</option>\n\
+	</select>\n\
+	</li>\n\
+ 	<li><label for="wps_variance"><input id="wps_variance" type="checkbox" checked="checked" >variance</label>\n\
+	<img id="wps_cs_mean" src="../img/colorscheme_default.png" />\n\
+	<select id="wps_selectcs_variance">\n\
+		<option value="default" selected="selected" >default</option>\n\
+		<option value="2"> colorscheme 2</option>\n\
+		<option value="3"> colorscheme 3</option>\n\
+	</select>\n\
+	</li>\n\
+ 	<li><label for="wps_propability"><input id="wps_propability" type="checkbox" checked="checked" >propability</label>\n\
+	<img id="wps_cs_propability" src="../img/colorscheme_default.png" />\n\
+	<select id="wps_selectcs_propability">\n\
+		<option value="default" selected="selected" >default</option>\n\
+		<option value="2"> colorscheme 2</option>\n\
+		<option value="3"> colorscheme 3</option>\n\
+	</select>\n\
+	</li>\n\
+	<li> <label for="wps_propability_limit">limit <span class="validationError">need a number</span></label><input id="wps_propability_limit" type="text" class="text"/></li>\n\
+</ul>\n\
+</fieldset>\n\
+<fieldset>\n\
+<ul>\n\
+	<li><label for="wps_clipping"><input id="wps_clipping" type="checkbox" checked="checked" >clipping</label></li>\n\
+	<li><label form="wps_image_format">format</label><select id="wps_image_format"><option selected="selected">image/jpeg</option><option>image/png</option></select></li>\n\
+</ul>\n\
+ </fieldset>\n\
+</form>\n\
+</div>').dialog({
+		bgiframe: true,
+		autoOpen: false,
+		height: 400,
+		width: 400,
+		modal: true,
+		buttons: {
+			"Save": function() {
+		/*	
+ *				unklar:
+				$parameters['colorschema'] = isset($parameters['colorschema']) ? $parameters['colorschema'] : "";
+		*/
+				var attributes = {
+					interpolationMethod: "automatic",
+					calculationTime: 12000,
+					propabilityLimit: 0,
+					clipping: true,
+					imageFormat:'image/jpeg',
+					predictionTypes: "Mean",
+					bbox:  "",
+					bboxSRS:"",
+					mean_color: 'default',
+					variance_color: 'default',
+					propability_color: 'default',
+				};
+				
+				attributes.interpolationMethod = $('#wps_interpol').val();
+				attributes.calculationTime 	= $('#wps_maxcalctime').val();
+							
+				attributes.predictionTypes = (!!$('#wps_mean').attr('checked'))? "Mean,":"";
+				attributes.predictionTypes += (!!$('#wps_variance').attr('checked'))? "Variance,":""
+				attributes.predictionTypes += (!!$('#wps_propability').attr('checked'))? "Propability,":""
+				//cut off trailing ,
+				attributes.predictionTypes = attributes.predictionTypes.slice(0,attributes.predictionTypes.length -1)
+			
+		
+				attributes.mean_color		= $('#wps_selectcs_mean').val();
+				attributes.variance_color	= $('#wps_selectcs_variance').val();
+				attributes.propability_color= $('#wps_selectcs_propability').val();
+				
+				attributes.propabilityLimit 	= $('#wps_propability_limit').val();
+				
+				attributes.clipping 	= (!!$('#wps_clipping').attr('checked'))? true: false;
+				attributes.imageFormat 		= $('#wps_image_format').val();
+
+				attributes.bbox = mb_mapObj[0].getExtent();
+				attributes.bboxSRS = mb_mapObj[0].getSRS();
+				
+				
+				//validation
+				var numeric = /[0-9]+/
+				if (!attributes.propabilityLimit.match(numeric)){
+					$('[for=wps_propability_limit] span.validationError').css('visibility','visible');
+					return;
+				}else{
+					$('[for=wps_propability_limit] span.validationError').css('visibility','hidden');
+				}
+				var req = new Mapbender.Ajax.Request({
+					url: "../php/mod_wps.php",
+					method: "createWPSRequest",
+					parameters : {
+					  attributes:attributes,
+					},
+					callback: (function(result,success,message){ 
+						$('<div><textarea><![CDATA['+ result  + ']]></textarea></div>').dialog({autoOpen: true, height: 200, width:300});
+					 })
+				}); 
+				req.send();
+
+				$(this).dialog('close');
+				$('#wpsClientDialog form')[0].reset() 
+				// also reset colorscheme indicators
+				$('#wpsClientDialog form img').attr('src','../img/colorscheme_default.png');
+				$('span.validationError').css('visibility','hidden');
+			},
+			"Cancel": function() {
+				$(this).dialog('close');
+				$('#wpsClientDialog form')[0].reset() 
+				// also reset colorscheme indicators
+				$('#wpsClientDialog form img').attr('src','../img/colorscheme_default.png');
+				$('span.validationError').css('visibility','hidden');
+			}
+}})
+
+var change_cs_indicator = function(){
+	var map = {
+		csdefault: '../img/colorscheme_default.png',
+		cs2: 		 '../img/colorscheme_2.png',
+		cs3: 		 '../img/colorscheme_3.png'
+	};
+	var key = 'cs'+$(this).val();
+	try{
+		var src = map[key];
+	} catch (e){
+		var src = map['csdefault'];
+	}
+	$(this).prev().attr('src',src);
+};
+$('#wps_selectcs_mean').change(change_cs_indicator );
+$('#wps_selectcs_variance').change(change_cs_indicator );
+$('#wps_selectcs_propability').change(change_cs_indicator );
+
+$('#wps_interpol').change((function(){
+	if($(this).val() == 'idw'){
+		$('#wps_variance').attr('checked','');
+		$('#wps_variance').attr('disabled','disabled');
+	}else{
+		$('#wps_variance').attr('checked','checked');
+		$('#wps_variance').attr('disabled','');
+		
+	}
+}));
+
+$('#wpsClient').click(function(){
+	$('#wpsClientDialog').dialog('open');
+});

Added: trunk/mapbender/http/php/mod_wps.php
===================================================================
--- trunk/mapbender/http/php/mod_wps.php	                        (rev 0)
+++ trunk/mapbender/http/php/mod_wps.php	2009-11-17 16:24:19 UTC (rev 5002)
@@ -0,0 +1,87 @@
+<?php
+
+require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+require_once(dirname(__FILE__)."/../classes/class_json.php");
+
+$ajaxResponse = new AjaxResponse($_POST);
+
+switch($ajaxResponse->getMethod())
+{
+	case "createWPSRequest":
+		$templatefilePath = realpath(dirname(__FILE__)."/../../resources/wps_template.xml");
+		$parameters = $ajaxResponse->getParameter('attributes');
+		try{
+			$result = createWPSRequest($parameters,$templatefilePath);
+			$ajaxResponse->setSuccess(true);
+			$ajaxResponse->setResult($result);
+		}catch(Exception $E){
+			$ajaxResponse->setSuccess(true);
+			$ajaxResponse->setMessage($E->getMessage);
+		}
+	break;
+
+	default:
+		$ajaxResponse->setSuccess(false);
+		$ajaxResponse->setMessage("method invalid");
+				
+}
+$ajaxResponse->send();
+
+/*
+* @params parameters an assoc array containing parameters with wich to create a WPS request
+* @return a WPS XML document
+*/
+function createWPSRequest($parameters,$templatefilePath)
+{
+	// check and give parameters default values
+	// need this collection to be subscriptable
+	$parray['interpolationMethod'] = isset($parameters->interpolationMethod) ? $parameters->interpolationMethod : "automatic";
+	$parray['calculationTime'] = isset($parameters->calculationTime) ? $parameters->calculationTime : "120000";
+	$parray['predictionTypes'] = isset($parameters->predictionTypes) ? $parameters->predictionTypes : "Mean";
+	$parray['propabilityLimit'] = isset($parameters->propabilityLimit) ? $parameters->propabilityLimit : "35i.4";
+	$parray['featureCollectionURL'] = isset($parameters->featureCollectionURL) ? $parameters->featureCollectionURL : ""; //FIXME:
+	$parray['wfsURL'] = isset($parameters->wfsURL) ? $parameters->wfsURL : ""; //FIXME
+	$parray['featureType'] = isset($parameters->featureType) ? $parameters->featureType : ""; //FIXME
+	$parray['time'] = isset($parameters->time) ? $parameters->time : date("c") ; //default to current time
+	$parray['wpsURL'] = isset($parameters->wpsURL) ? $parameters->wpsURL : "";
+	$parray['outlierDetection'] = isset($parameters->outlierDetection) ? $parameters->outlierDetection : "true";
+	$parray['clipping'] = isset($parameters->clipping) ? $parameters->clipping : "true";
+	$parray['colorschema'] = isset($parameters->colorschema) ? $parameters->colorschema : "";
+	$parray['imageFormat'] = isset($parameters->imageFormat) ? $parameters->imageFormat : "image/jpeg";
+	$parray['bboxSRS'] = isset($parameters->bboxSRS) ? $parameters->bboxSRS : "";
+	$parray['bbox'] = isset($parameters->bbox) ? $parameters->bbox : "";
+	$parray['width'] = isset($parameters->width) ? $parameters->width : "";
+	$parray['height'] = isset($parameters->height) ? $parameters->height : "";
+
+	try {
+		$WMCDoc = DOMDocument::load($templatefilePath);
+	} 
+	catch (Exception $E) {
+		new mb_exception("WMC XML is broken.");
+		throw new Exception("Could not load WPS Template XML");
+	}   
+	if(!$WMCDoc){
+		throw new Exception("Could not load WPS Template XML");
+	}
+
+	
+	$xpath = new DOMXPath($WMCDoc);
+	$xpath->registerNamespace("xlink","http://www.w3.org/1999/xlink");
+	$xpath->registerNamespace("ows", "http://www.opengis.net/ows/1.1");
+	$xpath->registerNamespace("wps","http://www.opengis.net/wps/1.0.0");
+
+	$OWS_IdentifierList = $xpath->query("/wps:Execute/wps:DataInputs/wps:Input/ows:Identifier");
+	$result = "";
+	foreach($OWS_IdentifierList as  $OWS_Identifier)
+	{
+		//FIXME: this requires that our data is checked above
+		$WPS_LiteralDataList = $xpath->query("../wps:Data/wps:LiteralData",$OWS_Identifier);
+		$WPS_LiteralData = $WPS_LiteralDataList->item(0);
+		$WPS_LiteralData->nodeValue = $parray[$OWS_Identifier->nodeValue];
+	}
+
+	$result = $WMCDoc->saveXML();
+	return $result;
+}
+
+?>



More information about the Mapbender_commits mailing list