From 81b67db10165491dcc3209b3c7962bafe80e342d Mon Sep 17 00:00:00 2001 From: ahocevar Date: Wed, 14 Mar 2012 17:12:06 +0100 Subject: [PATCH 01/10] Patch from http://trac.osgeo.org/openlayers/ticket/3307. Uses a remote GeoServer now, which is added to the allowed hosts for proxy.cgi. --- examples/proxy.cgi | 6 +- examples/wps.html | 77 ++++++++++++ examples/wps.js | 289 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 369 insertions(+), 3 deletions(-) create mode 100644 examples/wps.html create mode 100644 examples/wps.js diff --git a/examples/proxy.cgi b/examples/proxy.cgi index 4358e2ca03..3ec43195d3 100755 --- a/examples/proxy.cgi +++ b/examples/proxy.cgi @@ -20,9 +20,9 @@ allowedHosts = ['www.openlayers.org', 'openlayers.org', 'prototype.openmnnd.org', 'geo.openplans.org', 'sigma.openplans.org', 'demo.opengeo.org', 'www.openstreetmap.org', 'sample.azavea.com', - 'v2.suite.opengeo.org', 'v-swe.uni-muenster.de:8080', - 'vmap0.tiles.osgeo.org', 'www.openrouteservice.org', - 'maps.wien.gv.at'] + 'suite.opengeo.org', 'v2.suite.opengeo.org', + 'v-swe.uni-muenster.de:8080', 'vmap0.tiles.osgeo.org', + 'www.openrouteservice.org', 'maps.wien.gv.at'] method = os.environ["REQUEST_METHOD"] diff --git a/examples/wps.html b/examples/wps.html new file mode 100644 index 0000000000..11f297d97d --- /dev/null +++ b/examples/wps.html @@ -0,0 +1,77 @@ + + + + + + + OpenLayers WPS Builder Example + + + + + +

WPS Builder Example

+ +
+ wps, process +
+ +
Using WPS formats to interact with WPS
+ +
+ +
+

This example shows WPS in action by using the WPSCapabilities, + WPSDescribeProcess and WPSExecute formats. See + wps.js for the + source code.

+
+
+
    +
  1. Select a process from the list below. The list is populated + with the result of a WPS GetCapabilities request, parsed using + OpenLayers.Format.WPSCapabilities::read.
  2. +
  3. Fill out the Input form. Hover over fields to get a description. + To use a geometry from the map as input, select the geometry on the + map (using the pen symbol on the left of the toolbar) and just + click the field. The form is generated from the object returned by + OpenLayers.Format.WPSDescribeProcess::read
  4. +
  5. Click "Execute" and examine the result in the result text area. + If the result can be parsed as features, it will be displayed on + the map as well. The process data is sent to the server with the + serialized XML from OpenLayers.Format.WPSExecute::write, + which can use a modified + OpenLayers.Format.WPSDescribeProcess result object as + input.
  6. +
+ +

+
+
+
+ + + + diff --git a/examples/wps.js b/examples/wps.js new file mode 100644 index 0000000000..0fa213b4c7 --- /dev/null +++ b/examples/wps.js @@ -0,0 +1,289 @@ +OpenLayers.ProxyHost = "proxy.cgi?url="; + +var capabilities, // the capabilities, read by Format.WPSCapabilities::read + process; // the process description from Format.WPSDescribeProcess::read + +// get some capabilities +getCapabilities(); + +// create the UI +var layer = new OpenLayers.Layer.Vector("Scratchpad", { + isBaseLayer: true +}); +var toolbar = new OpenLayers.Control.EditingToolbar(layer); +toolbar.addControls([new OpenLayers.Control.ModifyFeature(layer, { + title: "Select feature" +})]); +var map = new OpenLayers.Map('map', { + controls: [ + toolbar, + new OpenLayers.Control.ZoomPanel(), + new OpenLayers.Control.PanPanel() + ], + layers: [layer] +}); +map.zoomToMaxExtent(); + +// add behavior to html elements +document.getElementById("processes").onchange = describeProcess; + +// using OpenLayers.Format.WPSCapabilities to read the capabilities +function getCapabilities() { + OpenLayers.Request.GET({ + url: "http://suite.opengeo.org/geoserver/wps/", + params: { + "SERVICE": "wps", + "REQUEST": "GetCapabilities" + }, + success: function(response){ + capabilities = new OpenLayers.Format.WPSCapabilities().read( + response.responseText + ); + var dropdown = document.getElementById("processes"); + var offerings = capabilities.processOfferings, option; + // populate the dropdown + for (var p in offerings) { + option = document.createElement("option"); + option.innerHTML = offerings[p].identifier; + option.value = p; + dropdown.appendChild(option); + } + } + }); +} + +// using OpenLayers.Format.WPSDescribeProcess to get information about a +// process +function describeProcess() { + var selection = this.options[this.selectedIndex].value; + OpenLayers.Request.GET({ + url: "http://suite.opengeo.org/geoserver/wps/", + params: { + "SERVICE": "wps", + "REQUEST": "DescribeProcess", + "VERSION": capabilities.version, + "IDENTIFIER": selection + }, + success: function(response) { + process = new OpenLayers.Format.WPSDescribeProcess().read( + response.responseText + ).processDescriptions[selection]; + buildForm(); + } + }); +} + +// dynamically create a form from the process description +function buildForm() { + document.getElementById("abstract").innerHTML = process["abstract"]; + document.getElementById("input").innerHTML = "

Input:

"; + document.getElementById("output").innerHTML = ""; + + var inputs = process.dataInputs, supported = true; + var input; + for (var i=0,ii=inputs.length; i"; + } +} + +// helper function to dynamically create a textarea for geometry (WKT) data +// input +function addWKTInput(input, previousSibling) { + var name = input.identifier; + var container = document.getElementById("input"); + var label = document.createElement("label"); + label["for"] = name; + label.title = input["abstract"]; + label.innerHTML = name + " (select feature, then click field):"; + previousSibling && previousSibling.nextSibling ? + container.insertBefore(label, previousSibling.nextSibling) : + container.appendChild(label); + var field = document.createElement("textarea"); + field.onclick = function () { + if (layer.selectedFeatures.length) { + this.innerHTML = new OpenLayers.Format.WKT().write( + layer.selectedFeatures[0] + ); + } + createCopy(input, this, addWKTInput); + }; + field.onblur = function() { + input.data = field.value ? { + complexData: { + mimeType: "application/wkt", + value: this.value + } + } : undefined; + }; + field.title = input["abstract"]; + field.id = name; + previousSibling && previousSibling.nextSibling ? + container.insertBefore(field, previousSibling.nextSibling.nextSibling) : + container.appendChild(field); +} + +// helper function to dynamically create a WFS collection reference input +function addWFSCollectionInput(input) { + var name = input.identifier; + var field = document.createElement("input"); + field.title = input["abstract"]; + field.value = name + " (layer on demo server)"; + addValueHandlers(field, function() { + input.reference = field.value ? { + mimeType: "text/xml; subtype=wfs-collection/1.0", + href: "http://geoserver/wfs", + method: "POST", + body: { + wfs: { + version: "1.0.0", + outputFormat: "GML2", + featureType: field.value + } + } + } : undefined; + }); + document.getElementById("input").appendChild(field); +} + +// helper function to create a literal input textfield or dropdown +function addLiteralInput(input, previousSibling) { + var name = input.identifier; + var container = document.getElementById("input"); + var anyValue = input.literalData.anyValue; + // anyValue means textfield, otherwise we create a dropdown + var field = document.createElement(anyValue ? "input" : "select"); + field.id = name; + field.title = input["abstract"]; + previousSibling && previousSibling.nextSibling ? + container.insertBefore(field, previousSibling.nextSibling) : + container.appendChild(field); + if (anyValue) { + var dataType = input.literalData.dataType; + field.value = name + (dataType ? " (" + dataType + ")" : ""); + addValueHandlers(field, function() { + input.data = field.value ? { + literalData: { + value: field.value + } + } : undefined; + }); + } else { + var option; + option = document.createElement("option"); + option.innerHTML = name; + field.appendChild(option); + for (var v in input.literalData.allowedValues) { + option = document.createElement("option"); + option.value = v; + option.innerHTML = v; + field.appendChild(option); + } + field.onchange = function() { + createCopy(input, field, addLiteralInput); + input.data = this.selectedIndex ? { + literalData: { + value: this.options[this.selectedIndex].value + } + } : undefined; + }; + } +} + +// if maxOccurs is > 1, this will add a copy of the field +function createCopy(input, field, fn) { + if (input.maxOccurs && input.maxOccurs > 1 && !field.userSelected) { + // add another copy of the field - we don't check maxOccurs + field.userSelected = true; + var newInput = OpenLayers.Util.extend({}, input); + // we recognize copies by the occurrence property + newInput.occurrence = (input.occurrence || 0) + 1; + process.dataInputs.push(newInput); + fn(newInput, field); + } +} + +// helper function for adding events to form fields +function addValueHandlers(field, onblur) { + field.onclick = function() { + if (!this.initialValue) { + this.initialValue = this.value; + this.value = ""; + } + }; + field.onblur = function() { + if (!this.value) { + this.value = this.initialValue; + delete this.initialValue; + } + onblur.apply(this, arguments); + }; +} + +// execute the process +function execute() { + var output = process.processOutputs[0]; + var input; + // remove occurrences that the user has not filled out + for (var i=process.dataInputs.length-1; i>=0; --i) { + input = process.dataInputs[i]; + if (input.occurrence && !input.data && !input.reference) { + OpenLayers.Util.removeItem(process.dataInputs, input); + } + } + process.responseForm = { + rawDataOutput: { + identifier: output.identifier + } + }; + if (output.complexOutput && output.complexOutput.supported.formats["application/wkt"]) { + process.responseForm.rawDataOutput.mimeType = "application/wkt"; + } + OpenLayers.Request.POST({ + url: "http://suite.opengeo.org/geoserver/wps", + data: new OpenLayers.Format.WPSExecute().write(process), + success: showOutput + }); +} + +// add the process's output to the page +function showOutput(response) { + var result = document.getElementById("output"); + result.innerHTML = "

Output:

"; + var features; + var contentType = response.getResponseHeader("Content-Type"); + if (contentType == "application/wkt") { + features = new OpenLayers.Format.WKT().read(response.responseText); + } else if (contentType == "text/xml; subtype=wfs-collection/1.0") { + features = new OpenLayers.Format.WFST.v1_0_0().read(response.responseText); + } + if (features && (features instanceof OpenLayers.Feature.Vector || features.length)) { + layer.addFeatures(features); + result.innerHTML += "The result should also be visible on the map."; + } + result.innerHTML += ""; +} \ No newline at end of file From c3fe359fa6175242200536d8a5446a6acb1cbede Mon Sep 17 00:00:00 2001 From: ahocevar Date: Fri, 30 Mar 2012 18:02:24 -0700 Subject: [PATCH 02/10] WPS example; support for BoundingBox in WPS format --- examples/data/tazdem.tiff | Bin 0 -> 33026 bytes examples/wps.html | 2 +- examples/wps.js | 50 +++++++++++++++++++++++--- lib/OpenLayers/Format/OWSCommon/v1.js | 4 +-- lib/OpenLayers/Format/WFST/v1_0_0.js | 2 +- lib/OpenLayers/Format/WFST/v1_1_0.js | 2 +- lib/OpenLayers/Format/WPSExecute.js | 6 ++++ 7 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 examples/data/tazdem.tiff diff --git a/examples/data/tazdem.tiff b/examples/data/tazdem.tiff new file mode 100644 index 0000000000000000000000000000000000000000..a1eee6c2917236a3becdff63c3ff77660da28d9a GIT binary patch literal 33026 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 literal 0 HcmV?d00001 diff --git a/examples/wps.html b/examples/wps.html index 11f297d97d..bbeeb0f74a 100644 --- a/examples/wps.html +++ b/examples/wps.html @@ -2,7 +2,7 @@ - + OpenLayers WPS Builder Example diff --git a/examples/wps.js b/examples/wps.js index 0fa213b4c7..093351cb9a 100644 --- a/examples/wps.js +++ b/examples/wps.js @@ -1,6 +1,7 @@ OpenLayers.ProxyHost = "proxy.cgi?url="; -var capabilities, // the capabilities, read by Format.WPSCapabilities::read +var wps = "http://suite.opengeo.org/geoserver/wps", + capabilities, // the capabilities, read by Format.WPSCapabilities::read process; // the process description from Format.WPSDescribeProcess::read // get some capabilities @@ -30,7 +31,7 @@ document.getElementById("processes").onchange = describeProcess; // using OpenLayers.Format.WPSCapabilities to read the capabilities function getCapabilities() { OpenLayers.Request.GET({ - url: "http://suite.opengeo.org/geoserver/wps/", + url: wps, params: { "SERVICE": "wps", "REQUEST": "GetCapabilities" @@ -57,7 +58,7 @@ function getCapabilities() { function describeProcess() { var selection = this.options[this.selectedIndex].value; OpenLayers.Request.GET({ - url: "http://suite.opengeo.org/geoserver/wps/", + url: wps, params: { "SERVICE": "wps", "REQUEST": "DescribeProcess", @@ -89,14 +90,21 @@ function buildForm() { addWKTInput(input); } else if (formats["text/xml; subtype=wfs-collection/1.0"]) { addWFSCollectionInput(input); + } else if (formats["image/tiff"]) { + addRasterInput(input); } else { supported = false; } + } else if (input.boundingBoxData) { + addBoundingBoxInput(input); } else if (input.literalData) { addLiteralInput(input); } else { supported = false; } + if (input.minOccurs > 0) { + document.getElementById("input").appendChild(document.createTextNode("* ")); + } } if (supported) { @@ -170,6 +178,38 @@ function addWFSCollectionInput(input) { document.getElementById("input").appendChild(field); } +// helper function to dynamically create a raster (GeoTIFF) url input +function addRasterInput(input) { + var name = input.identifier; + var field = document.createElement("input"); + field.title = input["abstract"]; + var url = window.location.href.split("?")[0]; + field.value = url.substr(0, url.lastIndexOf("/")+1) + "data/tazdem.tiff"; + document.getElementById("input").appendChild(field); + (field.onblur = function() { + input.reference = { + mimeType: "image/tiff", + href: field.value, + method: "GET" + }; + })(); +} + +// helper function to dynamically create a bounding box input +function addBoundingBoxInput(input) { + var name = input.identifier; + var field = document.createElement("input"); + field.title = input["abstract"]; + field.value = "left,bottom,right,top"; + document.getElementById("input").appendChild(field); + addValueHandlers(field, function() { + input.boundingBoxData = { + projection: "EPSG:4326", + bounds: OpenLayers.Bounds.fromString(field.value) + } + }); +} + // helper function to create a literal input textfield or dropdown function addLiteralInput(input, previousSibling) { var name = input.identifier; @@ -251,7 +291,7 @@ function execute() { // remove occurrences that the user has not filled out for (var i=process.dataInputs.length-1; i>=0; --i) { input = process.dataInputs[i]; - if (input.occurrence && !input.data && !input.reference) { + if ((input.minOccurs === 0 || input.occurrence) && !input.data && !input.reference) { OpenLayers.Util.removeItem(process.dataInputs, input); } } @@ -264,7 +304,7 @@ function execute() { process.responseForm.rawDataOutput.mimeType = "application/wkt"; } OpenLayers.Request.POST({ - url: "http://suite.opengeo.org/geoserver/wps", + url: wps, data: new OpenLayers.Format.WPSExecute().write(process), success: showOutput }); diff --git a/lib/OpenLayers/Format/OWSCommon/v1.js b/lib/OpenLayers/Format/OWSCommon/v1.js index 4abedd860b..b154d1f6b2 100644 --- a/lib/OpenLayers/Format/OWSCommon/v1.js +++ b/lib/OpenLayers/Format/OWSCommon/v1.js @@ -270,8 +270,8 @@ OpenLayers.Format.OWSCommon.v1 = OpenLayers.Class(OpenLayers.Format.XML, { */ writers: { "ows": { - "BoundingBox": function(options) { - var node = this.createElementNSPlus("ows:BoundingBox", { + "BoundingBox": function(options, nodeName) { + var node = this.createElementNSPlus(nodeName || "ows:BoundingBox", { attributes: { crs: options.projection } diff --git a/lib/OpenLayers/Format/WFST/v1_0_0.js b/lib/OpenLayers/Format/WFST/v1_0_0.js index 41a4286d08..2deb394980 100644 --- a/lib/OpenLayers/Format/WFST/v1_0_0.js +++ b/lib/OpenLayers/Format/WFST/v1_0_0.js @@ -82,7 +82,7 @@ OpenLayers.Format.WFST.v1_0_0 = OpenLayers.Class( // Not the superclass, only the mixin classes inherit from // Format.GML.v2. We need this because we don't want to get readNode // from the superclass's superclass, which is OpenLayers.Format.XML. - return OpenLayers.Format.GML.v2.prototype.readNode.apply(this, [node, obj]); + return OpenLayers.Format.GML.v2.prototype.readNode.apply(this, arguments); }, /** diff --git a/lib/OpenLayers/Format/WFST/v1_1_0.js b/lib/OpenLayers/Format/WFST/v1_1_0.js index 71268441a9..67653160a9 100644 --- a/lib/OpenLayers/Format/WFST/v1_1_0.js +++ b/lib/OpenLayers/Format/WFST/v1_1_0.js @@ -81,7 +81,7 @@ OpenLayers.Format.WFST.v1_1_0 = OpenLayers.Class( // Not the superclass, only the mixin classes inherit from // Format.GML.v3. We need this because we don't want to get readNode // from the superclass's superclass, which is OpenLayers.Format.XML. - return OpenLayers.Format.GML.v3.prototype.readNode.apply(this, [node, obj]); + return OpenLayers.Format.GML.v3.prototype.readNode.apply(this, arguments); }, /** diff --git a/lib/OpenLayers/Format/WPSExecute.js b/lib/OpenLayers/Format/WPSExecute.js index de74ed9b93..75ffb8b1d9 100644 --- a/lib/OpenLayers/Format/WPSExecute.js +++ b/lib/OpenLayers/Format/WPSExecute.js @@ -175,6 +175,9 @@ OpenLayers.Format.WPSExecute = OpenLayers.Class(OpenLayers.Format.XML, { if (input.reference) { this.writeNode("wps:Reference", input.reference, node); } + if (input.boundingBoxData) { + this.writeNode("wps:BoundingBoxData", input.boundingBoxData, node); + } return node; }, "Data": function(data) { @@ -228,6 +231,9 @@ OpenLayers.Format.WPSExecute = OpenLayers.Class(OpenLayers.Format.XML, { } return node; }, + "BoundingBoxData": function(node, obj) { + this.writers['ows']['BoundingBox'].apply(this, [node, obj, "wps:BoundingBoxData"]); + }, "Body": function(body) { var node = this.createElementNSPlus("wps:Body", {}); if (body.wcs) { From 8bc307b5a104cf7971b7d7ac01c5fb8e62ffc192 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Fri, 30 Mar 2012 18:45:52 -0700 Subject: [PATCH 03/10] Allowing copies of literal text fields. --- examples/wps.js | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/wps.js b/examples/wps.js index 093351cb9a..bfea47cf10 100644 --- a/examples/wps.js +++ b/examples/wps.js @@ -231,6 +231,7 @@ function addLiteralInput(input, previousSibling) { value: field.value } } : undefined; + createCopy(input, field, addLiteralInput); }); } else { var option; From 2789c29c98ecc7390395aa2a3e0f5f1407d6c6ad Mon Sep 17 00:00:00 2001 From: David Winslow Date: Fri, 30 Mar 2012 21:48:53 -0400 Subject: [PATCH 04/10] Add NODATA header to process sample TIFF --- examples/data/tazdem.tiff | Bin 33026 -> 58048 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/data/tazdem.tiff b/examples/data/tazdem.tiff index a1eee6c2917236a3becdff63c3ff77660da28d9a..4f5840268f7069afce40bd55d2a0208bd8668d41 100644 GIT binary patch literal 58048 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 JI{cpAnz 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 From 337afdfe8fa28ad2bdd072bd5affb356e92aee4d Mon Sep 17 00:00:00 2001 From: David Winslow Date: Fri, 30 Mar 2012 22:15:42 -0400 Subject: [PATCH 05/10] Move descriptive text for WPS demo to the right --- examples/wps.html | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/examples/wps.html b/examples/wps.html index bbeeb0f74a..10de97be5c 100644 --- a/examples/wps.html +++ b/examples/wps.html @@ -16,7 +16,7 @@ } textarea { display: block; - width: 45em; + width: 100%; height: 3em; } label { @@ -40,15 +40,11 @@

Using WPS formats to interact with WPS
-
- -
+

This example shows WPS in action by using the WPSCapabilities, WPSDescribeProcess and WPSExecute formats. See wps.js for the source code.

-
-
  1. Select a process from the list below. The list is populated with the result of a WPS GetCapabilities request, parsed using @@ -66,10 +62,17 @@ OpenLayers.Format.WPSDescribeProcess result object as input.
- -

-
-
+
+ +
+
+ +
+ +

+
+
+
From e4247472f9c55c4752c07704f01d5f7a9c6fab32 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Fri, 30 Mar 2012 19:57:20 -0700 Subject: [PATCH 06/10] Adding a margin for nicer display of the docs. --- examples/wps.html | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/examples/wps.html b/examples/wps.html index 10de97be5c..596f60e1f0 100644 --- a/examples/wps.html +++ b/examples/wps.html @@ -29,6 +29,12 @@ display: block; margin-top: 10px; } + #docs { + top: 6em; + left: 550px; + position: absolute; + margin-right: 10px; + } @@ -40,7 +46,7 @@
Using WPS formats to interact with WPS
-
+

This example shows WPS in action by using the WPSCapabilities, WPSDescribeProcess and WPSExecute formats. See wps.js for the From 46ba55d886df3bb64e8d8effed01f4bd138875f9 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Fri, 30 Mar 2012 19:57:54 -0700 Subject: [PATCH 07/10] Allow for SLD input. --- examples/wps.js | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/examples/wps.js b/examples/wps.js index bfea47cf10..98c7467d96 100644 --- a/examples/wps.js +++ b/examples/wps.js @@ -80,8 +80,9 @@ function buildForm() { document.getElementById("input").innerHTML = "

Input:

"; document.getElementById("output").innerHTML = ""; - var inputs = process.dataInputs, supported = true; - var input; + var inputs = process.dataInputs, supported = true, + sld = "text/xml; subtype=sld/1.0.0", + input; for (var i=0,ii=inputs.length; i Date: Mon, 2 Apr 2012 16:42:14 +0200 Subject: [PATCH 08/10] Use demo.opengeo.org --- examples/proxy.cgi | 6 +++--- examples/wps.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/proxy.cgi b/examples/proxy.cgi index 3ec43195d3..1d2818f27a 100755 --- a/examples/proxy.cgi +++ b/examples/proxy.cgi @@ -20,9 +20,9 @@ allowedHosts = ['www.openlayers.org', 'openlayers.org', 'prototype.openmnnd.org', 'geo.openplans.org', 'sigma.openplans.org', 'demo.opengeo.org', 'www.openstreetmap.org', 'sample.azavea.com', - 'suite.opengeo.org', 'v2.suite.opengeo.org', - 'v-swe.uni-muenster.de:8080', 'vmap0.tiles.osgeo.org', - 'www.openrouteservice.org', 'maps.wien.gv.at'] + 'v2.suite.opengeo.org', 'v-swe.uni-muenster.de:8080', + 'vmap0.tiles.osgeo.org', 'www.openrouteservice.org', + 'maps.wien.gv.at'] method = os.environ["REQUEST_METHOD"] diff --git a/examples/wps.js b/examples/wps.js index 98c7467d96..bfe8a4f085 100644 --- a/examples/wps.js +++ b/examples/wps.js @@ -1,6 +1,6 @@ OpenLayers.ProxyHost = "proxy.cgi?url="; -var wps = "http://suite.opengeo.org/geoserver/wps", +var wps = "http://demo.opengeo.org/geoserver/wps", capabilities, // the capabilities, read by Format.WPSCapabilities::read process; // the process description from Format.WPSDescribeProcess::read From 3385c2b5b1eaf0495439a8efe0811a1d67bb3f83 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Mon, 2 Apr 2012 16:42:33 +0200 Subject: [PATCH 09/10] Code cleanup. --- examples/wps.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/wps.js b/examples/wps.js index bfe8a4f085..06991ea179 100644 --- a/examples/wps.js +++ b/examples/wps.js @@ -158,6 +158,7 @@ function addWKTInput(input, previousSibling) { container.appendChild(field); } +// helper function for xml input function addXMLInput(input, type) { var name = input.identifier; var field = document.createElement("input"); @@ -225,7 +226,7 @@ function addBoundingBoxInput(input) { input.boundingBoxData = { projection: "EPSG:4326", bounds: OpenLayers.Bounds.fromString(field.value) - } + }; }); } From f21678f55ba560fd50ea1e131ecd9703860ac274 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Tue, 3 Apr 2012 15:28:44 +0200 Subject: [PATCH 10/10] Addressing review comments from @bartvde and @marcjansen. --- examples/wps.html | 11 ++++++----- examples/wps.js | 13 +++++++++---- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/examples/wps.html b/examples/wps.html index 596f60e1f0..84567fff87 100644 --- a/examples/wps.html +++ b/examples/wps.html @@ -41,7 +41,7 @@

WPS Builder Example

- wps, process + wps, process, advanced
Using WPS formats to interact with WPS
@@ -49,13 +49,14 @@

This example shows WPS in action by using the WPSCapabilities, WPSDescribeProcess and WPSExecute formats. See - wps.js for the + wps.js for the source code.

    -
  1. Select a process from the list below. The list is populated - with the result of a WPS GetCapabilities request, parsed using - OpenLayers.Format.WPSCapabilities::read.
  2. +
  3. Select a process from the list below the map. The list is + populated with the result of a WPS GetCapabilities request, parsed + using OpenLayers.Format.WPSCapabilities::read.
  4. Fill out the Input form. Hover over fields to get a description. + Required fields are marked with a "*". To use a geometry from the map as input, select the geometry on the map (using the pen symbol on the left of the toolbar) and just click the field. The form is generated from the object returned by diff --git a/examples/wps.js b/examples/wps.js index 06991ea179..d82fce2b8a 100644 --- a/examples/wps.js +++ b/examples/wps.js @@ -21,7 +21,12 @@ var map = new OpenLayers.Map('map', { new OpenLayers.Control.ZoomPanel(), new OpenLayers.Control.PanPanel() ], - layers: [layer] + layers: [ + new OpenLayers.Layer.WMS( + "OSM", "http://maps.opengeo.org/geowebcache/service/wms", + {layers: "openstreetmap", format: "image/png"} + ), layer + ] }); map.zoomToMaxExtent(); @@ -33,7 +38,7 @@ function getCapabilities() { OpenLayers.Request.GET({ url: wps, params: { - "SERVICE": "wps", + "SERVICE": "WPS", "REQUEST": "GetCapabilities" }, success: function(response){ @@ -60,7 +65,7 @@ function describeProcess() { OpenLayers.Request.GET({ url: wps, params: { - "SERVICE": "wps", + "SERVICE": "WPS", "REQUEST": "DescribeProcess", "VERSION": capabilities.version, "IDENTIFIER": selection @@ -220,7 +225,7 @@ function addBoundingBoxInput(input) { var name = input.identifier; var field = document.createElement("input"); field.title = input["abstract"]; - field.value = "left,bottom,right,top"; + field.value = "left,bottom,right,top (EPSG:4326)"; document.getElementById("input").appendChild(field); addValueHandlers(field, function() { input.boundingBoxData = {