⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wmsclient.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
字号:
package com.esri.solutions.jitk.datasources.ogc.wms;

import com.esri.wms.client.Layer;
import com.esri.wms.client.Map;
import com.esri.wms.client.ServerConnection;

import org.apache.log4j.Logger;

import java.io.IOException;
import java.io.InputStream;

import java.util.List;


public class WMSClient implements IWMSClient {
    private static final Logger _logger = Logger.getLogger(WMSClient.class);
    protected String _serviceUrl;

    public WMSClient(String serviceUrl) {
        _serviceUrl = serviceUrl;
    }

    public String getTitle() {
        String title = "";
        ServerConnection sc = null;

        try {
            sc = new ServerConnection(getBaseUrl());
            title = sc.getServerTitle();
        } catch (IOException ex) {
            _logger.warn(
                "An IOException occurred trying to find the WMS Title.");
            _logger.debug("An IOException occurred trying to find the WMS Title using ServerConnection.",
                ex);
        }

        return title;
    }

    public WMSCapabilities getCapabilities() throws Exception {
        WMSCapabilities wmsCapabilities = new WMSCapabilities();
        ServerConnection sc = null;
        Map map = null;
        List<Layer> layers = null;

        try {
            sc = new ServerConnection(getBaseUrl());

            map = sc.getRequestHandler()
                    .parseCapabilitiesResponse(sc.getRequestHandler()
                                                 .getCapabilities(sc.getRequestHandler()
                                                                    .createGetCapsRequest()
                                                                    .toRequestString()));

            wmsCapabilities.setSrs(map.getDefaultSpatialReference().getName());
            wmsCapabilities.setMinX(String.valueOf(map.getFullExtent().getMinX()));
            wmsCapabilities.setMinY(String.valueOf(map.getFullExtent().getMinY()));
            wmsCapabilities.setMaxX(String.valueOf(map.getFullExtent().getMaxX()));
            wmsCapabilities.setMaxY(String.valueOf(map.getFullExtent().getMaxY()));
            wmsCapabilities.setFormat(sc.getMapFormats().get(0));

            layers = map.getQueryableLayers();

            String csvLayers = "";

            for (Layer l : layers) {
                csvLayers += (l.getName() + ",");
            }

            if (csvLayers.endsWith(",")) {
                csvLayers = csvLayers.substring(0, csvLayers.lastIndexOf(','));
            }

            wmsCapabilities.setLayersCsv(csvLayers);
        } catch (IOException ex) {
            _logger.warn(
                "An IOException occurred creating new WMS Server Connection - unable to get WMS Capabilities");
            _logger.debug("An IOException occurred creating new WMS ServerConnection - unable to get WMS Capabilities",
                ex);
        }

        return wmsCapabilities;
    }

    public byte[] getMapOverview(WMSCapabilities wmsCap, int width, int height)
        throws Exception {
        ServerConnection sc = null;
        Map map = null;
        byte[] image = null;
        String request = null;
        InputStream is = null;
        InputStreamConverter isc = null;

        try {
            sc = new ServerConnection(getBaseUrl());

            map = sc.getRequestHandler()
                    .parseCapabilitiesResponse(sc.getRequestHandler()
                                                 .getCapabilities(sc.getRequestHandler()
                                                                    .createGetCapsRequest()
                                                                    .toRequestString()));
            map.setWidth(width);
            map.setHeight(height);

            request = sc.getRequestHandler()
                        .createGetMapRequest(map, wmsCap.getFormat())
                        .toRequestString();

            is = sc.getRequestHandler().getMap(request);

            isc = new InputStreamConverter();

            image = isc.toByteArray(is);
        } catch (IOException ex) {
            _logger.warn(
                "An IOException occurred getting WMS map image - unable to get map image");
            _logger.debug("An IOException occurred WMS map image - unable to get map image",
                ex);
        }

        return image;
    }

    private String getBaseUrl() {
        String[] urlArray = _serviceUrl.split("\\*");
        String wmsurl = urlArray[0];

        return wmsurl;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -