All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.geomajas.gwt2.plugin.wms.client.WmsClient Maven / Gradle / Ivy

/*
 * This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
 *
 * Copyright 2008-2015 Geosparc nv, http://www.geosparc.com/, Belgium.
 *
 * The program is available in open source according to the GNU Affero
 * General Public License. All contributions in this program are covered
 * by the Geomajas Contributors License Agreement. For full licensing
 * details, see LICENSE.txt in the project root.
 */

package org.geomajas.gwt2.plugin.wms.client;

import org.geomajas.annotation.Api;
import org.geomajas.geometry.Bbox;
import org.geomajas.geometry.Coordinate;
import org.geomajas.gwt2.client.map.ViewPort;
import org.geomajas.gwt2.client.map.layer.tile.TileConfiguration;
import org.geomajas.gwt2.plugin.wms.client.capabilities.WmsLayerInfo;
import org.geomajas.gwt2.plugin.wms.client.layer.FeatureInfoSupportedWmsLayer;
import org.geomajas.gwt2.plugin.wms.client.layer.WmsLayer;
import org.geomajas.gwt2.plugin.wms.client.layer.WmsLayerImpl;
import org.geomajas.gwt2.plugin.wms.client.service.WmsService;
import org.geomajas.gwt2.plugin.wms.client.service.WmsServiceImpl;
import org.geomajas.gwt2.plugin.wms.client.layer.WmsLayerConfiguration;

/**
 * Starting point for the WMS client plugin.
 *
 * @author Pieter De Graef
 * @since 2.1.0
 */
@Api(allMethods = true)
public final class WmsClient {

	private static WmsClient instance;

	private final WmsService wmsService;

	private WmsClient() {
		wmsService = new WmsServiceImpl();
	}

	/**
	 * Get a singleton instance.
	 *
	 * @return Return WmsClient!
	 */
	public static WmsClient getInstance() {
		if (instance == null) {
			instance = new WmsClient();
		}
		return instance;
	}

	// ------------------------------------------------------------------------
	// WMS utility methods:
	// ------------------------------------------------------------------------

	/**
	 * 

Create a new WMS layer. Use this method if you want to create a WMS layer from a GetCapabilities object you * have just acquired.

This layer does not support a GetFeatureInfo call! If you need that, you'll have to * use the server extension of this plug-in.

* * @param baseUrl The WMS base URL. This is the same URL you fed the GetCapabilities call. See {@link * WmsService#getCapabilities(String, * org.geomajas.gwt2.plugin.wms.client.service.WmsService.WmsVersion, * com.google.gwt.core.client.Callback)}. * @param version The WMS version. * @param layerInfo The layer info object. Acquired from a WMS GetCapabilities. * @param viewPort The ViewPort to get the CRS and fixed resolutions from. * @param tileWidth The tile width in pixels. * @param tileHeight The tile height in pixels. * @return A new WMS layer. */ public WmsLayer createLayer(String baseUrl, WmsService.WmsVersion version, WmsLayerInfo layerInfo, ViewPort viewPort, int tileWidth, int tileHeight) { TileConfiguration tileConf = createTileConfig(layerInfo, viewPort, tileWidth, tileHeight); WmsLayerConfiguration layerConf = createLayerConfig(layerInfo, baseUrl, version); return createLayer(layerInfo.getTitle(), viewPort.getCrs(), tileConf, layerConf, layerInfo); } /** * Create a new WMS layer. This layer does not support a GetFeatureInfo call! If you need that, you'll have to use * the server extension of this plug-in. * * @param title The layer title. * @param crs The CRS for this layer. * @param tileConfig The tile configuration object. * @param layerConfig The layer configuration object. * @param layerInfo The layer info object. Acquired from a WMS GetCapabilities. This object is optional. * @return A new WMS layer. */ public WmsLayer createLayer(String title, String crs, TileConfiguration tileConfig, WmsLayerConfiguration layerConfig, WmsLayerInfo layerInfo) { if (layerInfo == null || layerInfo.isQueryable()) { return new FeatureInfoSupportedWmsLayer(title, crs, layerConfig, tileConfig, layerInfo); } else { return new WmsLayerImpl(title, crs, layerConfig, tileConfig, layerInfo); } } /** * Create a new tile configuration object from a WmsLayerInfo object. * * @param layerInfo The layer info object. Acquired from a WMS GetCapabilities. * @param viewPort The ViewPort to get the CRS and fixed resolutions from. * @param tileWidth The tile width in pixels. * @param tileHeight The tile height in pixels. * @return Returns a tile configuration object. * @throws IllegalArgumentException Throw when the CRS is not supported for this layerInfo object. */ public TileConfiguration createTileConfig(WmsLayerInfo layerInfo, ViewPort viewPort, int tileWidth, int tileHeight) throws IllegalArgumentException { Bbox bbox = layerInfo.getBoundingBox(viewPort.getCrs()); if (bbox == null) { throw new IllegalArgumentException("Layer does not support map CRS (" + viewPort.getCrs() + ")."); } Coordinate origin = new Coordinate(bbox.getX(), bbox.getY()); return new TileConfiguration(tileWidth, tileHeight, origin, viewPort); } /** * Create a WMS layer configuration object from a LayerInfo object acquired through a WMS GetCapabilities call. * * @param layerInfo The layer info object. Acquired from a WMS GetCapabilities. * @param baseUrl The WMS base URL. This is the same URL you fed the GetCapabilities call. See {@link * WmsService#getCapabilities(String, * org.geomajas.gwt2.plugin.wms.client.service.WmsService.WmsVersion, * com.google.gwt.core.client.Callback)}. * @param version The WMS version. * @return Returns the WMS layer configuration object. */ public WmsLayerConfiguration createLayerConfig(WmsLayerInfo layerInfo, String baseUrl, WmsService.WmsVersion version) { WmsLayerConfiguration layerConfig = new WmsLayerConfiguration(); layerConfig.setBaseUrl(baseUrl); layerConfig.setLayers(layerInfo.getName()); layerConfig.setVersion(version); return layerConfig; } // ------------------------------------------------------------------------ // Getting services: // ------------------------------------------------------------------------ /** * Get a service that is able to execute various WMS calls. * * @return The WMS service. */ public WmsService getWmsService() { return wmsService; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy