org.jdesktop.swingx.mapviewer.wms.WMSService Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jxmapviewer2 Show documentation
Show all versions of jxmapviewer2 Show documentation
This project is based on the JXMapViewer component of SwingX-WS.
/*
* WMSService.java
*
* Created on October 7, 2006, 6:06 PM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package org.jdesktop.swingx.mapviewer.wms;
import org.jdesktop.swingx.mapviewer.util.MercatorUtils;
/**
* A class that represents a WMS mapping service.
* See http://en.wikipedia.org/wiki/Web_Map_Service for more information.
* @author joshy
*/
public class WMSService
{
private String baseUrl;
private String layer;
/**
* Creates a new instance of WMSService
* TODO: not working -> remove
*/
public WMSService()
{
// by default use a known nasa server
setLayer("BMNG");
setBaseUrl("http://wms.jpl.nasa.gov/wms.cgi?");
}
/**
* @param baseUrl the base URL
* @param layer the layer
*/
public WMSService(String baseUrl, String layer)
{
this.baseUrl = baseUrl;
this.layer = layer;
}
/**
* Convertes to a WMS URL
* @param x the x coordinate
* @param y the y coordinate
* @param zoom the zomm factor
* @param tileSize the tile size
* @return a URL request string
*/
public String toWMSURL(int x, int y, int zoom, int tileSize)
{
String format = "image/jpeg";
String styles = "";
String srs = "EPSG:4326";
int ts = tileSize;
int circumference = widthOfWorldInPixels(zoom, tileSize);
double radius = circumference / (2 * Math.PI);
double ulx = MercatorUtils.xToLong(x * ts, radius);
double uly = MercatorUtils.yToLat(y * ts, radius);
double lrx = MercatorUtils.xToLong((x + 1) * ts, radius);
double lry = MercatorUtils.yToLat((y + 1) * ts, radius);
String bbox = ulx + "," + uly + "," + lrx + "," + lry;
String url = getBaseUrl() + "version=1.1.1&request=" + "GetMap&Layers=" + layer + "&format=" + format
+ "&BBOX=" + bbox + "&width=" + ts + "&height=" + ts + "&SRS=" + srs + "&Styles=" + styles +
// "&transparent=TRUE"+
"";
return url;
}
private int widthOfWorldInPixels(int zoom, int TILE_SIZE)
{
// int TILE_SIZE = 256;
int tiles = (int) Math.pow(2, zoom);
int circumference = TILE_SIZE * tiles;
return circumference;
}
/**
* @return the layer
*/
public String getLayer()
{
return layer;
}
/**
* @param layer the layer
*/
public void setLayer(String layer)
{
this.layer = layer;
}
/**
* @return the base URL
*/
public String getBaseUrl()
{
return baseUrl;
}
/**
* @param baseUrl the base URL
*/
public void setBaseUrl(String baseUrl)
{
this.baseUrl = baseUrl;
}
}