--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2012 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.maps.wms;
+
+import java.awt.geom.Rectangle2D;
+import java.net.MalformedURLException;
+
+/**
+ * @author Tuukka Lehtonen
+ */
+public class WMSGetMapQuery {
+
+ String srs = "EPSG:4326";
+
+ int width;
+
+ int height;
+
+ Rectangle2D bbox;
+
+ String[] styles;
+
+ String[] layers;
+
+ String format;
+
+ public WMSGetMapQuery(int width, int height, Rectangle2D bbox, String format, String... layers) throws MalformedURLException {
+ super();
+ this.width = width;
+ this.height = height;
+ this.bbox = bbox;
+ this.format = format;
+ this.layers = layers;
+ }
+
+ public void setSpatialReferenceSystem(String srs) {
+ this.srs = srs;
+ }
+
+ public void setStyles(String... styles) {
+ this.styles = styles;
+ }
+
+ public void setLayers(String... layers) {
+ this.layers = layers;
+ }
+
+ public String toString() {
+ if (layers.length == 0)
+ throw new IllegalStateException("0 layers defined");
+
+ StringBuilder sb = new StringBuilder(200);
+
+ // request=GetMap&layers=global_mosaic&srs=EPSG:4326&width=512&height=512
+ // &bbox=-180,-38,-52,90
+ // &format=image/jpeg&version=1.1.1&styles=visual
+
+ sb.append("request=GetMap");
+ sb.append("&service=WMS");
+ sb.append("&layers=");
+ sb.append(layers[0]);
+ for (int i = 1; i < layers.length; ++i) {
+ sb.append(',');
+ sb.append(layers[i]);
+ }
+ sb.append("&srs=");
+ sb.append(srs);
+ sb.append("&width=");
+ sb.append(width);
+ sb.append("&height=");
+ sb.append(height);
+ sb.append("&bbox=");
+ sb.append(bbox.getMinX());
+ sb.append(',');
+ sb.append(bbox.getMinY());
+ sb.append(',');
+ sb.append(bbox.getMaxX());
+ sb.append(',');
+ sb.append(bbox.getMaxY());
+ sb.append("&format=");
+ sb.append(format);
+ sb.append("&version=1.1.1");
+ sb.append("&styles=");
+ if (styles != null && styles.length > 0) {
+ sb.append(styles[0]);
+ for (int i = 1; i < layers.length; ++i) {
+ sb.append(',');
+ sb.append(layers[i]);
+ }
+ }
+
+ return sb.toString();
+ }
+
+}