public abstract class ALcdWMSProxy extends Object implements Cloneable, ILcdCache, ILcdBounded
ALcdWMSProxy
is an object that acts as a proxy
towards a Web Map Service (WMS).
It is used as domain object inside an ILcdModel
decoded by
TLcdOGCWMSProxyModelDecoder
and has the following roles:
getWMSCapabilities()
.
These capabilities describe the hierarchy of available layers and styles at the server,
service metadata, supported formats, etc. The root of the layer hierarchy can be retrieved
through ALcdOGCWMSCapabilities.getWMSRootNamedLayer(int)
. Each layer is represented
by an ALcdWMSNamedLayer
object, and optionally contains a set of child layers.TLcdWMSStyledNamedLayerWrapper
must be added to this proxy for each desired
ALcdWMSLayer
(see addStyledNamedLayer(TLcdWMSStyledNamedLayerWrapper)
).
InputStream
, namely
createImageInputStream
: sends out a GetMap query,createFeatureInfoInputStream
: sends out a GetFeatureInfo query.Constructor and Description |
---|
ALcdWMSProxy() |
Modifier and Type | Method and Description |
---|---|
void |
addDimension(TLcdOGCWMSDimensionWrapper aDimension)
Adds a wrapper class for a dimension having an extent to the list of dimensions
to be used in the request.
|
abstract void |
addStyledNamedLayer(TLcdWMSStyledNamedLayerWrapper aStyledNamedLayer)
Adds a wrapper class for a named layer having a style to the list of layers to request from the WMS.
|
void |
clearCache()
Clears the cache.
|
void |
clearDimensions()
Clears all the
TLcdOGCWMSDimensionWrapper s. |
abstract void |
clearStyledNamedLayers()
Clears all the
TLcdWMSStyledNamedLayerWrapper s. |
Object |
clone()
Creates and returns a shallow copy of this object.
|
abstract InputStream |
createFeatureInfoInputStream(int aWidth,
int aHeight,
ILcdXYWorldReference aXYWorldReference,
ILcdBounds aBounds,
Color aBackgroundColor,
int aX,
int aY,
int aFeatureCount)
Deprecated.
|
abstract InputStream |
createFeatureInfoInputStream(TLcdWMSGetFeatureInfoContext aGetFeatureInfoContext,
TLcdWMSGetFeatureInfoParameters aGetFeatureInfoParameters)
Sends a
GetFeatureInfo request with the given parameters to the WMS configured
in the capabilities (see getWMSCapabilities() ), and returns the result
as an InputStream object. |
Image |
createImage(int aWidth,
int aHeight,
ILcdXYWorldReference aXYWorldReference,
ILcdBounds aBounds,
Color aBackgroundColor)
Deprecated.
Use the method
createImageInputStream , to which this default
implementation delegates. |
abstract InputStream |
createImageInputStream(int aWidth,
int aHeight,
ILcdXYWorldReference aXYWorldReference,
ILcdBounds aBounds,
Color aBackgroundColor)
Deprecated.
use
createImageInputStream(TLcdWMSGetMapContext) instead |
abstract InputStream |
createImageInputStream(TLcdWMSGetMapContext aGetMapContext)
Sends a
GetMap request with the given parameters to the WMS configured
in the capabilities (see getWMSCapabilities() ), and returns the result
as an InputStream object. |
ALcdWMSNamedLayer |
findWMSNamedLayer(String aNamedLayerName)
Returns the WMS layer from the capabilities for which the unique
layer name
equals the given name. |
ILcdBounds |
getBounds()
Returns the
ILcdBounds by which the geometry of this ILcdBounded object
is bounded. |
Object |
getCachedObject(Object aKey)
Looks up and returns the cached Object corresponding to the given key.
|
TLcdOGCWMSDimensionWrapper |
getDimension(int aIndex)
Returns the
TLcdOGCWMSDimensionWrapper at the specified index. |
int |
getDimensionCount()
Returns the number of dimension objects within the request to the WMS.
|
String |
getExceptionFormat()
Returns the exception format value that is used by the WMS to encode service exception reports.
|
ILcdExceptionHandler |
getExceptionHandler()
Returns the exception handler of this
ALcdWMSProxy |
String |
getFeatureInfoFormat()
Returns the feature info format value that is used when sending
GetFeatureInfo requests to the WMS. |
String |
getMapFormat()
Returns the map format value that is used when sending
GetMap requests to the WMS. |
List<ALcdWMSNamedLayer> |
getNamedLayers(boolean aOnlyVisible,
boolean aOnlyQueryable)
This method returns a list of named layers that are registered on this proxy object.
|
double |
getPixelSize()
Returns the configured pixel size.
|
TLcdSLDStyledLayerDescriptor |
getStyledLayerDescriptor()
Returns the Styled Layer Descriptor (SLD) which will be sent along with requests.
|
URL |
getStyledLayerDescriptorURL()
Return the URL pointing to a valid Styled Layer Descriptor (SLD), which will be sent along with
requests.
|
abstract TLcdWMSStyledNamedLayerWrapper |
getStyledNamedLayer(int aIndex)
Returns the
TLcdWMSStyledNamedLayerWrapper at an index. |
abstract int |
getStyledNamedLayerCount()
Returns the number of styled named layer objects within the request to the WMS.
|
abstract String |
getSupportedMapFormat(int aIndex)
Returns the supported map format at the given index.
|
abstract int |
getSupportedMapFormatCount()
Returns the number of map formats supported by the WMS.
|
abstract ALcdOGCWMSCapabilities |
getWMSCapabilities()
Returns an
ALcdOGCWMSCapabilities instance that contains the capabilities of the WMS. |
abstract ALcdWMSNamedLayer |
getWMSRootNamedLayer(int aIndex)
Returns the top level layer at a given index.
|
abstract int |
getWMSRootNamedLayerCount()
Returns the number of top level
ALcdWMSNamedLayer instances. |
void |
insertIntoCache(Object aKey,
Object aObject)
Inserts a cache Object corresponding to the given key Object.
|
boolean |
isBackgroundImageTransparent()
Returns if the WMS is request to return an image with a transparent background.
|
abstract boolean |
isCacheImage()
Returns whether the images returned by the WMS are cached.
|
boolean |
isInvertXYForEPSG4326()
Returns true if the bounding box coordinates should be inverted in case the world reference of the
request is EPSG:4326 and the WMS version is 1.3.0.
|
abstract boolean |
isSupportedXYworldReference(ILcdXYWorldReference aXYWorldReference,
ALcdWMSNamedLayer aWMSNamedLayer)
Tests if the given
ILcdXYWorldReference is supported for the given layer. |
abstract void |
moveStyledNamedLayer(TLcdWMSStyledNamedLayerWrapper aStyledNamedLayer,
int aToIndex)
Moves the
TLcdWMSStyledNamedLayerWrapper from its current position to another specified index. |
abstract void |
putAdditionalParameter(String aParameterName,
String aParameterValue)
Sets an additional parameter for connecting to the WMS.
|
abstract void |
removeAdditionalParameter(String aParameterName)
Removes the additional parameter with the given name.
|
Object |
removeCachedObject(Object aKey)
Looks up and removes the cached Object corresponding to the given key.
|
void |
removeDimension(int aIndex)
Removes the
TLcdOGCWMSDimensionWrapper at the specified index. |
abstract void |
removeStyledNamedLayer(int aIndex)
Removes the
TLcdWMSStyledNamedLayerWrapper at an index. |
void |
setBackgroundImageTransparent(boolean aTransparent)
Sets if the WMS should return an image whose background is transparent.
|
abstract void |
setCacheImage(boolean aCacheImage)
Sets whether the images returned by the WMS should be cached.
|
void |
setExceptionFormat(String aExceptionFormat)
Sets the exception format value to be used by the WMS to encode service exception reports.
|
void |
setExceptionHandler(ILcdExceptionHandler aExceptionHandler)
Sets the exception handler which is to be used by this proxy.
|
void |
setFeatureInfoFormat(String aFeatureInfoFormat)
Sets the feature info format value to be used when sending
GetFeatureInfo requests to the WMS. |
void |
setInvertXYForEPSG4326(boolean aInvertXYForEPSG4326)
Sets whether the bounding box coordinates should be inverted in case the world reference of the
request is EPSG:4326 and the WMS version is 1.3.0.
|
void |
setMapFormat(String aMapFormat)
Sets the map format value to be used when sending
GetMap requests to the WMS. |
void |
setPixelSize(double aPixelSize)
Sets the pixel size that should be passed to the WMS server.
|
void |
setStyledLayerDescriptor(TLcdSLDStyledLayerDescriptor aSLD)
Sets a Styled Layer Descriptor (SLD) to send along with requests.
|
void |
setStyledLayerDescriptorURL(URL aURL)
Sets an URL pointing to a valid Styled Layer Descriptor (SLD), to send along with requests.
|
static TLcdWMSDataSource |
toDataSource(ALcdWMSProxy aWMSProxy)
Converts the settings configured in the
{@link ALcdWMSProxy WMS proxy} object into a
WMS data source representation. |
public Image createImage(int aWidth, int aHeight, ILcdXYWorldReference aXYWorldReference, ILcdBounds aBounds, Color aBackgroundColor)
createImageInputStream
, to which this default
implementation delegates.GetMap
request with the given parameters to the WMS server configured in the
capabilities (see getWMSCapabilities()
), and returns the result as an
Image
object, if recognized as such. If the result is not an image (e.g., a
service exception or an HTTP error), null
is returned.
This method delegates by default to createImageInputStream(int, int, com.luciad.view.ILcdXYWorldReference, com.luciad.shape.ILcdBounds, java.awt.Color)
.
aWidth
- the width of the map.aHeight
- the height of the map.aXYWorldReference
- the reference in which the map should be returned.aBounds
- the area of interest, specified in the reference of the map to be
returned.aBackgroundColor
- the background color to use for the map.Image
containing the map returned by the WMS, or null
if
the result is not recognized.public abstract InputStream createImageInputStream(int aWidth, int aHeight, ILcdXYWorldReference aXYWorldReference, ILcdBounds aBounds, Color aBackgroundColor) throws IOException
createImageInputStream(TLcdWMSGetMapContext)
insteadGetMap
request with the given parameters to the WMS configured
in the capabilities (see getWMSCapabilities()
), and returns the result
as an InputStream
object.aWidth
- the width of the map.aHeight
- the height of the map.aXYWorldReference
- the reference in which the map should be returned.aBounds
- the area of interest, specified in the reference of the map to be returned.aBackgroundColor
- the background color to use for the map.InputStream
containing the result of a WMS GetMap
request with the given parameters.TLcdOGCWMSServiceException
- when the server sends a service exception report.TLcdOGCWMSHttpException
- when a HTTP error is received.TLcdOGCWMSException
- in all other cases (e.g. incorrect request properties, unrecognized result of the server, ...).IOException
public abstract InputStream createImageInputStream(TLcdWMSGetMapContext aGetMapContext) throws IOException
GetMap
request with the given parameters to the WMS configured
in the capabilities (see getWMSCapabilities()
), and returns the result
as an InputStream
object.aGetMapContext
- the GetMap contextInputStream
containing the result of a WMS GetMap
request with the given parameters.TLcdOGCWMSServiceException
- when the server sends a service exception report.TLcdOGCWMSHttpException
- when a HTTP error is received.TLcdOGCWMSException
- in all other cases (e.g. incorrect request properties, unrecognized result of the server, ...).IOException
public abstract InputStream createFeatureInfoInputStream(int aWidth, int aHeight, ILcdXYWorldReference aXYWorldReference, ILcdBounds aBounds, Color aBackgroundColor, int aX, int aY, int aFeatureCount) throws IOException
createFeatureInfoInputStream(TLcdWMSGetFeatureInfoContext, TLcdWMSGetFeatureInfoParameters)
insteadGetFeatureInfo
request with the given parameters to the WMS configured
in the capabilities (see getWMSCapabilities()
), and returns the result
as an InputStream
object.aWidth
- the width of the map of interest.aHeight
- the height of the map of interest.aXYWorldReference
- the reference in which the map should be generated.aBounds
- the area of interest, specified in the reference of the generated map.aBackgroundColor
- the background color to use for the map (note: the result of a GetFeatureInfo
request can also
be a map with the feature painted selected and/or labeled, instead of just textual information).aX
- the x coordinate in pixels of the point of interest.aY
- the y coordinate in pixels of the point of interest.aFeatureCount
- the maximum number of features per layer for which feature information shall be returned.
If other than a positive integer, the default value 1 will be used, following the WMS specification.InputStream
containing the result of a WMS GetFeatureInfo
request with the given parameters.TLcdOGCWMSServiceException
- when the server sends a service exception report.TLcdOGCWMSHttpException
- when a HTTP error is received.TLcdOGCWMSException
- in all other cases (e.g. incorrect request properties, unrecognized result of the server, ...).IOException
public abstract InputStream createFeatureInfoInputStream(TLcdWMSGetFeatureInfoContext aGetFeatureInfoContext, TLcdWMSGetFeatureInfoParameters aGetFeatureInfoParameters) throws IOException
Sends a GetFeatureInfo
request with the given parameters to the WMS configured
in the capabilities (see getWMSCapabilities()
), and returns the result
as an InputStream
object. It is possible to specify additional query parameters
using the given TLcdWMSGetFeatureInfoParameters
object.
When the given TLcdWMSGetFeatureInfoParameters
object doesn't specify a certain
parameter, a default parameter is used. For example, when not specifying a feature info format, the feature info
format set on this object will be used. When not specifying a set of layers to query, all layers will be queried.
aGetFeatureInfoContext
- The GetFeatureInfo contextaGetFeatureInfoParameters
- The (optional) GetFeatureInfo parameters. Should not be null
.InputStream
containing the result of a WMS GetFeatureInfo
request with the given parameters.TLcdOGCWMSServiceException
- when the server sends a service exception report.TLcdOGCWMSHttpException
- when a HTTP error is received.TLcdOGCWMSException
- in all other cases (e.g. incorrect request properties, unrecognized result of the server, ...).IOException
public String getMapFormat()
GetMap
requests to the WMS.
Its value is one of the supported map formats (specified by its MIME-type).setMapFormat(java.lang.String)
,
getSupportedMapFormat(int)
public void setMapFormat(String aMapFormat)
GetMap
requests to the WMS.
Its value has to be one of the map formats returned by
ALcdOGCWMSCapabilities.getSupportedMapFormat(int)
.aMapFormat
- the value of the map format property.getMapFormat()
,
getSupportedMapFormat(int)
public String getFeatureInfoFormat()
GetFeatureInfo
requests to the WMS.
Its value is one of the supported feature info formats (specified by its MIME-type).setFeatureInfoFormat(java.lang.String)
,
ALcdOGCWMSCapabilities.getSupportedFeatureInfoFormat(int)
public void setFeatureInfoFormat(String aFeatureInfoFormat)
GetFeatureInfo
requests to the WMS.
Its value has to be one of the feature info formats returned by
ALcdOGCWMSCapabilities.getSupportedFeatureInfoFormat(int)
.aFeatureInfoFormat
- the value of the feature info format property.getFeatureInfoFormat()
,
ALcdOGCWMSCapabilities.getSupportedFeatureInfoFormat(int)
public String getExceptionFormat()
setExceptionFormat(String)
public void setExceptionFormat(String aExceptionFormat)
ALcdOGCWMSCapabilities.getSupportedExceptionFormat(int)
or null for the default exception format.aExceptionFormat
- the value of the exception format property.getExceptionFormat()
public abstract int getSupportedMapFormatCount()
getWMSCapabilities().getSupportedMapFormatCount()
.public abstract String getSupportedMapFormat(int aIndex) throws IndexOutOfBoundsException
getWMSCapabilities().getSupportedMapFormat(int)
.aIndex
- the index of the map format to return.IndexOutOfBoundsException
- in case of an invalid index.public abstract int getWMSRootNamedLayerCount()
ALcdWMSNamedLayer
instances.
This is equivalent with getWMSCapabilities().getWMSRootNamedLayerCount()
.ALcdWMSNamedLayer
instances.public abstract ALcdWMSNamedLayer getWMSRootNamedLayer(int aIndex) throws IndexOutOfBoundsException
getWMSCapabilities().getWMSRootNamedLayer(int)
.aIndex
- the index of the top level layer.IndexOutOfBoundsException
- if the index is out of bounds.public abstract void addStyledNamedLayer(TLcdWMSStyledNamedLayerWrapper aStyledNamedLayer)
aStyledNamedLayer
- the styled named layer.public abstract int getStyledNamedLayerCount()
public abstract TLcdWMSStyledNamedLayerWrapper getStyledNamedLayer(int aIndex) throws IndexOutOfBoundsException
TLcdWMSStyledNamedLayerWrapper
at an index.aIndex
- the index of the TLcdWMSStyledNamedLayerWrapper
.TLcdWMSStyledNamedLayerWrapper
at an index.IndexOutOfBoundsException
- in case of an invalid index value.public abstract void moveStyledNamedLayer(TLcdWMSStyledNamedLayerWrapper aStyledNamedLayer, int aToIndex) throws IndexOutOfBoundsException, NoSuchElementException
TLcdWMSStyledNamedLayerWrapper
from its current position to another specified index.aStyledNamedLayer
- the TLcdWMSStyledNamedLayerWrapper
to move.aToIndex
- the index to move to.IndexOutOfBoundsException
- in case of an invalid index value.NoSuchElementException
- if the TLcdWMSStyledNamedLayerWrapper
does not exists within the list.public abstract void removeStyledNamedLayer(int aIndex) throws IndexOutOfBoundsException
TLcdWMSStyledNamedLayerWrapper
at an index.aIndex
- the index of the TLcdWMSStyledNamedLayerWrapper
to remove.IndexOutOfBoundsException
- in case of an invalid index value.public abstract void clearStyledNamedLayers()
TLcdWMSStyledNamedLayerWrapper
s.public void setStyledLayerDescriptor(TLcdSLDStyledLayerDescriptor aSLD)
Another approach to configure an SLD is to specify an URL that points to the SLD.
This is possible through the method setStyledLayerDescriptorURL(java.net.URL)
.
Only one SLD can be specified at a given time. Setting an SLD with this method therefore
overrides any configured SLD URL (see getStyledLayerDescriptorURL()
) and vice
versa.
aSLD
- A valid SLD.setStyledLayerDescriptorURL(java.net.URL)
public TLcdSLDStyledLayerDescriptor getStyledLayerDescriptor()
null
is returned.null
if no SLD has been specified.public void setStyledLayerDescriptorURL(URL aURL)
Another approach to configure an SLD is to set an SLD domain object that will be embedded
in the request itself. This is possible through the method
setStyledLayerDescriptor(com.luciad.wms.sld.model.TLcdSLDStyledLayerDescriptor)
.
Only one SLD can be specified at a given time. Setting a link to an SLD with this method
therefore overrides any configured SLD domain object (see getStyledLayerDescriptor()
)
and vice versa.
aURL
- A URL which points to a valid SLD.setStyledLayerDescriptor(com.luciad.wms.sld.model.TLcdSLDStyledLayerDescriptor)
public URL getStyledLayerDescriptorURL()
null
is returned.null
if no URL has been specified.public final List<ALcdWMSNamedLayer> getNamedLayers(boolean aOnlyVisible, boolean aOnlyQueryable)
This method returns a list of named layers that are registered on this proxy object. The returned list contains:
getStyledNamedLayer
.setStyledLayerDescriptor
or setStyledLayerDescriptorURL
. In that case, it will retrieve the layers from
that SLD. In case of an SLD named layer, it will be converted to
an ALcdWMSNamedLayer
; in case of an SLD user layer
, a dummy
ALcdWMSNamedLayer
will be used as placeholder, with world bounds.aOnlyVisible
- true
to only return visible named layers.aOnlyQueryable
- true
to only return queryable named layer, i.e. layers for which GetFeatureInfo requests are enabled.null
.public void addDimension(TLcdOGCWMSDimensionWrapper aDimension)
aDimension
- the dimension with the extent.public int getDimensionCount()
public TLcdOGCWMSDimensionWrapper getDimension(int aIndex) throws IndexOutOfBoundsException
TLcdOGCWMSDimensionWrapper
at the specified index.aIndex
- the index of the TLcdOGCWMSDimensionWrapper
.TLcdOGCWMSDimensionWrapper
at the specified index.IndexOutOfBoundsException
- in case of an invalid index value.public void removeDimension(int aIndex)
TLcdOGCWMSDimensionWrapper
at the specified index.aIndex
- the index of the TLcdOGCWMSDimensionWrapper
to remove.IndexOutOfBoundsException
- in case of an invalid index value.public void clearDimensions()
TLcdOGCWMSDimensionWrapper
s.public void setBackgroundImageTransparent(boolean aTransparent)
aTransparent
- the new transparent property value.isBackgroundImageTransparent()
public boolean isBackgroundImageTransparent()
setBackgroundImageTransparent(boolean)
public void setPixelSize(double aPixelSize)
PIXELSIZE
parameter, it can take it into account when evaluation scale ranges.aPixelSize
- The size of a pixel on the client screen, in mm. Should be larger than 0.public double getPixelSize()
setPixelSize(double)
public abstract void putAdditionalParameter(String aParameterName, String aParameterValue) throws IllegalArgumentException
aParameterName
- the name of the parameter.aParameterValue
- the corresponding value.IllegalArgumentException
- if the parameter name is illegal.public abstract void removeAdditionalParameter(String aParameterName)
aParameterName
- the name of the parameter to be removed.public abstract boolean isSupportedXYworldReference(ILcdXYWorldReference aXYWorldReference, ALcdWMSNamedLayer aWMSNamedLayer)
ILcdXYWorldReference
is supported for the given layer.aXYWorldReference
- the world reference to test.aWMSNamedLayer
- the named layer to check against.ILcdXYWorldReference
is supported for the given layer.public abstract ALcdOGCWMSCapabilities getWMSCapabilities()
ALcdOGCWMSCapabilities
instance that contains the capabilities of the WMS.ALcdOGCWMSService
instance that contains the capabilities of the WMS.public abstract boolean isCacheImage()
public abstract void setCacheImage(boolean aCacheImage)
aCacheImage
- the new image caching property value.public ILcdExceptionHandler getExceptionHandler()
ALcdWMSProxy
setExceptionHandler
, null if none has been set.public void setExceptionHandler(ILcdExceptionHandler aExceptionHandler)
aExceptionHandler
- A valid exception handler, or null to remove the current exception handler.public boolean isInvertXYForEPSG4326()
public void setInvertXYForEPSG4326(boolean aInvertXYForEPSG4326)
For WMS version 1.1.1, the order is defined as x=lon, y=lat. In version 1.3.0 it was decided that the order should be consistent with the order defined in the EPSG:4326 reference which is lat/lon. Consequently, some WMS 1.3.0 servers have changed their interpretation of EPSG:4326 coordinates, while others sticked to the old (WMS 1.1.1) interpretation.
Also note that EPSG:4326 is officially deprecated, so this problem can be avoided if the server supports different reference systems.
By default this is set to false.
aInvertXYForEPSG4326
- True if coordinates should be inverted for EPSG:4326 and WMS 1.3.0.public ILcdBounds getBounds()
ILcdBounded
ILcdBounds
by which the geometry of this ILcdBounded
object
is bounded.
If the geometry does not allow retrieving valid bounds (for example a polyline with 0 points)
the return value is unspecified.
It is highly recommended to return an undefined
bounds.
You can create undefined bounds using the default constructors
of TLcdLonLatBounds
or TLcdXYBounds
.
getBounds
in interface ILcdBounded
ILcdBounds
by which the geometry of this ILcdBounded
object
is bounded.public void insertIntoCache(Object aKey, Object aObject)
ILcdCache
insertIntoCache
in interface ILcdCache
aKey
- the key Object that will be used to identify the Object.
The key must therefore be a unique identifier, typically the caller
itself: insertIntoCache(this, ...)
.aObject
- the Object to be cached.public Object getCachedObject(Object aKey)
ILcdCache
getCachedObject
in interface ILcdCache
aKey
- the key Object that was used for storing the cache Object.public Object removeCachedObject(Object aKey)
ILcdCache
removeCachedObject
in interface ILcdCache
aKey
- the key Object that was used for storing the cache Object.public void clearCache()
ILcdCache
clearCache
in interface ILcdCache
public final ALcdWMSNamedLayer findWMSNamedLayer(String aNamedLayerName)
Returns the WMS layer from the capabilities for which the unique
layer name
equals the given name.
aNamedLayerName
- The name of the searched WMS named layerALcdWMSNamedLayer
from the WMS capabilities with name aNamedLayerName
,
or null
when no such layer can be found.public Object clone()
public static TLcdWMSDataSource toDataSource(ALcdWMSProxy aWMSProxy)
{@link ALcdWMSProxy WMS proxy}
object into a
WMS data source
representation.
The following settings are taken into account:
{@link TLcdSLDStyledLayerDescriptor} styled layer descriptor
.aWMSProxy
- the WMS proxy object.