Package org.geotools.data.wms.test

Source Code of org.geotools.data.wms.test.WebMapServerOnlineTest

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2004-2008, Open Source Geospatial Foundation (OSGeo)
*
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License as published by the Free Software Foundation;
*    version 2.1 of the License.
*
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*/
package org.geotools.data.wms.test;

import java.awt.image.BufferedImage;
import java.net.URL;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.Set;

import javax.imageio.ImageIO;

import org.geotools.data.ows.Layer;
import org.geotools.data.ows.StyleImpl;
import org.geotools.data.ows.WMSCapabilities;
import org.geotools.data.wms.WMSUtils;
import org.geotools.data.wms.WebMapServer;
import org.geotools.data.wms.request.GetMapRequest;
import org.geotools.data.wms.response.GetMapResponse;
import org.geotools.geometry.GeneralEnvelope;
import org.geotools.ows.ServiceException;
import org.geotools.referencing.CRS;
import org.opengis.referencing.crs.CoordinateReferenceSystem;


/**
* @author Richard Gould
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*
*
* @source $URL$
*/
public class WebMapServerOnlineTest extends ServerTestCase {
    URL serverURL;
    URL brokenURL;
    private URL featureURL;

    /*
     * @see TestCase#setUp()
     */
    protected void setUp() throws Exception {
        super.setUp();
        // serverURL = new URL("http://demo.cubewerx.com/demo/cubeserv/cubeserv.cgi?CONFIG=main&SERVICE=WMS&?VERSION=1.3.0&REQUEST=GetCapabilities");
        serverURL = new URL("http://terraservice.net/ogccapabilities.ashx?version=1.1.1&request=GetCapabilties");
        // serverURL = new URL("http://www.mapserv.nl/wms?mosm&request=GetCapabilities&service=WMS&VERSION=1.1.1");       
        featureURL = new URL(
                "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?VERSION=1.1.0&REQUEST=GetCapabilities");
       
        brokenURL = new URL("http://afjklda.com");
    }

    /*
     * Class under test for void WebMapServer(URL)
     */
    public void testWebMapServerURL() throws Exception {
        WebMapServer wms = new WebMapServer(serverURL);

        assertNotNull(wms.getCapabilities());
    }

    public void testGetCapabilities() throws Exception {
        WebMapServer wms = new WebMapServer(serverURL);

        assertNotNull(wms.getCapabilities());
    }

    public void testIssueGetMapRequest() throws Exception {
        WebMapServer wms = new WebMapServer(serverURL);

        WMSCapabilities capabilities = wms.getCapabilities();

        GetMapRequest request = wms.createGetMapRequest();

        //request.setVersion("1.1.1");

        Layer[] layers = WMSUtils.getNamedLayers(capabilities);
        Iterator iter = Arrays.asList(layers).iterator();
        int count = -1;
        while (iter.hasNext()) {

            Layer layer = (Layer) iter.next();
            count++;
            if (count >= 5) {
                break;
            }
                       
            List styles = layer.getStyles();

            if (styles.size() == 0) {
                request.addLayer(layer);
                continue;
            }

            Random random = new Random();
            int randomInt = random.nextInt(styles.size());
           
            request.addLayer(layer, (StyleImpl) styles.get(randomInt));
        }

        Set srss = WMSUtils.getSRSs(capabilities);
        request.setSRS((String) srss.iterator().next());
        request.setDimensions("400", "400");

        String format = "image/gif";
        List formats = wms.getCapabilities().getRequest().getGetMap().getFormats();
        if (!formats.contains("image/gif")) {
            format = (String) formats.get(0);
        }
        request.setFormat(format);

        request.setBBox("366800,2170400,816000,2460400");

        //System.out.println(request.getFinalURL());
        GetMapResponse response = (GetMapResponse) wms.issueRequest(request);

        assertEquals(response.getContentType(), format);
        //System.out.println("Content Type: " + response.getContentType());

        BufferedImage image = ImageIO.read(response.getInputStream());
        assertEquals(image.getHeight(), 400);
    }

    public void testIssueGetFeatureInfoRequest() throws Exception {
/* TODO fix this

//        http://dev1.dmsolutions.ca/cgi-bin/mswms_gmap?LAYERS=DEMO&FORMAT=image/png&TRANSPARENT=TRUE&HEIGHT=213&REQUEST=GetMap&BBOX=-172.367,35.667300000000004,-11.562400000000014,83.8293&WIDTH=710&STYLES=&SRS=EPSG:4326&VERSION=1.1.1
       
        WebMapServer wms = new WebMapServer(featureURL);
        WMSCapabilities capabilities = wms.getCapabilities();
       
        assertNotNull(capabilities);
       
        GetMapRequest getMapRequest = wms.createGetMapRequest();

        List layers = Arrays.asList(WMSUtils.getNamedLayers(capabilities));
        List simpleLayers = new ArrayList();
        Iterator iter = layers.iterator();
        while (iter.hasNext()) {
                Layer layer = (Layer) iter.next();
                SimpleLayer sLayer = new SimpleLayer(layer.getName(), "");
                simpleLayers.add(sLayer);
                List styles = layer.getStyles();
                if (styles.size() == 0) {
                        sLayer.setStyle("");
                        continue;
                }
                Random random = new Random();
                int randomInt = random.nextInt(styles.size());
                sLayer.setStyle((String) styles.get(randomInt));
        }
        getMapRequest.setLayers(simpleLayers);

        getMapRequest.setSRS("EPSG:4326");
        getMapRequest.setDimensions("400", "400");
        getMapRequest.setFormat("image/png");

        getMapRequest.setBBox("-114.01268,59.4596930,-113.26043,60.0835794");
        URL url2 = getMapRequest.getFinalURL();

        GetFeatureInfoRequest request = wms.createGetFeatureInfoRequest(getMapRequest);
        request.setQueryLayers(WMSUtils.getQueryableLayers(capabilities));
        request.setQueryPoint(200, 200);
        request.setInfoFormat("text/html");
       
        System.out.println(request.getFinalURL());

        GetFeatureInfoResponse response = (GetFeatureInfoResponse) wms.issueRequest(request);
        System.out.println(response.getContentType());
        assertTrue( response.getContentType().indexOf("text/html") != -1 );
        BufferedReader in = new BufferedReader(new InputStreamReader(response.getInputStream()));
        String line;

        boolean textFound = false;
        while ((line = in.readLine()) != null) {
            System.out.println(line);
            if (line.indexOf("Wood Buffalo National Park") != -1) {
                textFound = true;
            }
        }
        assertTrue(textFound);
*/
    }
       
    public void testGetEnvelope() throws Exception {
        WebMapServer wms = new WebMapServer(featureURL);
       
        WMSCapabilities caps = wms.getCapabilities();
       
        Layer layer = (Layer) caps.getLayerList().get(0);
        CoordinateReferenceSystem crs = CRS.decode("EPSG:4326");
       
        GeneralEnvelope envelope = wms.getEnvelope(layer, crs);
       
//        minx="-172.367" miny="35.6673" maxx="-11.5624" maxy="83.8293" />
        assertEquals(envelope.getMinimum(0), -172.367, 0.0);
        assertEquals(envelope.getMinimum(1), 35.6673, 0.0);
        assertEquals(envelope.getMaximum(0), -11.5624, 0.0);
        assertEquals(envelope.getMaximum(1), 83.8293, 0.0);

        crs = CRS.decode("EPSG:42304");
        envelope = wms.getEnvelope(layer, crs);
       
//        minx="-2.2e+06" miny="-712631" maxx="3.0728e+06" maxy="3.84e+06" />
        assertEquals(envelope.getMinimum(0), -2.2e+06, 0.0);
        assertEquals(envelope.getMinimum(1), -712631, 0.0);
        assertEquals(envelope.getMaximum(0), 3.0728e+06, 0.0);
        assertEquals(envelope.getMaximum(1), 3.84e+06, 0.0);
       
        layer = (Layer) caps.getLayerList().get(2);
        crs = CRS.decode("EPSG:4326");
       
        envelope = wms.getEnvelope(layer, crs);
       
//        minx="-178.838" miny="31.8844" maxx="179.94" maxy="89.8254" />
        assertEquals(envelope.getMinimum(0), -178.838, 0.0);
        assertEquals(envelope.getMinimum(1), 31.8844, 0.0);
        assertEquals(envelope.getMaximum(0), 179.94, 0.0);
        assertEquals(envelope.getMaximum(1), 89.8254, 0.0);
    }
   
    public void testServiceExceptions  () throws Exception {
      WebMapServer wms = new WebMapServer(featureURL);
      GetMapRequest request = wms.createGetMapRequest();
      request.addLayer("NoLayer", "NoStyle");
      try {
        //System.out.println(request.getFinalURL());
        GetMapResponse response = wms.issueRequest(request);
        assertTrue(false);
      } catch (ServiceException e) {
        //e.printStackTrace();
      }     
    }
}
TOP

Related Classes of org.geotools.data.wms.test.WebMapServerOnlineTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.