/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wps.gs;
import static org.custommonkey.xmlunit.XMLAssert.*;
import org.geoserver.data.test.MockData;
import org.geoserver.wps.WPSTestSupport;
import org.junit.Test;
import org.w3c.dom.Document;
public class ReprojectProcessTest extends WPSTestSupport {
@Test
public void testForce() throws Exception {
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ "<wps:Execute version=\"1.0.0\" service=\"WPS\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.opengis.net/wps/1.0.0\" xmlns:wfs=\"http://www.opengis.net/wfs\" xmlns:wps=\"http://www.opengis.net/wps/1.0.0\" xmlns:ows=\"http://www.opengis.net/ows/1.1\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:wcs=\"http://www.opengis.net/wcs/1.1.1\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xsi:schemaLocation=\"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd\">\n"
+ " <ows:Identifier>gs:Reproject</ows:Identifier>\n"
+ " <wps:DataInputs>\n"
+ " <wps:Input>\n"
+ " <ows:Identifier>features</ows:Identifier>\n"
+ " <wps:Reference mimeType=\"text/xml; subtype=wfs-collection/1.0\" xlink:href=\"http://geoserver/wfs\" method=\"POST\">\n"
+ " <wps:Body>\n"
+ " <wfs:GetFeature service=\"WFS\" version=\"1.0.0\" outputFormat=\"GML2\">\n"
+ " <wfs:Query typeName=\"" + getLayerId(MockData.BASIC_POLYGONS)
+ "\"/>\n" + " </wfs:GetFeature>\n" + " </wps:Body>\n"
+ " </wps:Reference>\n" + " </wps:Input>\n" + " <wps:Input>\n"
+ " <ows:Identifier>forcedCRS</ows:Identifier>\n" + " <wps:Data>\n"
+ " <wps:LiteralData>EPSG:4269</wps:LiteralData>\n" + " </wps:Data>\n"
+ " </wps:Input>\n" + " </wps:DataInputs>\n" + " <wps:ResponseForm>\n"
+ " <wps:RawDataOutput mimeType=\"text/xml; subtype=wfs-collection/1.0\">\n"
+ " <ows:Identifier>result</ows:Identifier>\n" + " </wps:RawDataOutput>\n"
+ " </wps:ResponseForm>\n" + "</wps:Execute>";
Document response = postAsDOM(root(), xml);
// print(response);
assertXpathEvaluatesTo("http://www.opengis.net/gml/srs/epsg.xml#4269",
"//gml:MultiPolygon/@srsName", response);
}
@Test
public void testReproject() throws Exception {
// note, we use 3395 instead of 900913 because it's more accurate, the referencing subsystem
// with assertions enabled will flip if we use the latter due to small reprojection errors
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ "<wps:Execute version=\"1.0.0\" service=\"WPS\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.opengis.net/wps/1.0.0\" xmlns:wfs=\"http://www.opengis.net/wfs\" xmlns:wps=\"http://www.opengis.net/wps/1.0.0\" xmlns:ows=\"http://www.opengis.net/ows/1.1\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:wcs=\"http://www.opengis.net/wcs/1.1.1\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xsi:schemaLocation=\"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd\">\n"
+ " <ows:Identifier>gs:Reproject</ows:Identifier>\n"
+ " <wps:DataInputs>\n"
+ " <wps:Input>\n"
+ " <ows:Identifier>features</ows:Identifier>\n"
+ " <wps:Reference mimeType=\"text/xml; subtype=wfs-collection/1.0\" xlink:href=\"http://geoserver/wfs\" method=\"POST\">\n"
+ " <wps:Body>\n"
+ " <wfs:GetFeature service=\"WFS\" version=\"1.0.0\" outputFormat=\"GML2\">\n"
+ " <wfs:Query typeName=\"" + getLayerId(MockData.BASIC_POLYGONS)
+ "\"/>\n" + " </wfs:GetFeature>\n" + " </wps:Body>\n"
+ " </wps:Reference>\n" + " </wps:Input>\n" + " <wps:Input>\n"
+ " <ows:Identifier>targetCRS</ows:Identifier>\n" + " <wps:Data>\n"
+ " <wps:LiteralData>EPSG:3395</wps:LiteralData>\n" + " </wps:Data>\n"
+ " </wps:Input>\n" + " </wps:DataInputs>\n" + " <wps:ResponseForm>\n"
+ " <wps:RawDataOutput mimeType=\"text/xml; subtype=wfs-collection/1.1\">\n"
+ " <ows:Identifier>result</ows:Identifier>\n" + " </wps:RawDataOutput>\n"
+ " </wps:ResponseForm>\n" + "</wps:Execute>";
Document response = postAsDOM(root(), xml);
// print(response);
// this test works just fine on my local machine but there is not chance to get
// it working on the build server... giving up...
// assertXpathEvaluatesTo(
// "http://www.opengis.net/gml/srs/epsg.xml#3395",
// "(//gml:boundedBy)[2]/gml:Envelope/@srsName",
// response);
// assertXpathEvaluatesTo("-222638.98158654713 -110579.96522189587",
// "(//gml:boundedBy)[1]/gml:Envelope/gml:lowerCorner", response);
}
}