Package chunmap.service.wms

Source Code of chunmap.service.wms.WebMapService

/**
* Copyright (c) 2009-2011, chunquedong(YangJiandong)
*
* This file is part of ChunMap project
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE(Version >=3)
*
* History:
*     2010-05-05  Jed Young  Creation
*/
package chunmap.service.wms;

import java.io.PrintStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import chunmap.model.elem.Envelope;
import chunmap.service.Service;
import chunmap.util.Logger;

/**
* @author yangjiandong
*
*/
public class WebMapService implements Service {
  private static final Logger Log = new Logger(
      Logger.Debug,WebMapService.class.getName());
  private Capabilities capabilities;
  private GetMap getMap;
  private static final String defaultFormat = "png";

  public WebMapService(Capabilities capabilities) {
    this.capabilities = capabilities;
    getMap = new GetMap(capabilities);
  }

  public void service(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, java.io.IOException {

    // String version=request.getParameter("VERSION");
    // String updateSequence=request.getParameter("UPDATESEQUENCE");
    String requestStr = request.getParameter("REQUEST");

    PrintStream out = new PrintStream(response.getOutputStream());
    if (requestStr.equalsIgnoreCase("GetCapabilities")) {
      String s=request.getRequestURL().toString();
      int i=s.indexOf("?");
      if(i!=-1)s=s.substring(0,i);
      capabilities.setUrl(s);
      capabilities.setLink(s);
     
      //Log.log(Logger.Debug, "url is " + s);
      capabilities.reponse(out);
    } else {
      String bbox = request.getParameter("BBOX");
      Envelope envelop = parseEnvelop(bbox);
      int width = Integer.valueOf(request.getParameter("WIDTH"));
      int height = Integer.valueOf(request.getParameter("HEIGHT"));
      String format = parseFormat(request.getParameter("FORMAT"));
     
      if (requestStr.equalsIgnoreCase("GetMap")) {
        getMap.setEnvelop(envelop);
        getMap.setCapbilities(capabilities);
        getMap.setHeight(height);
        getMap.setWidth(width);
        getMap.setFormatName(format);
 
        getMap.reponse(out);
      }else if (requestStr.equalsIgnoreCase("GetFeatureInfo")) {
        GetFeature getInfo=new GetFeature();
        getInfo.capbilities=capabilities;
        getInfo.envelop=envelop;
        getInfo.formatName=format;
        getInfo.height=height;
        getInfo.width=width;
       
        getInfo.service(request, response);
      }
      else {
        Log.log(Logger.Debug, "不支持的请求" + requestStr);
      }
    }
  }

  private Envelope parseEnvelop(String bbox) {
    String[] ss = bbox.split(",");
    double minx = Double.valueOf(ss[0]);
    double miny = Double.valueOf(ss[1]);
    double maxx = Double.valueOf(ss[2]);
    double maxy = Double.valueOf(ss[3]);

    Envelope envelop = new Envelope(minx, miny, maxx, maxy);
    return envelop;
  }

  private String parseFormat(String format) {
    if (format != null) {
      String[] ss = format.split("/");
      if (ss.length == 2)
        return ss[1];
    }
    return defaultFormat;
  }
}
TOP

Related Classes of chunmap.service.wms.WebMapService

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.