public class WMSImagery extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
WMSImagery.WMSGetCapabilitiesException
An exception that is thrown if there was an error while getting the capabilities of the WMS server.
|
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
CAPABILITIES_QUERY_STRING |
private static javax.xml.namespace.QName |
CAPABILITIES_ROOT_111 |
private java.net.URL |
capabilitiesUrl |
private static javax.xml.namespace.QName |
CAPABILITITES_ROOT_130 |
private java.util.List<java.lang.String> |
formats |
private java.lang.String |
getMapUrl |
private java.util.Map<java.lang.String,java.lang.String> |
headers |
private java.util.List<LayerDetails> |
layers |
private static javax.xml.namespace.QName |
QN_ABSTRACT |
private static javax.xml.namespace.QName |
QN_BOUNDINGBOX |
private static javax.xml.namespace.QName |
QN_CAPABILITY |
private static javax.xml.namespace.QName |
QN_CRS |
private static javax.xml.namespace.QName |
QN_DCPTYPE |
private static javax.xml.namespace.QName |
QN_EASTBOUNDLONGITUDE |
private static javax.xml.namespace.QName |
QN_EX_GEOGRAPHIC_BBOX |
private static javax.xml.namespace.QName |
QN_FORMAT |
private static javax.xml.namespace.QName |
QN_GET |
private static javax.xml.namespace.QName |
QN_GETMAP |
private static javax.xml.namespace.QName |
QN_HTTP |
private static javax.xml.namespace.QName |
QN_LATLONBOUNDINGBOX |
private static javax.xml.namespace.QName |
QN_LAYER |
private static javax.xml.namespace.QName |
QN_NAME |
private static javax.xml.namespace.QName |
QN_NORTHBOUNDLATITUDE |
private static javax.xml.namespace.QName |
QN_ONLINE_RESOURCE |
private static javax.xml.namespace.QName |
QN_REQUEST |
private static javax.xml.namespace.QName |
QN_SERVICE |
private static javax.xml.namespace.QName |
QN_SOUTHBOUNDLATITUDE |
private static javax.xml.namespace.QName |
QN_SRS |
private static javax.xml.namespace.QName |
QN_STYLE |
private static javax.xml.namespace.QName |
QN_TITLE |
private static javax.xml.namespace.QName |
QN_WESTBOUNDLONGITUDE |
private static java.lang.String |
REQUEST_GET_CAPABILITIES |
private static java.lang.String |
SERVICE_WMS |
private java.lang.String |
title |
private java.lang.String |
version |
static java.lang.String |
WMS_NS_URL
WMS namespace address
|
Constructor and Description |
---|
WMSImagery(java.lang.String url)
Make getCapabilities request towards given URL
|
WMSImagery(java.lang.String url,
java.util.Map<java.lang.String,java.lang.String> headers)
Make getCapabilities request towards given URL using headers
|
Modifier and Type | Method and Description |
---|---|
private void |
attemptGetCapabilities(java.lang.String url) |
boolean |
belowWMS130() |
java.lang.String |
buildGetMapUrl(java.util.List<DefaultLayer> selectedLayers,
boolean transparent)
Returns URL for accessing GetMap service.
|
java.lang.String |
buildGetMapUrl(java.util.List<LayerDetails> selectedLayers,
java.util.List<java.lang.String> selectedStyles,
boolean transparent) |
java.lang.String |
buildGetMapUrl(java.util.List<LayerDetails> selectedLayers,
java.util.List<java.lang.String> selectedStyles,
java.lang.String format,
boolean transparent) |
java.lang.String |
buildGetMapUrl(java.util.List<java.lang.String> selectedLayers,
java.util.Collection<java.lang.String> selectedStyles,
java.lang.String format,
boolean transparent) |
java.lang.String |
buildRootUrl() |
java.lang.String |
buildRootUrlWithoutCapabilities() |
private void |
calculateChildren() |
private static double |
getDecimalDegree(java.lang.String value) |
java.util.Collection<java.lang.String> |
getFormats()
Returns the list of supported formats.
|
java.util.List<LayerDetails> |
getLayers()
Returns the list of top-level layers.
|
java.util.List<LayerDetails> |
getLayers(java.util.List<DefaultLayer> defaultLayers) |
java.lang.String |
getPreferredFormat()
Gets the preferred format for this imagery layer.
|
java.util.Collection<java.lang.String> |
getServerProjections(java.util.List<LayerDetails> selectedLayers)
Returns projections that server supports for provided list of layers.
|
java.lang.String |
getTitle() |
(package private) static boolean |
imageFormatHasTransparency(java.lang.String format) |
(package private) static boolean |
isImageFormatSupported(java.lang.String format) |
(package private) static boolean |
isImageFormatSupported(java.lang.String format,
java.lang.String... mimeFormats) |
private static boolean |
isImageFormatSupportedWarn(java.lang.String format) |
private static java.lang.String |
normalizeUrl(java.lang.String serviceUrlStr) |
private void |
parseAndAddStyle(javax.xml.stream.XMLStreamReader reader,
LayerDetails ld) |
private static Bounds |
parseBBox(Projection conv,
java.lang.String miny,
java.lang.String minx,
java.lang.String maxy,
java.lang.String maxx) |
private Bounds |
parseBoundingBox(javax.xml.stream.XMLStreamReader reader,
Projection conv) |
private void |
parseCapability(javax.xml.stream.XMLStreamReader reader) |
private Bounds |
parseExGeographic(javax.xml.stream.XMLStreamReader reader) |
private void |
parseLayer(javax.xml.stream.XMLStreamReader reader,
LayerDetails parentLayer) |
private void |
parseRequest(javax.xml.stream.XMLStreamReader reader) |
private void |
parseService(javax.xml.stream.XMLStreamReader reader) |
private boolean |
tagEquals(javax.xml.namespace.QName a,
javax.xml.namespace.QName b) |
ImageryInfo |
toImageryInfo(java.lang.String name,
java.util.List<LayerDetails> selectedLayers,
java.util.List<java.lang.String> selectedStyles,
java.lang.String format,
boolean transparent)
Creates ImageryInfo object from this GetCapabilities document
|
private static final java.lang.String SERVICE_WMS
private static final java.lang.String REQUEST_GET_CAPABILITIES
private static final java.lang.String CAPABILITIES_QUERY_STRING
public static final java.lang.String WMS_NS_URL
private static final javax.xml.namespace.QName CAPABILITITES_ROOT_130
private static final javax.xml.namespace.QName QN_ABSTRACT
private static final javax.xml.namespace.QName QN_CAPABILITY
private static final javax.xml.namespace.QName QN_CRS
private static final javax.xml.namespace.QName QN_DCPTYPE
private static final javax.xml.namespace.QName QN_FORMAT
private static final javax.xml.namespace.QName QN_GET
private static final javax.xml.namespace.QName QN_GETMAP
private static final javax.xml.namespace.QName QN_HTTP
private static final javax.xml.namespace.QName QN_LAYER
private static final javax.xml.namespace.QName QN_NAME
private static final javax.xml.namespace.QName QN_REQUEST
private static final javax.xml.namespace.QName QN_SERVICE
private static final javax.xml.namespace.QName QN_STYLE
private static final javax.xml.namespace.QName QN_TITLE
private static final javax.xml.namespace.QName QN_BOUNDINGBOX
private static final javax.xml.namespace.QName QN_EX_GEOGRAPHIC_BBOX
private static final javax.xml.namespace.QName QN_WESTBOUNDLONGITUDE
private static final javax.xml.namespace.QName QN_EASTBOUNDLONGITUDE
private static final javax.xml.namespace.QName QN_SOUTHBOUNDLATITUDE
private static final javax.xml.namespace.QName QN_NORTHBOUNDLATITUDE
private static final javax.xml.namespace.QName QN_ONLINE_RESOURCE
private static final javax.xml.namespace.QName CAPABILITIES_ROOT_111
private static final javax.xml.namespace.QName QN_SRS
private static final javax.xml.namespace.QName QN_LATLONBOUNDINGBOX
private final java.util.Map<java.lang.String,java.lang.String> headers
private java.lang.String version
private java.lang.String getMapUrl
private java.net.URL capabilitiesUrl
private final java.util.List<java.lang.String> formats
private java.util.List<LayerDetails> layers
private java.lang.String title
public WMSImagery(java.lang.String url) throws java.io.IOException, WMSImagery.WMSGetCapabilitiesException
url
- service urljava.io.IOException
- when connection error when fetching get capabilities documentWMSImagery.WMSGetCapabilitiesException
- when there are errors when parsing get capabilities documentjava.nio.file.InvalidPathException
- if a Path object cannot be constructed for the capabilities cached filepublic WMSImagery(java.lang.String url, java.util.Map<java.lang.String,java.lang.String> headers) throws java.io.IOException, WMSImagery.WMSGetCapabilitiesException
url
- service urlheaders
- HTTP headers to be sent with requestjava.io.IOException
- when connection error when fetching get capabilities documentWMSImagery.WMSGetCapabilitiesException
- when there are errors when parsing get capabilities documentjava.nio.file.InvalidPathException
- if a Path object cannot be constructed for the capabilities cached fileprivate void calculateChildren()
public java.util.List<LayerDetails> getLayers()
public java.util.Collection<java.lang.String> getFormats()
public java.lang.String getPreferredFormat()
public java.lang.String buildRootUrl()
public java.lang.String buildRootUrlWithoutCapabilities()
public java.lang.String buildGetMapUrl(java.util.List<DefaultLayer> selectedLayers, boolean transparent)
getServerProjections(List)
)
* {width} - that needs to be replaced with width of the tile
* {height} - that needs to be replaces with height of the tile
* {bbox} - that needs to be replaced with area that should be fetched (in {proj} coordinates)
Format of the response will be calculated using getPreferredFormat()
selectedLayers
- list of DefaultLayer selection of layers to be showntransparent
- whether returned images should contain transparent pixels (if supported by format)public java.lang.String buildGetMapUrl(java.util.List<LayerDetails> selectedLayers, java.util.List<java.lang.String> selectedStyles, boolean transparent)
selectedLayers
- selected layers as subset of the tree returned by getLayers()
selectedStyles
- selected styles for all selectedLayerstransparent
- whether returned images should contain transparent pixels (if supported by format)buildGetMapUrl(List, boolean)
public java.lang.String buildGetMapUrl(java.util.List<LayerDetails> selectedLayers, java.util.List<java.lang.String> selectedStyles, java.lang.String format, boolean transparent)
selectedLayers
- selected layers as subset of the tree returned by getLayers()
selectedStyles
- selected styles for all selectedLayersformat
- format of the response - one of getFormats()
transparent
- whether returned images should contain transparent pixels (if supported by format)buildGetMapUrl(List, boolean)
public java.lang.String buildGetMapUrl(java.util.List<java.lang.String> selectedLayers, java.util.Collection<java.lang.String> selectedStyles, java.lang.String format, boolean transparent)
selectedLayers
- selected layers as list of stringsselectedStyles
- selected styles of layers as list of stringsformat
- format of the response - one of getFormats()
transparent
- whether returned images should contain transparent pixels (if supported by format)buildGetMapUrl(List, boolean)
private boolean tagEquals(javax.xml.namespace.QName a, javax.xml.namespace.QName b)
private void attemptGetCapabilities(java.lang.String url) throws java.io.IOException, WMSImagery.WMSGetCapabilitiesException
java.io.IOException
WMSImagery.WMSGetCapabilitiesException
private void parseService(javax.xml.stream.XMLStreamReader reader) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
private void parseCapability(javax.xml.stream.XMLStreamReader reader) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
private void parseRequest(javax.xml.stream.XMLStreamReader reader) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
private void parseLayer(javax.xml.stream.XMLStreamReader reader, LayerDetails parentLayer) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
public boolean belowWMS130()
private void parseAndAddStyle(javax.xml.stream.XMLStreamReader reader, LayerDetails ld) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
private Bounds parseExGeographic(javax.xml.stream.XMLStreamReader reader) throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
private Bounds parseBoundingBox(javax.xml.stream.XMLStreamReader reader, Projection conv)
private static Bounds parseBBox(Projection conv, java.lang.String miny, java.lang.String minx, java.lang.String maxy, java.lang.String maxx)
private static double getDecimalDegree(java.lang.String value)
private static java.lang.String normalizeUrl(java.lang.String serviceUrlStr) throws java.net.MalformedURLException
java.net.MalformedURLException
private static boolean isImageFormatSupportedWarn(java.lang.String format)
static boolean isImageFormatSupported(java.lang.String format)
static boolean isImageFormatSupported(java.lang.String format, java.lang.String... mimeFormats)
static boolean imageFormatHasTransparency(java.lang.String format)
public ImageryInfo toImageryInfo(java.lang.String name, java.util.List<LayerDetails> selectedLayers, java.util.List<java.lang.String> selectedStyles, java.lang.String format, boolean transparent)
name
- name of imagery layerselectedLayers
- layers which are to be used by this imagery layerselectedStyles
- styles that should be used for selectedLayersformat
- format of the response - one of getFormats()
transparent
- if layer should be transparentpublic java.util.Collection<java.lang.String> getServerProjections(java.util.List<LayerDetails> selectedLayers)
selectedLayers
- list of layerspublic java.util.List<LayerDetails> getLayers(java.util.List<DefaultLayer> defaultLayers)
defaultLayers
- default layers that should select layer objectpublic java.lang.String getTitle()