Re: [OpenMap Users] OpenMap Image Servlet

From: Piotr Kamiński <Piotr.Kaminski_at_ctm.gdynia.pl>
Date: Wed, 19 Apr 2006 18:26:40 +0200

Hello Philip,
I have recently sent code of WebMapService servlet to Don. You can use
it as soon as Don adds this to CVS repository.
Regards,
Piotr Kaminski

Monte Philip V NPRI napisał(a):
> I am trying to use openmap as a servlet to generate (map)images. I would like to send it params such as lat, lon, scale, height, width, fillColor and lineColor(for land), and background color. I am trying various methods but I am not having much luck. First, I checked the FAQ and found this in section 10.4:
>
> "...Next, you need to wrap those components in a servlet container. Code for this has been posted on the openmap-users mailing list:
>
> http://openmap.bbn.com/mailArchives/openmap-users/2004-04/2809.html"
>
> However, this link no longer works.
>
> Next, I noticed that my distro had an IIS folder with a service for this very purpose, but I could not get it up an running properly (not being an asp or .NET guy, this probably isn't the method for me anyway). Then, I tried the SimpleHttpImageServer in package com.bbn.openmap.image. That worked fine, but it does not allow changes to fillColor and lineColor. The last method I tried was to write my own Servlet (see code at end of this message) using a MapBean. This code works, but gives the following exception. Any assistance is appreciated. Thanks.
>
> AWT blocker activation interrupted:
> java.lang.InterruptedException
> at java.lang.Object.wait(Native Method)
> at java.lang.Object.wait(Unknown Source)
> at sun.awt.AWTAutoShutdown.activateBlockerThread(Unknown Source)
> at sun.awt.AWTAutoShutdown.notifyThreadBusy(Unknown Source)
> at java.awt.EventQueue.initDispatchThread(Unknown Source)
> at java.awt.EventQueue.postEvent(Unknown Source)
> at java.awt.EventQueue.postEventPrivate(Unknown Source)
> at java.awt.EventQueue.postEvent(Unknown Source)
> at java.awt.EventQueue.invokeLater(Unknown Source)
> at javax.swing.SwingUtilities.invokeLater(Unknown Source)
> at com.bbn.openmap.util.SwingWorker$2.run(SwingWorker.java:122)
> at java.lang.Thread.run(Unknown Source)
>
> So, sometimes I see land and sometimes I just see the background.
> ---------------------------------------------------------
>
> import java.io.IOException;
> import java.util.*;
>
> import javax.servlet.ServletException;
> import javax.servlet.http.HttpServlet;
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
>
> import com.bbn.openmap.Environment;
> import com.bbn.openmap.MapBean;
> import com.bbn.openmap.image.*;
> import com.bbn.openmap.layer.shape.ShapeLayer;
> import com.bbn.openmap.proj.Mercator;
> import com.bbn.openmap.proj.Projection;
> import com.bbn.openmap.proj.ProjectionFactory;
>
> public class GetMapImage extends HttpServlet {
>
> //private ImageServer generator;
>
> public static final String LAT_PARAM_NAME = "lat";
> public static final String LON_PARAM_NAME = "lon";
> public static final String SCALE_PARAM_NAME = "scale";
> public static final String WIDTH_PARAM_NAME = "width";
> public static final String HEIGHT_PARAM_NAME = "height";
> public static final String BG_COLOR_PARAM_NAME = "bg";
> public static final String PROJECTION_PARAM_NAME = "projection";
> public static final String LAND_BORDER_COLOR_PARAM = "lineColor";
> public static final String LAND_FILL_COLOR_PARAM = "fillColor";
>
> //ImageServer parameters with default values
> private String lat = "0.0";
> private String lon = "0.0";
> private String scale = "250000000";
> private String width = "350";
> private String height = "350";
> private String bg = "FF89C5F9"; // skyblue
> private String lineColor = "000000"; // black
> private String fillColor = "BDDE83"; // light green
> private String projection = "com.bbn.openmap.proj.Mercator";
>
> Projection defaultProjection;
>
> protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
>
> // LineColor and FillColor are handled separately from other variables
> // ( since they are projection independent)
> Object o = req.getParameter(LAND_BORDER_COLOR_PARAM);
> if(o != null)
> lineColor = (String)o;
> o = req.getParameter(LAND_FILL_COLOR_PARAM);
> if(o != null)
> fillColor = (String)o;
>
>
> setParams(req); //override default properties with custom properties (servlet request params)
> defaultProjection = initProjection();//configProperties);
>
>
> // Create a MapBean
> MapBean mapBean = new MapBean();
>
>
> Properties shapeLayerProps = new Properties();
> shapeLayerProps.put("prettyName", "Political Solid");
> shapeLayerProps.put("lineColor", lineColor); //lineColor
> shapeLayerProps.put("fillColor", fillColor); //fillColor
> shapeLayerProps.put("shapeFile", "D:\\openmap-4.6.2\\share\\data\\shape\\dcwpo-browse.shp");
> shapeLayerProps.put("spatialIndex", "D:\\openmap-4.6.2\\share\\data\\shape\\dcwpo-browse.ssx");
> shapeLayer.setProperties(shapeLayerProps);
>
> // Add the political layer to the map
> mapBean.add(shapeLayer);
> mapBean.setProjection(defaultProjection);
> AcmeGifFormatter f = new AcmeGifFormatter();
> byte[] image = f.getImageFromMapBean(mapBean);
>
> res.setContentType("image/gif");
> res.setContentLength(image.length);
> res.getOutputStream().write(image);
>
> }
>
> private Projection initProjection(){//Properties properties) {
> String projectionName = Environment.get(Environment.Projection, Mercator.MercatorName);
>
> Class projectionClass = ProjectionFactory.getProjClassForName(projection);
>
> return ProjectionFactory.makeProjection(projectionClass, Float.parseFloat(lat),
> Float.parseFloat(lon), Float.parseFloat(scale),
> Integer.parseInt(width), Integer.parseInt(height));
> }
>
>
> private void setParams(HttpServletRequest req) {
> String tempVal = req.getParameter(LAT_PARAM_NAME);
> if(tempVal != null) {
> lat = tempVal;
> }
>
> tempVal = req.getParameter(LON_PARAM_NAME);
> if(tempVal != null) {
> lon = tempVal;
> }
>
> tempVal = req.getParameter(SCALE_PARAM_NAME);
> if(tempVal != null) {
> scale = tempVal;
> }
>
> tempVal = req.getParameter(WIDTH_PARAM_NAME);
> if(tempVal != null) {
> width = tempVal;
> }
>
> tempVal = req.getParameter(HEIGHT_PARAM_NAME);
> if(tempVal != null) {
> height = tempVal;
> }
>
> tempVal = req.getParameter(BG_COLOR_PARAM_NAME);
> if(tempVal != null) {
> bg = tempVal;
> }
>
> tempVal = req.getParameter(PROJECTION_PARAM_NAME);
> if(tempVal != null) {
> projection = tempVal;
> }
> }
>
> private Properties createProperties() {
> Properties props = new Properties();
>
> props.put("openmap.Latitude", lat);
> props.put("openmap.Longitude", lon);
> props.put("openmap.Scale", scale);
> props.put("openmap.Projection", projection);
> props.put("openmap.Width", width);
> props.put("openmap.Height", height);
> props.put("openmap.BackgroundColor" , bg);
> props.put("openmap.Height", height);
> props.put("openmap.Height", height);
>
> return props;
> }
> }
>
>
> ____________________________________________
> Philip V. Monte
> Software Engineer
> Code 2514, Warfare Interoperability Branch
> NAVSEA Warfare Centers Division Newport
> (401) 832-5325
>
> --
> [To unsubscribe to this list send an email to "majdart_at_bbn.com"
> with the following text in the BODY of the message "unsubscribe openmap-users"]
>
> !DSPAM:44450b9b234213936316031!
>
>

--
[To unsubscribe to this list send an email to "majdart_at_bbn.com"
with the following text in the BODY of the message "unsubscribe openmap-users"]
Received on Wed Apr 19 2006 - 12:30:57 EDT

This archive was generated by hypermail 2.3.0 : Tue Mar 28 2017 - 23:25:07 EDT