2024.0

2024.0.10

Bug fixOGC Server

LCD-13592
The WFS server returned duplicate identifiers for GetFeature requests with a property name filter in case the source data did not have an explicit identifier (such as SHP files).

2024.0.08

ImprovementOGC Server

LCD-13516
It is now possible to configure WMS and WMTS services to produce HTTP 500 Internal Error responses when any exception occurs during painting. You can enable this behavior by setting the system property com.luciad.fusion.wms.server.errorResponseOnPaintException to true.

2024.0.06

Bug fixOGC Server

LCD-13525
Since version 2024.0, the WFS server could return exception reports for valid POST (XML) requests.

2024.0.05

Bug fixOGC Server

LCD-13508
The following WCS server issues have been fixed related to the handling of the optional "Sections" parameter in a GetCapabilities request:
  • The parameter was not supported for WCS 1.1 POST requests.
  • The parameter was not validated for WCS 1.0 GET and POST requests.

Bug fixOGC Server

LCD-13510
The WFS server returned a WFS 1.1 response instead of a WFS 2.0 response for a WFS 2.0 GetFeature hits request.

2024.0.04

Bug fixOGC Server

LCD-13475
When using WMS layer dimensions the following dimensions are now published in the capabilities:
  • Dimensions with an axis without a unit.
  • Dimensions with strings as possible values.

2024.0.03

ImprovementOGC Server

LCD-13447
The decoding behavior of spatial filters included in WFS GetFeature POST requests has now been aligned between all WFS versions: similar as for WFS 1.x requests, spatial filters in WFS 2.0 POST requests are now decoded and transformed to the geographic reference of the requested WFS feature type. For GET requests, this was already the case.

Bug fixOGC Server

LCD-13434
Fixed a bug where the output of a WFS GetFeature request failed on data types with a Map property in combination with property name filtering.

Bug fixOGC Server

LCD-13423
The WFS server could not handle property name filters for property names that were renamed during the encoding to GML. Such a rename can occur when a property name in the original data starts with a character that is not allowed as first character in an XML element - for example, a number.

2024.0

New featureOGC Server

The WCS server in the OGC Web Server Suite now supports WCS version 2.0.1.

ImprovementOGC Server

LCD-13326
The WMS Server now supports a vendor-specific FILTER parameter that operates like the WFS GetFeature FILTER parameter for both GetMap and GetFeatureInfo requests.

ImprovementOGC Server

LCD-9574
The tray icon of the OGC server sample now has an additional entry to open the landing page.

Upgrade considerationOGC Server

Security updates have been applied to the following sample dependencies of the OGC server sample:
Group ID Artifact ID Old Version New Version
org.springframework.boot spring-boot 2.7.14 3.2.1
org.springframework.boot spring-boot-starter 2.7.14 3.2.1
org.springframework.boot spring-boot-autoconfigure 2.7.14 3.2.1
org.springframework.boot spring-boot-starter-jetty 2.7.8 3.2.1
org.springframework.boot spring-boot-starter-json 2.7.14 3.2.1
org.springframework.boot spring-boot-starter-logging 2.7.14 3.2.1
org.springframework.boot spring-boot-starter-web 2.7.14 3.2.1
org.springframework spring-aop 5.3.29 6.1.2
org.springframework spring-beans 5.3.29 6.1.2
org.springframework spring-context 5.3.29 6.1.2
org.springframework spring-core 5.3.29 6.1.2
org.springframework spring-expression 5.3.29 6.1.2
org.springframework spring-jdbc 5.3.29 6.1.2
org.springframework spring-tx 5.3.29 6.1.2
org.springframework spring-web 5.3.29 6.1.2
org.springframework spring-webmvc 5.3.29 6.1.2
com.zaxxer HikariCP 4.0.3 5.0.1
org.ow2.asm asm-commons 9.4 9.6
org.ow2.asm asm-tree 9.4 9.6
com.fasterxml.jackson.datatype jackson-datatype-jdk8 2.14.2 2.15.3
com.fasterxml.jackson.datatype jackson-datatype-jsr310 2.14.2 2.15.3
com.fasterxml.jackson.module jackson-module-parameter-names 2.14.2 2.15.3
org.apache.tomcat.embed tomcat-embed-el 9.0.78 10.1.17
org.eclipse.jetty jetty-client 9.4.50.v20221201 12.0.7
org.eclipse.jetty jetty-http 9.4.50.v20221201 12.0.7
org.eclipse.jetty jetty-io 9.4.50.v20221201 12.0.7
org.eclipse.jetty jetty-plus 9.4.50.v20221201 12.0.7
org.eclipse.jetty jetty-security 9.4.50.v20221201 12.0.7
org.eclipse.jetty jetty-server 9.4.50.v20221201 12.0.7
org.eclipse.jetty jetty-util 9.4.50.v20221201 12.0.7
org.eclipse.jetty jetty-xml 9.4.50.v20221201 12.0.7
org.slf4j jul-to-slf4j 1.7.36 2.0.9
org.slf4j slf4j-api 1.7.36 2.0.9
org.apache.logging.log4j log4j-api 2.17.2 2.21.1
org.apache.logging.log4j log4j-to-slf4j 2.17.2 2.21.1
ch.qos.logback logback-classic 1.2.12 1.4.14
ch.qos.logback logback-core 1.2.12 1.4.14
org.yaml snakeyaml 2.0 2.2
jakarta.annotation jakarta.annotation-api 1.3.5 2.1.1
jakarta.websocket jakarta.websocket-api 1.1.2 2.1.1

The following dependencies have been added:
Group ID Artifact ID Version
org.eclipse.jetty.ee10 jetty-ee10-annotations 12.0.7
org.eclipse.jetty.ee10 jetty-ee10-plus 12.0.7
org.eclipse.jetty.ee10 jetty-ee10-servlet 12.0.7
org.eclipse.jetty.ee10 jetty-ee10-servlets 12.0.7
org.eclipse.jetty.ee10 jetty-ee10-webapp 12.0.7
org.eclipse.jetty.ee10 jetty-ee10-websocket-jakarta-client 12.0.7
org.eclipse.jetty.ee10 jetty-ee10-websocket-jakarta-common 12.0.7
org.eclipse.jetty.ee10 jetty-ee10-websocket-jakarta-server 12.0.7
org.eclipse.jetty.ee10 jetty-ee10-websocket-jetty-server 12.0.7
org.eclipse.jetty.ee10 jetty-ee10-websocket-servlet 12.0.7
org.eclipse.jetty jetty-alpn-client 12.0.7
org.eclipse.jetty jetty-jndi 12.0.7
org.eclipse.jetty jetty-session 12.0.7
jakarta.websocket jakarta.websocket-client-api 2.1.1

The following dependencies have been removed:
Group ID Artifact ID Version
org.eclipse.jetty jetty-annotations 9.4.50.v20221201
org.eclipse.jetty jetty-continuation 9.4.50.v20221201
org.eclipse.jetty jetty-servlet 9.4.50.v20221201
org.eclipse.jetty jetty-servlets 9.4.50.v20221201
org.eclipse.jetty jetty-util-ajax 9.4.50.v20221201
org.eclipse.jetty jetty-webapp 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-api 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-client 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-common 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-server 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-servlet 9.4.50.v20221201

2023.1

2023.1.15

Bug fixOGC Server

LCD-13361
Fixed an issue where empty tiles were returned by the WMTS server if the WGS84 tile matrix set was used.

Bug fixOGC Server

LCD-13362
Corrected the CRS of the GoogleMapsCompatible well-known tile matrix set in the capabilities document returned by the WMTS server: it now includes the minor version (urn:ogc:def:crs:EPSG:6.18.3:3857).

2023.1.13

Bug fixOGC Server

LCD-13323
The WCS server now supports WCS 1.1.x GetCoverage requests that neither specify a bounding box nor a resolution.

2023.1.11

ImprovementOGC Server

LCD-13310
Aligned with the OGC WMS standard, the request URL prefixes listed in the WMS capabilities now always end with a question mark.

Bug fixOGC Server

LCD-13314
The WCS server did not handle the Update Sequence parameter optionally present in a WCS GetCapabilities request: there was no validation against the value defined in the WCS server's capabilities.

Bug fixOGC Server

LCD-13313
The ServiceExceptionReport response generated by the WCS server in case of issues did not fully adhere to the WCS 1.0.0 standard: the version was not set to 1.0.0 and the schema location for the default namespace was not correct.

2023.1.06

Bug fixOGC Server

LCD-13253
The WFS server's GetFeature response contained unexpected namespaces when WFS 1.1.0 or WFS 2.0 was used. For these versions, all namespaces related to WFS 1.1.0, WFS 2.0, GML 3.1.1 and GML 3.2 were advertised, instead of only the relevant namespaces for the used WFS and GML versions.

2023.1.04

Bug fixOGC Server

LCD-13215
The WFS server did not close all streams resulting from ILcdModel#query calls.

2023.1.02

Bug fixOGC Server

LCD-13073
TLcdWMSGXYViewFactory#createGXYView(boolean, int, int, ILcdBounds, ILcdXYWorldReference, Color, aRequestContext) was no longer called during the creation of a TLcdGXYViewBufferedImage. Extensions of TLcdWMSGXYViewFactory overriding this method to change the configuration of TLcdGXYViewBufferedImage where no longer applied because of this.

2023.1.01

Bug fixOGC Server

LCD-13144
Fixed WCS coverage generation to better take into account the appropriate level of detail from a source data set with multiple level of details. Before the coverage generation would use less detailed information when encountering values representing a NODATA value. This could result in using inappropriate values when generating coverages having a more detailed level of detail.

2023.1

ImprovementOGC Server

The WCS server's GetCoverage handling logic now reuses threads across multiple requests improving the response time depending on the used data and hardware.

ImprovementOGC Server

LCD-13074
The WFS server's capability to output features as GeoJSON has been made more robust: features that cannot be encoded to GeoJSON (for example, because of an unsupported geometry type) are now skipped with a warning instead of causing a WFS GetFeature response failure.

ImprovementOGC Server

LCD-13022, LCD-13016, LCD-8758
The WFS server is now more flexible against accepting a geometry property name in an OGC Filter condition. Next to a fully-qualified geometry property name (with a prefix bound to a namespace, such as gml:geometry), it now also accepts an unqualified property name (such as geometry). Additionally, warnings such as "Error while converting filter" are no longer logged for valid geometry property names.

ImprovementOGC Server

LCD-12995
The priority of the ILcdGXYViewEncoder is now used to determine the order of the supported image formats advertised in the capabilities of the WMS Server.

Bug fixOGC Server

LCD-13160
The WMS server now takes the PIXELSIZE request parameter into account when evaluating SLD scale ranges. When this request parameter is not present, the OGC default of 0.28mm per pixel is used for the scale calculation, unless the pixel size is overridden on the server using the luciad.dpi VM parameter.

2023.0

2023.0.12

Bug fixOGC Server

The red hatched pattern returned by the WCS Server in case the requested data is too detailed is now only returned for datasets with RGBA images. In other cases an empty image that complies with the band semantics of the dataset is returned.

2023.0.11

Bug fixOGC Server

LCD-13085
The WCS server's GetCoverage performance improvement introduced by LCD-12948 could result in too many open threads, causing OutOfMemoryError issues on certain platforms.

Bug fixOGC Server

LCD-13108
When sending a WMTS request without request parameter, the returned exception report did not refer to the correct exception code: this should be MissingParameterValue instead of InvalidParameterValue.

2023.0.07

ImprovementOGC Server

LCD-12948
The WCS server's GetCoverage handling logic now takes better advantage of multiple CPU cores, improving the response time with up to 50% depending on the used data and hardware.

2023.0.04

Bug fixOGC Server

LCD-12967
The WFS server could reject a valid property name filter if the requested feature type was backed by a model with multiple data types.

2023.0.02

ImprovementOGC Server

LCD-12933
The WFS server did not properly log issues when the data in response to a GetFeature request could not be encoded to the requested format (GML or GeoJSON).

Bug fixOGC Server

LCD-12955
The WFS server could not serve data defined in a topocentric geographical reference.

Bug fixOGC Server

LCD-12944
The WCS server's caching capabilities did not work for WCS 1.1.0 GetCoverage requests that defined a desired output resolution instead of an image size.

2023.0

Upgrade considerationOGC Server

Security updates have been applied to the following sample dependencies of the OGC server sample:
Group ID Artifact ID Old Version New Version
org.springframework.boot spring-boot 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-starter 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-autoconfigure 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-starter-json 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-starter-logging 2.1.2.RELEASE 2.7.8
org.springframework.boot spring-boot-starter-web 2.1.2.RELEASE 2.7.8
org.springframework spring-aop 5.1.4.RELEASE 5.3.25
org.springframework spring-beans 5.1.4.RELEASE 5.3.25
org.springframework spring-context 5.1.4.RELEASE 5.3.25
org.springframework spring-core 5.1.4.RELEASE 5.3.25
org.springframework spring-expression 5.1.4.RELEASE 5.3.25
org.springframework spring-jdbc 5.1.4.RELEASE 5.3.25
org.springframework spring-tx 5.1.4.RELEASE 5.3.25
org.springframework spring-web 5.1.4.RELEASE 5.3.25
org.springframework spring-webmvc 5.1.4.RELEASE 5.3.25
com.zaxxer HikariCP 3.2.0 4.0.3
org.ow2.asm asm 5.0.4 9.4
com.fasterxml.jackson.datatype jackson-datatype-jdk8 2.9.8 2.14.2
com.fasterxml.jackson.datatype jackson-datatype-jsr310 2.9.8 2.14.2
com.fasterxml.jackson.module jackson-module-parameter-names 2.9.8 2.14.2
org.eclipse.jetty.websocket javax-websocket-client-impl 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty.websocket javax-websocket-server-impl 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-annotations 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-client 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-continuation 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-http 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-io 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-plus 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-security 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-server 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-servlet 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-servlets 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-util 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-util-ajax 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-webapp 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty jetty-xml 9.4.3.v20170317 9.4.50.v20221201
org.slf4j jul-to-slf4j 1.7.25 1.7.36
org.slf4j slf4j-api 1.7.25 1.7.36
org.apache.logging.log4j log4j-api 2.11.1 2.17.2
org.apache.logging.log4j log4j-to-slf4j 2.11.1 2.17.2
ch.qos.logback logback-classic 1.2.3 1.2.11
ch.qos.logback logback-core 1.2.3 1.2.11
org.yaml snakeyaml 1.23 1.33
org.eclipse.jetty.websocket websocket-api 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-client 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-common 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-server 9.4.3.v20170317 9.4.50.v20221201
org.eclipse.jetty.websocket websocket-servlet 9.4.3.v20170317 9.4.50.v20221201

The following dependencies have been added:
Group ID Artifact ID Version
org.springframework.boot spring-boot-starter-jetty 2.7.8
jakarta.annotation jakarta.annotation-api 1.3.5
jakarta.websocket jakarta.websocket-api 1.1.2
org.apache.tomcat.embed tomcat-embed-el 9.0.71
org.ow2.asm asm-commons 9.4
org.ow2.asm asm-tree 9.4

The following dependencies have been removed:
Group ID Artifact ID Version
org.eclipse.jetty jetty-unixsocket 9.4.3.v20170317
org.eclipse.jetty jetty-schemas 9.4.3.v20170317
org.eclipse.jetty jetty-rewrite 9.4.3.v20170317
org.eclipse.jetty jetty-quickstart 9.4.3.v20170317
org.eclipse.jetty jetty-proxy 9.4.3.v20170317
org.eclipse.jetty jetty-proxy 9.4.3.v20170317
org.eclipse.jetty jetty-nosql 9.4.3.v20170317
org.eclipse.jetty jetty-memcached-sessions 9.4.3.v20170317
org.eclipse.jetty jetty-jndi 9.4.3.v20170317
org.eclipse.jetty jetty-jmx 9.4.3.v20170317
org.eclipse.jetty jetty-jaspi 9.4.3.v20170317
org.eclipse.jetty jetty-jaas 9.4.3.v20170317
org.eclipse.jetty jetty-infinispan 9.4.3.v20170317
org.eclipse.jetty jetty-gcloud-session-manager 9.4.3.v20170317
org.eclipse.jetty jetty-deploy 9.4.3.v20170317
org.eclipse.jetty jetty-alpn-server 9.4.3.v20170317
org.eclipse.jetty jetty-continuation 9.4.3.v20170317
org.eclipse.jetty jetty-continuation 9.4.3.v20170317
org.eclipse.jetty.cdi cdi-core 9.4.3.v20170317
org.eclipse.jetty.cdi cdi-servlet 9.4.3.v20170317
org.eclipse.jetty.cdi cdi-websocket 9.4.3.v20170317
com.fasterxml.jackson.core jackson-core 2.9.8
com.fasterxml.jackson.core jackson-databind 2.9.8
javax.annotation javax.annotation-api 1.3.2
javax.websocket javax.websocket-api 1.0

2022.1

2022.1.06

Upgrade considerationOGC Server

LF-2368
The following OGC server sample dependencies have been upgraded:
Group ID Artifact ID Old Version New Version
com.fasterxml.jackson.core jackson-core 2.9.8 2.14.0
com.fasterxml.jackson.core jackson-databind 2.9.8 2.14.0
com.fasterxml.jackson.datatype jackson-datatype-jdk8 2.9.8 2.14.0
com.fasterxml.jackson.datatype jackson-datatype-jsr310 2.9.8 2.14.0
com.fasterxml.jackson.module jackson-module-parameter-names 2.9.8 2.14.0

2022.1.05

Bug fixOGC Server

LCD-12806
The WFS server can now handle an unbound property name in a WFS Transaction Update request by interpreting it in the feature type's namespace.

2022.1.01

ImprovementOGC Server

LCD-12719
The sample OGC server now allows to request the XML schemas from the WMS server capabilities.

Bug fixOGC Server

LCD-12724
The fix implemented in LCD-12679 was not complete. The WMS capabilities now advertise the SLD operations in the correct XML namespace.

2022.1

ImprovementOGC Server

LCD-12354
You can now plug in an ILcdWFSClientModelEncoderFactory by adding an @LcdServiceannotation to the implementation. This interface is used by WFS services to encode features. Only the factory with the highest priority is used. By default, a factory with support for GML 2 / 3.1 / 3.2 and GeoJSON is used.

Upgrade considerationOGC Server

LCD-12725
The dependency to the SLF4J Java Util Logging implementation (slf4j-jdk14.jar) has been removed. This dependency was only used by the OGC Services sample in LuciadLightspeed. LuciadFusion Platform required the use of the Logback implementation of SLF4J (logback-classic.jar). The OGC Services sample will now also use the Logback implementation of SLF4J. The Logback implementation of SLF4J is now included in the third party sample dependencies of LuciadLightspeed.

2022.0

2022.0.16

Bug fixOGC Server

LCD-12679
The WMS server now generates WMS capabilities responses using the official XML schemas for WMS and the Styled Layer Descriptor (SLD) extension.

2022.0.15

ImprovementOGC Server

LCD-12655
A WMS GeoJSON GetFeatureInfo response could not be generated if the geometry of the included feature(s) was too complex for GeoJSON. To improve this, the response now uses the bounding box of those geometries, encoded as a GeoJSON-compatible polygon.

Bug fixOGC Server

LCD-12665
The WFS server did not support the DESC SortBy parameter in WFS 2.0 GetFeature HTTP GET requests.

2022.0.14

Bug fixOGC Server

LCD-12647
A change in the default XML element name suffix used by WFS GetFeature responses since version 2022.0 could lead to feature type identification issues when using WFS transactions. This has been fixed.

2022.0.13

Bug fixOGC Server

LCD-12542
When using a property name filter in a WFS GetFeature request, it is no longer needed to include the unique identifier property, if defined for the requested data; this is a property annotated with a TLcdPrimaryKeyAnnotation. This fix makes sure that the response contains a valid unique identifier for each feature, regardless of any WFS property name filter.

Bug fixOGC Server

LCD-12608
When making a WMS request using a single dimension value for a layer which declares to have a range with resolution 0, the server would incorrectly return an error response with invalid sample dimension value.

2022.0.06

ImprovementOGC Server

LCD-12511
The WFS server could return a service exception report for a valid WFS 2.0 GetFeature request that included an OGC Filter combining an IsLike condition with other property-based conditions.

2022.0.03

ImprovementOGC Server

LF-2254
It is now possible to sort results by bounding box when performing a CSW GetRecords request. Sorting by bounding box will perform the sort based on the area of the bounding box. That is, bounding boxes with smaller areas will be sorted before bounding boxes with larger areas, when using the ascending sort order.

2022.0.01

Bug fixOGC Server

LCD-12408
When performing a WFS GetFeature request with property name filtering, the GeoJSON output still contained all property names, where the filtered properties had a null value. This has been fixed: the filtered properties are no longer present in the json response.

2022.0

ImprovementOGC Server

LCD-11939
The OGC server sample now integrates with Spring Boot. It takes advantage of Java Servlet 3.0 annotations, which makes it much easier to set up. Additionally, a new article How to use Spring Boot with the OGC Web Server Suite explains how to integrate your own server created with the OGC Web Server Suite in a Spring Boot application.

ImprovementOGC Server

The WMS and WMTS server now support GetFeatureInfo requests with text/html or text/xml as output format. When setting the output format to text/xml, the generated XML is based on the WMTS GetFeatureInfo XSD, which can be found here.

ImprovementOGC Server

LF-2159

It is now possible to implement request-based SLD rendering customizations for a LuciadFusion product with an SLD style. To accomplish this, a new method has been added to the WMS API: ALcdSLDWMSGXYLayerFactory#createGXYLayer(ILcdModel aModel, ALcdWMSLayer aWMSLayer, TLcdSLDFeatureTypeStyle[] aStyle, TLcdWMSRequestContext aRequestContext) Based on the request stored in the TLcdWMSRequestContext changes can be applied to the TLcdSLDFeatureTypeStyle[] to allow for SLD rendering customizations.

It is now also possible to configure feature type styles on the server side. This is done by plugging in a custom implementation of a ILcdWMSSLDFeatureTypeStyleProvider in the ALcdOGCWMSCommandDispatcherFactory by overriding the method ALcdOGCWMSCommandDispatcherFactory#createSLDFeatureTypeStyleProvider(ServletConfig aServletConfig).

ImprovementOGC Server

The WMS server now supports map rotations: by means of a new custom GetMap request parameter angle, WMS clients can indicate the map rotation in degrees, measured clockwise around the center of the map.

ImprovementOGC Server

It is now possible to configure access constraints and contact information of the service metadata of the WMS server capabilities. This information can be configured using the ALcdWMSServiceMetaData.

Upgrade considerationOGC Server

To allow for greater extensibility, the signature of the method ILcdWMSGetLegendGraphicRequestEncoder#encode(ALcdWMSLayer,ALcdSLDLayer,TLcdSLDStyledLayerDescriptor,String,String,float,int,int,OutputStream,TLcdWMSRequestContext) has been changed into #encode(TLcdWMSGetLegendGraphicRequestContext,TLcdWMSRequestContext,OutputStream). TLcdWMSGetLegendGraphicRequestContext gives access to the original method arguments and a number of additional arguments.

The change impacts WMS implementations that use an implementation of ILcdWMSGetLegendGraphicRequestEncoder.

Upgrade considerationOGC Server

LCD-12142
The version of Ehcache was updated from 3.2.0 to 3.10.0 to improve compatibility with Java 17.

Upgrade considerationOGC Server

The createFilteredModel(ILcdModel aSourceModel, TLcdWFSGetFeatureConstraints aConstraints) method of ILcdWFSFilteredModelFactory now imposes new conditions on the elements in the model. Any ILcdPolyline or ILcdPolygon model elements now also need to implement ILcdCurve or ILcdRing, respectively.

2021.1

2021.1.15

ImprovementOGC Server

LCD-12335
The WFS server now also accepts DescribeFeatureType XML requests with an unbound TypeName element to improve interoperability with non-compliant third-party OGC WFS clients.

2021.1.01

Bug fixOGC Server

LCD-12080
The WMS server could falsely advertise support for GetMap SLD requests. This is only supported when ALcdSLDWMSGXYLayerFactory instances are registered. Now the WMS server no longer advertises this when no such layer factories are registered.

2021.0

2021.0.11

Bug fixOGC Server

LF-2178
TLcdCSWRecordTransformationFactory would incorrectly apply ISO metadata CRS information to ISO metadata WGS 84 bounding boxes. This resulted in CSW and ATOM records with inconsistent bounding boxes.

Bug fixOGC Server

LF-2179
ALcdCSWCommandDispatcherFactory would return an exception when asking to include {http://www.opengis.net/ows}BoundingBox in the response of a GetRecords request.

Bug fixOGC Server

LF-2173
TLcdOGCWMSCommandDispatcher threw a runtime exception when performing a GetMap request with duplicate layers.

2021.0.09

Bug fixOGC Server

LCD-12028
Fixed the handling of WMS GetFeatureInfo requests for features with a geometry consisting of an extruded shape or a composite curve.

2021.0.04

ImprovementOGC Server

LCD-11947
The SLD text rendering option conflictResolution to enable/disable label decluttering (see release note of LCD-11850) is now also supported in the WMS server. This allows a WMS client to include an SLD in a request that enables(default) or disables label decluttering.

2021.0

Bug fixOGC Server

LCD-11827
A GML application schema returned by the WFS server for a DescribeFeatureType request no longer includes a GML FeatureCollection element and type, because WFS uses its own FeatureCollection.

Upgrade considerationOGC Server

3D data (point cloud or mesh) can no longer be published in a WMS or WMTS service in LuciadFusion. The 3D data was not visible when published in either WMS or WMTS. Please use an OGC 3D Tiles service to publish 3D data.

2020.1

2020.1.25

Bug fixOGC Server

LCD-11860

The caching in the WMS server now takes additional request parameters into account for generated images.

There is also the possibility to configure which additional request parameters must be taken into account when trying to reuse views from the view pool. This is only intended for the case where you have extended the WMS server with one or more non-standard parameters that affect the layer creation.

2020.1.24

Bug fixOGC Server

LCD-11795
The WFS server could not handle DescribeFeatureType requests for multiple feature types that share the same namespace.

Bug fixOGC Server

LCD-11799
The XML Schema response to a WFS DescribeFeatureType request affecting multiple feature types now uses a more sensible target namespace (one of the feature types' namespaces) instead of always using http://www.opengis.net/gml.

Bug fixOGC Server

LCD-11808
The WFS capabilities now list the feature types' namespaces on the root element, which enhances interoperability with 3rd party WFS clients. Additionally, the feature types's namespace prefixes are now always used instead of an automatically determined prefix.

2020.1.23

Bug fixOGC Server

LF-2080
The WFS capabilities did not advertise GeoJSON as supported output format for feature types backed by an Oracle, Informix, IBM Db2 or Microsoft SQL Server database.

Bug fixOGC Server

LF-2103
TLcdCSWRecordPropertyRetrieverProvider now supports the {http://www.opengis.net/ows}BoundingBox property.

Bug fixOGC Server

LCD-11833
The WCS GetCapabilities response did not include the title in the service identification section in case of WCS 1.1.

2020.1.12

Bug fixOGC Server

LCD-11702
The WMS in the OGC server sample samples.ogc.server.StartOGCServices always advertised world bounds for models that were not of type ILcd2DBoundsIndexedModel - which is for example the case for SQLite-based formats such as GeoPackage. The bounds calculation logic has now been improved to be able to advertise accurate bounds in these cases.

2020.1.10

Bug fixOGC Server

LCD-11651
The WMS layer name included in the metadata of each feature in a GeoJSON GetFeatureInfo response was not correct in case the WMS layer combined multiple data sources.

2020.1.05

ImprovementOGC Server

LCD-11607
A GeoJSON GetFeatureInfo response now includes the layer name for each encoded feature, to ease traceability between selected features and the WMS layer(s) in which they are contained. This layer name is encoded as a foreign member in the GeoJSON output, aligned with the GeoJSON RFC (https://tools.ietf.org/html/rfc7946#section-6).

2020.0

2020.0.10

ImprovementOGC Server

LCD-11392

The WCS server now uses a non-persistent cache for tiled GetCoverage requests. This cache makes sure that subsequent tile requests are handled much faster, improving the performance and scalability of the WCS server when using tiled requests. See ALcdOGCWCSCommandDispatcherFactory for more information and configuration options.

This implies that for data that changes dynamically, extra care needs to be taken to make sure caches are invalidated. To this end, the API ILcdCoverageOffering#getUpdateSequence and TLcdDefaultCoverageOffering#setUpdateSequence is introduced to indicate that a WCS coverage has changed. By default, the implementations of these methods (mostly) assume static data/coverages. For WCS servers that serve data that changes over time (for example data updates), these methods should be used correctly. Note that the LuciadFusion Platform already takes care of this. An alternative is to disable the caches.

Bug fixOGC Server

LCD-11397
When requesting application/json the result of GetFeatureInfo was limited to features from the first layer. Now all features are returned within the GeoJSON response. The geometries of the features are all converted to WGS-84.

2020.0.09

ImprovementOGC Server

LCD-11388
A new method getModelReferenceFormatter() has been added to TLcdWFSClientModelEncoderFactory to ease access to the model reference formatter property in extensions. Additionally, the factory method ALcdOGCWFSCommandDispatcherFactory#createClientModelEncoderFactory now configures a default model reference formatter on created instances using the model reference formatter returned by ALcdOGCWFSCommandDispatcherFactory#getModelReferenceFormatter().

Bug fixOGC Server

LCD-11389
The WFS server's GeoJSON feature encoding support (provided by TLcdWFSClientModelEncoderFactory) now uses the ILcdOGCFeatureIDRetriever of the requested feature type to uniquely identify objects.

2020.0.07

Bug fixOGC Server

LCD-11303
The WFS server could not correctly cope with custom models in which the content of the used TLcdDataType could change at runtime (for instance, triggered by an additional request property, a user role, ...).

Bug fixOGC Server

LCD-11342
In case of a WFS request including an OGC Filter 1.x with GmlObjectId or FeatureId elements, the WFS server did not automatically translate this into an OGC Filter with a condition. Aligned with the API documentation of TLcdOGCFilter, this is now addressed by translating the received OGC Filter into a TLcdOGCFilter with a TLcdOGCResourceIdsOperator condition. The default filtering logic in the WFS server was not affected by this bug; it is only of relevance when a custom TLcdWFSFilteredModelFactory is used to customize the filtering logic.

2019.1

2019.1

ImprovementOGC Server

LCD-10925
Improved the interoperability with legacy WFS clients that do not recognize the reference notation urn:ogc:def:crs:OGC:1.3:CRS84; for this reference, the WFS capabilities now also include the legacy CRS:84 notation als additional reference.

2019.0

2019.0.06

Bug fixOGC Server

LCD-10865
A WFS 2.0 GetFeature request containing a PropertyName filter and sent as an XML POST request triggered a ClassCastException.

2019.0.04

Bug fixOGC Server

LCD-10808
A WFS Transaction Update request was implemented by a delete and insert of respectively the original and updated object, instead of an actual update of the original object. This could trigger unexpected object id changes in case of a database back-end.

Bug fixOGC Server

LCD-10803
Performing a GetFeatureInfo request on a queryable raster layer would fail for the text/plain info format.

2019.0.03

ImprovementOGC Server

LCD-9862
Removed obsolete section in OGC server documentation regarding setting up of native libraries. Native libraries used within LuciadLightspeed / LuciadFusion are extracted from jars automatically.

ImprovementOGC Server

LCD-10740
The SERVICE request parameter validation check in the WMS, WFS, WMTS, WCS and CSW server has been made case insensitive to improve interoperability with non-compliant OGC web service clients.

Bug fixOGC Server

LCD-10783, LCD-7660, LCD-7633
The handling of WFS 1.1 GetFeature requests could trigger a service exception report in case of a POST request with a BBOX filter containing coordinates outside the coordinate reference's projection bounds.

2019.0

Upgrade considerationOGC Server

LCD-10353
The class com.luciad.ogc.common.log.TLcdOGCLogFilter has been removed from the API. This Servlet Filter implementation was introduced in the past for request logging purposes but was never integrated / used in any of the OGC web service (WFS / WMS / WCS) implementations. The removal of this class should not pose any impact.

2018.1

2018.1.15

Bug fixOGC Server

LCD-10505
The axis-order was not correctly handled for all coordinate reference systems. For example the Polish CRS EPSG:2180 reverses the X and Y axis which needs to be reflected in the GetMap BBOX parameter.

2018.1.04

ImprovementOGC Server

LCD-10442
Improved the message in the WMS service exception report for the case when the parameter for the coordinate reference system is missing for operations like GetMap and GetFeatureInfo. In case of WMS 1.3.0 the parameter CRS is required and for WMS 1.1.x the parameter SRS is required.

2018.1.03

ImprovementOGC Server

LCD-10201
A number of improvements have been implemented related to the WFS server's interoperability with 3rd party WFS client solutions:
  • For GML 3.1 / 3.2 responses, linear GML elements are used by default. This makes sure that ILcdPolyline and ILcdPolygon instances are respectively encoded to LineString and LinearRing elements, regardless of their interpolation. Previously, GeodesicString elements were used for a geodesic interpolation.
  • The sample WFS server now uses qualified feature type names by default. Additionally, these feature type names are reused as XML element names in the GML output data.

Bug fixOGC Server

The output format encoding in the DescribeFeatureType requests in XML Schema location URLs could contain an unexpected + character.

2018.1.02

Bug fixOGC Server

LCD-10404
Fixed an issue where the WMTS server tried to write data to an already closed response. This issue occured when the client closed the connection while the server was still working on it.

Bug fixOGC Server

The WMS server's command dispatcher TLcdOGCSLDWMSCommandDispatcher did not always include the request context parameter when invoking the createGXYLayer method on the configured layer factory of type ALcdSLDWMSGXYLayerFactory.

2018.1.01

Bug fixOGC Server

LCD-10305
The resolution logic introduced by LCD-9859 could cause the return of RGBA images for elevation coverages, leading to possible data interpretation issues in WCS clients.

2018.0

2018.0.12

ImprovementOGC Server

LCD-10187
The WFS server is now flexible against the casing used in the output format parameter in GetFeature requests.

Bug fixOGC Server

LCD-10212, LCD-10213, LF-1626
Fixed an issue where the WMTS server could produce:
  • inverted-color images for jpeg output.
  • non-transparent images for png output with requested transparency for the map background.
The server now returns a proper image.

Bug fixOGC Server

LCD-10179
Fixed the handling of negative GridOffsets X / Y / Z resolution values in WCS 1.1 GetCoverage requests.

2018.0.10

Bug fixOGC Server

LCD-10155
A threading issue within an internal GXY view pool used by the WMS has been fixed. Internal clean up could result in a NoSuchElementException which in turn would result in HTTP status code 500 (internal server error).

2018.0.04

Bug fixOGC Server

LF-1568
Service exception reports returned by the WMTS service are now of content type 'text/xml'. Previously the content type was not in accordance with the OGC WMTS protocol specification.

Bug fixOGC Server

LF-1568
Service exception reports returned by the WFS service are now of content type 'text/xml'. Previously the content type was not in accordance with the OGC WFS protocol specification.

Bug fixOGC Server

LF-1568
Service exception reports returned by the WCS service are now of content type 'text/xml' when using version 1.1.0 or 1.1.1 of the protocol. Previously the content type was not in accordance with the OGC WCS protocol specification for version 1.1.0 and 1.1.1.

2018.0.02

Bug fixOGC Server

LCD-9930
The default, automatically generated URLs listed in the operations metadata of the WFS capabilities did not include the part covered by a wildcard URL pattern defined in the deployment descriptor.

2018.0

Upgrade considerationOGC Server

The CSW server component is now included in the OGC server component.

2017.1

2017.1.18

ImprovementOGC Server

LF-1476
WMS layer scale ranges are now handled more efficiently in the WMS service, resulting in faster responses for WMS requests outside the visible range.

2017.1.16

ImprovementOGC Server

LCD-9871
The WFS server's GeoJSON output now includes 3D coordinates.

2017.1.15

Bug fixOGC Server

LCD-9859
The WCS Server could get overloaded / generate timeouts in case too large amounts of data were needed to process a GetCoverage request; an example use case is the request of a coverage backed by a large high-resolution data set with only a single level of detail. The WCS Server now uses additional resolution logic to avoid this and return an image with a red hatched pattern in case of a resolution mismatch betweem the request and the data - similar to how raster painting works in the client.

2017.1.13

ImprovementOGC Server

LCD-9266
The performance of WMS GetCapabilities requests were improved for WMS services with a large amount of WMS layers.

2017.1.12

Bug fixOGC Server

LF-1433
Fixed rare threading issue ("Unable to marshal") during GML encoding on the WFS server.

2017.1.11

Bug fixOGC Server

LCD-9792
The BoundingBox element within the WMS capabilities now honours the axis order in case it is expressed in EPSG:4326 iso the default CRS:84.

2017.1.10

Bug fixOGC Server

LCD-9779
A GetMap request with an empty LAYERS for an image size within the cache threshold resulted in an internal server error (NullPointerException). The server now returns a proper WMS exception.

Bug fixOGC Server

LCD-9780
The default value of the configuration option for the interpretation of the axis-order for EPSG:4326 for WMS 1.3.0 requests is changed to true. This makes the default value compliant with the WMS 1.3.0 specification.

Add the following to your WMS web.xml file to disable inversion (making the WMS non-compliant):
      <init-param>
        <param-name>EPSG.4326.latlon</param-name>
        <param-value>false</param-value>
      </init-param>
    

2017.1.07

Bug fixOGC Server

LF-1471
When starting the ogc.server sample from the LuciadFusion release, no slf4j binding could be found, resulting in reduced logging.

2017.1.05

Bug fixOGC Server

LCD-9616
The default value of the configuration option for the interpretation of the axis-order for EPSG:4326 for WMS 1.3.0 requests is changed to true. This makes the default value compliant with the WMS 1.3.0 specification.

Add the following to your WMS web.xml file to disable inversion (making the WMS non-compliant):
      <init-param>
        <param-name>EPSG.4326.latlon</param-name>
        <param-value>false</param-value>
      </init-param>
    

Bug fixOGC Server

The WCS GetCoverage request handler could not handle GetCoverage XML requests using a RectifiedGrid instead of a Grid to specify the desired spatial resolution.

Bug fixOGC Server

LCD-9652
The WCS GetCoverage request handler could not handle geodetic coordinates expressed in a reference with a lat/lon axis order instead of a lon/lat axis order (e.g. urn:ogc:def:crs:EPSG::4326).

2017.1.02

ImprovementOGC Server

LCD-8807
The performance of TLcdWMSCapabilities#findWMSLayer has been improved for the case where there are thousands of layers.

Bug fixOGC Server

LCD-9625
A security issue has been fixed in the OGC web services related to the handling of XML POST requests, that could enable untrustworthy clients to access server information.

2017.1.01

Bug fixOGC Server

LCD-9545
Doing a POST request to the server with an incorrect feature type and a BBOX filter that

Bug fixOGC Server

LF-1369
The WMS server swallowed IllegalArgumentExceptions that are thrown by a delegate ILcdWMSGXYLayerFactory. Because of this, the logs didn't show why a WMS layer could not be created. This made it more difficult, for example, to discover programming errors for custom implementations.

2017.1

ImprovementOGC Server

A number of improvements have been implemented related to the server's support for WFS 2.0:
  • Support has been added for the optional 'RESOURCEID' parameter in a WFS 2.0 GetFeature request. This parameter can be used to query a feature based on its identifier, without the need to specify a feature type.
  • Support has been added for the WFS 2.0 requests ListStoredQueries and DescribeStoredQueries, along with support for the default, standardized stored query urn:ogc:def:query:OGC-WFS::GetFeatureById. This stored query can be used inside GetFeature requests to query a feature based on its identifier.
  • The error reporting in case of invalid requests has been improved.
  • The WFS 2.0 capabilities now include information about constraints and supported conformance classes.

ImprovementOGC Server

LCD-9408
A WMS GetFeatureInfo encoder for the text/plain mime-type has been added. It replaces the encoder that was part of the samples and provides more information about the selected objects. For more details on the encoder have a look at the documentation of TLcdWMSTextPlainGetFeatureInfoEncoder.

Upgrade considerationOGC Server

The CSW API is now final. The following changes were made since the 2017.0 release:
  • ALcdCSWRecordDescriptor has been renamed to TLcdCSWRecordType and all subclasses have been replaced by constants.
  • ILcdCSWQueryHandler is now part of ILcdCSWCapabilitiesProvider.
  • ILcdCSWQueryHandler#getQueryLanguages has moved to ILcdCSWCapabilitiesProvider#getInputRecordTypes.
  • ILcdCSWQueryHandler#getOutputRecordTypes has moved to ILcdCSWCapabilitiesProvider#getOutputRecordTypes.
  • ILcdCSWQueryHandler#getFilterCapabilities has moved to ILcdCSWCapabilitiesProvider#getFilterCapabilities.
  • ILcdCSWQueryHandler#getQueryLanguages has been removed.
  • ALcdCSWFilterQueryHandler#executeFilter now passes the original request.
  • TLcdCSWGetCapabilitiesRequest has been removed.
  • TLcdCSWCommandDispatcherContext has been removed.
  • ALcdCSWCommandDispatcherFactory#createQueryHandler has been moved to ILcdCSWCapabilitiesProvider#getQueryHandler
  • TLcdCSWGetCapabilitiesRequest: removed getVersion and setVersion
  • TLcdCSWOpenSearchTemplate: removed OutputFormat in favor of TLcdCSWRecordType
  • TLcdCSWQuery: split up get/setElements into get/setElements and get/setElementNameSet
  • TLcdCSWElementSetName: renamed get/setValueObject to get/setElementSet
  • TLcdOpenSearchAtomFeed: removed some property constants, use the getters and setters instead
  • TLcdCSWServiceException: has been moved to the com.luciad.ogc.csw package
  • TLcdCSWRecordPropertyRetrieverProvider: now takes a record type as constructor argument
  • Several client API related classes have been moved out of the com.luciad.ogc.csw.server package

2017.0

2017.0.10

Bug fixOGC Server

LCD-9506
A WFS 2.0 Transaction Insert request could trigger a request decoding error in the server.

Bug fixOGC Server

LCD-9466
The property link inside a WFS 2.0 Transaction Update request was not correctly encoded (in the client) and decoded (in the server).

2017.0.06

Bug fixOGC Server

LCD-9371
When registering custom encoders with the same mime-type in the WMS server lower priority encoder implementations overwrote higher priority implementations.

2017.0.02

ImprovementOGC Server

LCD-9197
The disk tile cache checks whether sufficient disk space is left on the device. If not the size of the disk cache is reduced automatically and a warning is logged.

ImprovementOGC Server

LCD-9200
The clearing of the disk cache on exit of the application is improved. Some folders where not deleted cluttering the file system.

2017.0.01

ImprovementOGC Server

LF-1145
It is now possible to add an updateSequence to the WCS Capabilities. See ILcdWCSCapabilitiesProvider#getUpdateSequence.

Bug fixOGC Server

LCD-9244
The OGC WMS server incorrectly used a lon lat instead of a lat lon axis order when interpreting the bounding box information of a GetMap request with CRS urn:ogc:def:crs:EPSG::4326.

2017.0

ImprovementOGC Server

LCD-3555
TLcdWFSClientModelEncoderFactory now includes GeoJSON in its advertised output formats. This made the previously available sample code to support GeoJSON redundant, so that sample code has been removed (WFSClientModelEncoderFactory).

ImprovementOGC Server

A new server and client API for OGC Catalogue Services (CSW) has been introduced.
For more information, see:
  • The OGC CSW Catalog Server developer's guide (CSW_DeveloperGuide.pdf)
  • The class javadoc of TLcdCSWServlet and TLcdCSWClient
  • The package javadoc of com.luciad.ogc.csw

ImprovementOGC Server

In the WFS service, the default implementation of ALcdOGCWFSCommandDispatcherFactory#createModelDecoderFactory returns a TLcdOGCModelDecoderFactory. This factory automatically picks up all the data connectors that are found on the class path. It uses the TLcdServiceLoader to find all the ILcdModelDecoders of the formats that are installed.

ImprovementOGC Server

LCD-6715
In the WCS service, the default implementation of ALcdOGCWCSCommandDispatcherFactory#createModelDecoderFactory returns a TLcdOGCModelDecoderFactory. This factory automatically picks up all the data connectors that are found on the class path. It uses the TLcdServiceLoader to find all the ILcdModelDecoders of the formats that are installed.

ImprovementOGC Server

The WMS now has anti-aliasing enabled by default, which produces smoother rendering results.

ImprovementOGC Server

LCD-8917
The sample WMS server code to monitor a directory for new/removed/updated data, available in samples.wms.server.updater, has been updated to use Java's NIO WatchService API instead of custom directory monitoring logic.

ImprovementOGC Server

The WFS server now supports WFS 2.0.0 clients. This includes OGC Filter 2.0 support. Do note that temporal filtering and stored queries are not yet supported.

ImprovementOGC Server

LCD-3862
There is a default command dispatcher factory available which provides a good starting point for making a Web Map Service with few or no additional programming. The TLcdOGCWMSCommandDispatcherFactory loads most of its functionality using a service loader mechanism. More specifically, implementations of decoders and layer factories are picked up automatically when they are annotated with the appropriate LcdService annotation. The sample command dispatcher factory extends from the default factory and only adds dynamic behavior.

ImprovementOGC Server

WMS server: TLcdWMSModelProvider was added. This ILcdModelProvider has support for multi-dimensional models and has a model cache.

ImprovementOGC Server

LCD-8767
TLcdOWSBoundingBox now implements ILcdBounded. This allows you to retrieve an ILcdBounds object using objects of the TLcdOWSBoundingBox class.

ImprovementOGC Server

ALcdMultiDimensionalModelProvider provides a default implementation of its getModel method that takes dimensional parameters. This adds multidimensional support to WMS if your models implement ILcdMultiDimensionalModel.

Bug fixOGC Server

LCD-8894
WMS Get map requests could suffer from a tiny offset due to rounding errors.

Bug fixOGC Server

The default ILcdModelProvider returned by ALcdOGCWMSCommandDispatcherFactory#createModelProvider threw an IllegalArgumentException instead of an IOException when no model decoder can be found for a given source.

Upgrade considerationOGC Server

The interface ILcdCoverageFilterFactory has been removed from the API. A compile error will notify you if you were using this interface, which we don't anticipate as it was not used effectively. The new ILcdWCSCapabilitiesProvider offers a more powerful and easier-to-use replacement, should there be a need.

Upgrade considerationOGC Server

The caching behavior for ILcdWFSFeatureType on the WFS server has been modified. Previously, caches used the ILcdWFSFeatureType instance itself as key for a cache. This implies that caches didn't work as expected when using different WFS feature type instances that represent the same data.

This instance-based caching mechanism has been replaced by a caching mechanism that uses the following properties as cache key:

  • ILcdWFSFeatureType#getQName: uniquely identifies the WFS feature type.
  • ILcdWFSFeatureType#getUpdateSequence: identifies the 'version' of the WFS feature type. I.e. if a property of the feature type changes, its update sequence should change as well.
  • ILcdOGCModelProvider#getUpdateSequence: identifies the 'version' of the underlying data. I.e. if the data changes, this update sequence should change as well.

Upgrade considerationOGC Server

The WMS server has added caches on two new levels:

  • The command dispatchers now use a mechanism of view pooling. This changes the call order of methods such as TLcdOGCWMSCommandDispatcher.clearGXYView. If needed, the pool size (ALcdWMSCommandDispatcher.setGXYViewPoolSize) can be set to 0 obtain the old behavior.
  • It now uses a non-persistent tile cache for tiled (Tiled WMS) GetMap requests. This cache makes sure that subsequent tile requests are handled much faster, improving the performance and scalability of the WMS server when using tiled requests. See ALcdOGCWMSCommandDispatcherFactory for more information (also on how to disable tile caching for example).

This implies that for data that changes dynamically, extra care needs to be taken to make sure caches are invalidated. To this end, the following API was introduced:

  • ALcdWMSLayer#setUpdateSequence: Used to indicate that a WMS layer has changed. This includes all dependencies such as styles, layer factory implementation, etc...
  • ILcdModelProvider#getModelUpdateSequence: Used to indicate that the underlying data has changed. This can mean that the model has been changed in-memory, or that the underlying data (file/database/...) has been changed.

By default, the implementations of these methods (mostly) assume static data/layers. For WMS servers that serve data that changes over time (for example data updates), these methods should be used correctly. Note that the LuciadFusion Platform already takes care of this. An alternative is to disable the caches.

Upgrade considerationOGC Server

The Java Servlet dependency has been upgraded from version 3.0 to 3.1. Consequently, an application server or servlet container with support for Java Servlet 3.1 or higher is now required for deployment of the server - for instance, Tomcat 8 or higher. The impact of this is expected to be low since Java Servlet 3.1 is widely adopted by application server and servlet container products. The servlet container delivered with the Luciad products, Jetty 9, already supports Servlet 3.1.

Upgrade considerationOGC Server

The Java Servlet dependency has been upgraded from version 3.0 to 3.1. Consequently, an application server or servlet container with support for Java Servlet 3.1 or higher is now required for deployment of the server - for instance, Tomcat 8 or higher. The impact of this is expected to be low since Java Servlet 3.1 is widely adopted by application server and servlet container products. The servlet container delivered with the Luciad products, Jetty 9, already supports Servlet 3.1

Upgrade considerationOGC Server

All WCS request handler implementations are no longer part of the public API:

  • TLcdWCSGetCapabilitiesRequestHandler
  • TLcdWCSDescribeCoverageRequestHandler
  • TLcdWCSGetCoverageRequestHandler

Any unlikely usages of these concrete classes can be replaced as follows:

  • Decoration: in case you were wrapping the request handlers, you can generically wrap them instead, they offered nothing in addition to the ILcdRequestHandler interface.
  • setCoverageOfferingList and setServiceMetaData calls can be replaced by creating/wrapping the ILcdWCSCapabilitiesProvider in the WCS command dispatcher factory. This is a much more powerful, easier and safer approach to achieve similar results. See also the other release note about ILcdWCSCapabilitiesProvider for more information.

Upgrade considerationOGC Server

The ILcdWCSCapabilitiesProvider interface was added. This interface describes the capabilities of a WCS service. Advantages over ILcdCoverageOfferingList are that:

  • it is easier now to update the coverage offering while the service is running.
  • it allows to lazily load models to improve the scalability of the server.
  • it allows to do per-request handling of coverages. This for example allows to filter out coverages for specific users or groups.
  • it separates the configuration/metadata from the actual use of models.

The models should be accessed through the model provider. To this end, the method createModelProvider was added to the ALcdOGCWCSCommandDispatcherFactory. The default implementation TLcdOGCModelProvider maintains a cache for all decoded models.

The ALcdOGCWCSCommandDispatcherFactory allows you to plug in a ILcdWCSCapabilitiesProvider by overriding the createWCSCapabilitiesProvider method.

The methods createServiceMetaData and createCoverageOfferingList of ALcdOGCWCSCommandDispatcherFactory remain to exist but they will be no longer be abstract. Overwriting the new method to create the capabilities provider createWCSCapabilitiesProvider will be the preferred way of working instead of using the two previously mentioned methods.

In order to make sure this new interface is used in the WCS server, the following change was made:

  • TLcdWCSCommandDispatcherContext now contains the methods getCapabilitiesProvider() and getModelProvider() instead of the getCoverageOfferingList() and getServiceMetaData() methods. Usages of these methods can be replaced by the corresponding functionality on the ILcdWCSCapabilitiesProvider.

Upgrade considerationOGC Server

All WFS request handler implementations are no longer part of the public API:

  • TLcdWFSDescribeFeatureTypeRequestHandler
  • TLcdWFSGetCapabilitiesRequestHandler
  • TLcdWFSGetFeatureRequestHandler
  • TLcdWFSLockFeatureRequestHandler
  • TLcdWFSTransactionRequestHandler

Any unlikely usages of these concrete classes can be replaced as follows:

  • Decoration: in case you were wrapping the request handlers, you can generically wrap them instead, they offered nothing in addition to the ILcdRequestHandler interface.
  • setFeatureTypeList calls (which had inherent threading issues) can be replaced by creating/wrapping the ILcdWFSCapabilitiesProvider in the WFS command dispatcher factory. This is a much more powerful, easier and safer approach to achieve similar results. See also the other release note about ILcdWFSCapabilitiesProvider for more information.
  • The TLcdDataModel instances passed to TLcdWFSTransactionRequestHandler can now be configured in the WFS command dispatcher factory. See ALcdOGCWFSCommandDispatcherFactory#createTransactionContentDataModels(). By default, this method, amongst others, returns the AIXM 5.1 data model (if available).

Upgrade considerationOGC Server

LCD-4837

The ILcdWFSCapabilitiesProvider interface was added. This interface describes the capabilities of a WFS service. Advantages over ILcdWFSFeatureTypeList are that:

  • it allows adding/removing data without restarting the server
  • it allows to lazily load models to improve the scalability of the server
  • it allows to do per-request handling of feature type. This for example allows to filter out feature types for specific users or groups.

The ALcdOGCWFSCommandDispatcherFactory allows you to plug in a ILcdWFSCapabilitiesProvider by overriding the createWFSCapabilitiesProvider method.

In order to make sure this new interface is used in the WFS server, the following changes were made:

  • TLcdWFSCommandDispatcherContext now contains a getCapabilitiesProvider() method instead of the getFeatureTypeList(), getServiceProvider() and getServiceMetaData() methods. Usages of these methods can be replaced by the corresponding functionality on the ILcdWFSCapabilitiesProvider.
  • TLcdWFSRequestContext now contains a getCapabilitiesProvider() method instead of the getAvailableFeatureTypes method. Usages of this method can be replaced by a call to ILcdWFSCapabilitiesProvider#getFeatureTypes. It will also be necessary to handle the TLcdWFSServiceException that is thrown by this method (during a request, this exception should not be caught).
  • The TLcdWFSFilteredModelFactory constructor now doesn't take any parameters as input anymore.
  • ALcdOGCWFSCommandDispatcherFactory#createFilteredModelFactory now takes an ILcdWFSCapabilitiesProvider as argument instead of an ILcdWFSFeatureTypeList.

Upgrade considerationOGC Server

The interfaces ILcdRequest and ILcdResponse have been extended with additional methods that are useful in the context of conditional get requests. The methods were already available on the concrete implementations for which internally instance of and casting was done to achieve the desired behavior.

This change affects users that have implemented ILcdRequest and ILcdResponse themselves. There is no need to implement these interfaces yourselve though as there are implementations available within the Luciad product.

Upgrade considerationOGC Server

The interfaces ILcdRequest and ILcdResponse have been extended with additional methods that are useful in the context of conditional get requests. The methods were already available on the concrete implementations, but are now accessible from the interface without the need for downcasting.

This change affects users that have implemented ILcdRequest and ILcdResponse themselves. There is no need to implement these interfaces yourself though as there are implementations available within the Luciad product.

Upgrade considerationOGC Server

The interfaces ILcdKVPRequest and ILcdXMLRequest have been merged within their common super-interface ILcdRequest. Consequently, these interfaces have been removed. This change makes the request interface more in line with the well-known Servlet API, and makes it easier to use. It also allows to deal with other content types in the future, and resolves an API dependency on JDom XML parsing. In addition, extra methods are exposed on ILcdRequest to have access to more information such as the attributes and the user principal.

As a consequence the interface ILcdRequestHandler and the abstract class ALcdOGCCommandDispatcher (and their implementations) have been updated accordingly. They now have a single method void handleRequest(ILcdRequest aRequest, ILcdResponse aResponse) throws TLcdOGCServiceException which is used for all requests. This further simplifies the request handling, allowing implementations to decide if they want to differentiate on the content type of the request or not.

Code that used to differentiate based on the content type of the request (e.g. instanceof ILcdKVPRequest or ILcdRequestHandler.handleRequest(ILcdKVPRequest ...)) needs to be adapted, the compiler will flag these places. Typical OGC service customizations had no need to do this. The type of request can now be determined using the content type of the request, utility methods TLcdServletUtil#isKVPRequest and TLcdServletUtil#isXMLRequest are available.

Upgrade considerationOGC Server

ILcdInitializationConfig now exposes an ILcdServletContext object. This servlet context object contains the configuration for a group of servlets, while ILcdInitializationConfig contains the configuration for a single servlet. This is useful for example to configure a shared cache between servlets. This change normally does not affect anyone as the implementation of this interface is provided by the product.

Upgrade considerationOGC Server

The PNG encoder implementation TLcdGXYViewPNGEncoder now uses the ObjectPlanet PNG encoder, which is part of an additional 3rd party library. The ObjectPlanet PNG encoder library is a lot faster than the previously used JAI based PNG encoding.

As a result the implementation of TLcdGXYViewPNGEncoder.encodeGXYView declares it can throw an IOException. The interface ILcdGXYViewEncoder.encodeGXYView already declared the IOException on its method. This affects only users using the concrete class TLcdGXYViewPNGEncoder, which is very unlikely.

Upgrade considerationOGC Server

The ILcdRequest interface has been extended with a few additional methods. It provides access to the current authenticated user, if any authentication is taking place. It also allows to retrieve programmatically set attributes to pass on information. As instances of this interface are created internally, you are normally not affected by this change.

2016.1

2016.1.31

ImprovementOGC Server

LCD-9028
A new optional servlet configuration parameter "request.baseUrl" has been added to the deployment descriptor of the WMS, WFS and WCS, allowing to manually set a base URL for the service requests listed in the capabilities.

ImprovementOGC Server

LCD-9028
A new optional servlet configuration parameter "request.baseUrl" has been added to the deployment descriptor of Luciad's OGC services, allowing to manually set a base URL for the service requests listed in the capabilities.

2016.1.27

Bug fixOGC Server

LCD-8953
The SLD WMS capabilities XML Schema sld_capabilities_1_3_0.xsd delivered with the WMS server contained a schema location path that was incompatible with Spring Boot.

2016.1.25

ImprovementOGC Server

The WCS server now uses EPSG:4326 as fallback in case the data's native reference does not have an EPSG representation.

2016.1.21

Bug fixOGC Server

LCD-8834
The WFS GetFeature request handler could trigger a NullPointerException in case the query included an OGC Filter with XPath expression and the resulting response was empty.

2016.1.12

Bug fixOGC Server

LCD-8631
The SLD raster styling capability of the WMS server sample could lead to empty image responses, due to data getting rendered asynchronously.

Bug fixOGC Server

LCD-8630
The SLD raster styling capability of the WMS server sample could not handle raster data of type ILcdRaster / ILcdMultilevelRaster / ILcdEarthTileSet if the data was not of the type ALcdImage.

2016.1.06

Bug fixOGC Server

Fixed a recent regression in the WMS server sample that prevented the rendering of Earth data repositories.

2016.1.03

ImprovementOGC Server

LCD-7391
The optional logging servlet filter, TLcdLogFilter, has been upgraded with an improved encryption algorithm (AES in CTR mode) to encode log entries.

Bug fixOGC Server

LCD-8423
The OGC server sample's HTML front-end was not properly populated with sample requests in servlet containers other than the included Jetty server.

2016.1.02

Bug fixOGC Server

LCD-8307
The OGC server sample's ANT build script now replaces '+' characters in jar names with '-', to overcome a deployment compatibility issue with Oracle WebLogic.

Bug fixOGC Server

LCD-8272
The copy constructor of TLcdWMSCapabilities did not copy the registered formats for the WMS SLD profile requests GetLegendGraphic and DescribeLayer.

2016.1

ImprovementOGC Server

LCD-8136
It is now possible to customize GetFeatureInfo request handling to support querying for all features interacting with a given pixel bounds (e.g., provided through an optional parameter). This use case is supported by the existing ALcdWMSCommandDispatcher#performSelectionAt and its sensitivity parameter - which was not correctly taken into account in the past.

Bug fixOGC Server

LCD-8057
The WMS server didn't always respect the painting order when doing a GetFeatureInfo request. This could lead to responses of objects that are painted underneath another object.

Bug fixOGC Server

LCD-8036
The WMS server didn't always respect max feature count parameter of a GetFeatureInfo request.

2016.0

2016.0.12

Bug fixOGC Server

LCD-8130
A regression in recent patches caused incorrect values in images generated by the WCS, in case of source image data with a SinglePixelPackagedSampleModel.

2016.0.11

ImprovementOGC Server

LCD-8087
A launcher script was added for the OGC server sample (OGCServer.sh/bat). Using this script, it is now possible to run the server on a headless machine.

ImprovementOGC Server

TLcdWFSGetFeatureRequestHandler now doesn't log errors anymore when a feature can't be encoded. The stack traces can still be obtained by enabling debug logging for the "com.luciad.ogc.wfs" package.

Bug fixOGC Server

LCD-8079
The samples.ogc.wfs.client sample now uses a default MAXFEATURES value of 1000 in all GetFeature requests, to avoid overloading a server with too large data requests.

Bug fixOGC Server

LCD-8063
The OGC WCS server's GetCapabilities response no longer contains null Strings. If an optional value is not available (e.g., a coverage description), an empty String is used.

2016.0.08

ImprovementOGC Server

LCD-7998
The servlet class TLcdWMSServlet has been extended with a protected factory method createCommandDispatcherFactory(ServletConfig), to allow customization of the command dispatcher factory instance.

2016.0.04

ImprovementOGC Server

LCD-7750
The WCS service has been extended with a convenience parameter in the deployment descriptor (build/ogc/resources/WEB-INF/web.xml) to easily enable / disable GeoTIFF tiling. Although tiling is preferred in terms of performance, disabling it can be required to support 3rd party WCS clients that do not support tiled GeoTIFFs.

2016.0.01

Bug fixOGC Server

LCD-7816
The OGC server sample was initialized with an incorrect classpath, leading to a conflict between Luciad libraries residing in the lib and in the distrib/ogc folder.

Bug fixOGC Server

LCD-7816
The OGC server sample was initialized with an incorrect classpath, leading to potential conflicts between Luciad libraries residing in the lib and in the distrib/ogc folder.

2016.0

ImprovementOGC Server

LCD-7594
The WMS server now properly supports GetFeatureInfo handling for raster data (ALcdImage, ILcdRaster, ILcdMultilevelRaster). The location on the raster data and the corresponding values are automatically determined. Implementations of ILcdWMSGetFeatureInfoRequestEncoder receive the result by means of an ILcdDataObject containing the values.

ImprovementOGC Server

LCD-6799
A set of security improvements have been implemented:
  • Removed the dependency on the legacy JGenerator 2.2 library,
  • Improved the sanitization of response content to be more robust against CRLF injections and cross-site scripting attempts.

ImprovementOGC Server

LCD-5929
The OGC WMS web service previously available in build/wms (containing the build script) and distrib/ogc/LuciadLightspeedWMS_x.x.x (containing a pre-built / ready-to-deploy service) has now been integrated in a combined OGC web service sample, consisting of a WMS, WFS and WCS; the folder build/ogc contains the build script and the folder distrib/ogc/LuciadLightspeedOGC_x.x.x contains a pre-built and ready-to-deploy service. To run the pre-built service, you can still use the script ogc.server.start (.bat/.sh) available in the samples folder, which will deploy the service in a Jetty servlet container.

ImprovementOGC Server

LCD-5929
The OGC WFS web service previously available in build/wfs (containing the build script) and distrib/ogc/LuciadLightspeedWFS_x.x.x (containing a pre-built / ready-to-deploy service) has now been integrated in a combined OGC web service sample, consisting of a WMS, WFS and WCS; the folder build/ogc contains the build script and the folder distrib/ogc/LuciadLightspeedOGC_x.x.x contains a pre-built and ready-to-deploy service. To run the pre-built service, you can still use the script ogc.server.start (.bat/.sh) available in the samples folder, which will deploy the service in a Jetty servlet container.

Bug fixOGC Server

Closing the OutputStream object in a custom implementation of ILcdWMSFeatureInfoRequestEncoder or ILcdGXYViewEncoder resulted in a duplication of the result. This bug has been fixed.

Upgrade considerationOGC Server

To enable WCS request parameter access when customizing request-related operations (data decoding, data encoding), a few API changes have been introduced:
  • A new class TLcdWCSRequestContext has been introduced to access request context parameters such as the original HTTP request and the requested coverage(s).
  • The signature of the method ILcdWCSModelEncoderFactory#createModelEncoder(ILcdModel, ILcdOutputStreamFactory, String) has been changed into ILcdWCSModelEncoderFactory#createModelEncoder(ILcdModel, ILcdOutputStreamFactory, String, TLcdWCSRequestContext).
  • The signature of the methods in ILcdCoverageOfferingList have been changed by means of the introduction of an extra argument of type TLcdWCSRequestContext.
  • The methods ILcdCoverageOfferingList#getCoverageOffering(int, TLcdWCSRequestContext) and ILcdCoverageOfferingList#getCoverageOffering(String, TLcdWCSRequestContext) can now throw an IOException.

The change will impact WCS implementations that implement ILcdWCSModelEncoderFactory and/or ILcdCoverageOfferingList. Affected implementations can simply update the signature ignore the new TLcdWCSRequestContext parameter.

Upgrade considerationOGC Server

LCD-7413
The Java Servlet dependency has been upgraded from version 2.5 to 3.0. Consequently, an application server or servlet container with support for Java Servlet 3.0 or higher is now required for deployment of the server - for instance, Tomcat 7 or higher. The impact of this is expected to be low since Java Servlet 3.0 is widely adopted by application server and servlet container products for over 6 years. The servlet container delivered with the Luciad products, Jetty 8, already supports Servlet 3.0

Upgrade considerationOGC Server

Default Adobe Flash output support in the WMS server has been removed. The API class that supported this, TLcdGXYViewSWFEncoder, and the corresponding dependency on JGenerator 2.2 (jgen-2.2.jar and log4j-1.2.15.jar) have therefore been removed from the product.

If you did not explicitly use Adobe Flash output, this will cause no impact other than a potential build script update (because of the removed libraries). If you did use Adobe Flash output and prefer to keep its support in the Luciad WMS, you can request the source code of TLcdGXYViewSWFEncoder, the JGenerator 2.2 library and integration instructions by sending a mail to support@luciad.com.

2015.1

2015.1.28

Bug fixOGC Server

Invoking the method TLcdWMSRequestContext#getRequest() could result in a NullPointerException.

2015.1.26

ImprovementOGC Server

LCD-7557
The content type of a WCS GetCoverage response containing GeoTIFF data is now always set to the mime type 'image/tiff'; this is the most common mime type to represent TIFF-based data.

ImprovementOGC Server

LCD-7505
It is now possible to change the base URL of the listed requests in the GetCapabilities response, which can be useful to support a setup with a reverse proxy. To support this, the interface ILcdWMSOnlineResourceResolver has been extended with a new type 'CAPABILITIES_REQUEST_BASE_URL', which will be used to retrieve the base URL.

Bug fixOGC Server

LCD-7562
Some bugs were fixed which affected WCS offerings of 16-bit SHORT or USHORT data.

2015.1.25

ImprovementOGC Server

LCD-7431
Fixed spatial filtering in case no geometry property name is defined.

Bug fixOGC Server

LCD-7506
Fixed the interpretation of the GridOffsets parameter in a WCS 1.1 GetCoverage request, which could lead to responses with an incorrect resolution.

2015.1.20

ImprovementOGC Server

The sample class WFSFeatureIDRetriever now supports retrieving the id of data objects with a primary key annotation (TLcdPrimaryKeyAnnotation).

2015.1.18

ImprovementOGC Server

LCD-7392
Improved overall security by implementing additional output neutralization measures to avoid CRLF injection.

ImprovementOGC Server

LCD-7391
The optional logging servlet filter, TLcdLogFilter, has been upgraded with an improved encryption algorithm (AES in CTR mode) to encode log entries.

ImprovementOGC Server

LCD-7388
The default heap memory size of the OGC services sample has been increased from 384m to 768m, to improve its overall performance when working with larger datasets.

2015.1.17

ImprovementOGC Server

LCD-7158
Temporary files needed to cache large responses are now created in a safer way, i.e. using undeterministic names and with more strict file permissions.

ImprovementOGC Server

LCD-7157
Any encountered File-based data locations in XML documents (e.g., local schema locations) read by the WCS are now validated against invalid characters.

2015.1.16

Bug fixOGC Server

LCD-7297
The server no longer logs stacktraces in case of service exception reports, as this is normal behavior for a WMS; instead, an info message is logged with the contents of the service exception message.

2015.1.08

ImprovementOGC Server

LCD-7146
The optional logging servlet filter, TLcdLogFilter, has been upgraded with an improved encryption algorithm (AES) to encode log entries.

ImprovementOGC Server

LCD-7141
Improved overall security by replacing the use of a pseudo random number generator with a cryptographically strong random number generator.

ImprovementOGC Server

LCD-6799
Improved overall security by implementing additional output neutralization measures to avoid CRLF injection and cross-site scripting.

2015.1.07

ImprovementOGC Server

LCD-6227
The decoder for the WMS server sample's XML configuration format, samples.wms.server.config.xml.WMSCapabilitiesXMLDecoder, has been upgraded to use the JDOM XML framework.

2015.1.06

ImprovementOGC Server

LCD-7089
The OGC server sample now comes by default with a set of vendor-specific deployment configuration files to ease the deployment on GlassFish, Apache Geronimo and Oracle WebLogic. The files can be found in build/ogc/resources/WEB-INF and are also packaged together with the ready-to-use OGC server sample in distrib/.

2015.1.02

ImprovementOGC Server

LCD-6643
The WMS server can now accept a PIXELSIZE parameter. This server takes this into account when evaluating scale ranges. This way, these scale range calculations on the server can correspond to the map scale on the client. The pixel size is defined in mm per pixel.

2015.1.01

Bug fixOGC Server

LCD-6944
The WCS server now generates a service exception report compatible with WCS version 1.0.0 if an 1.0.0 request is sent specifying an unknown request name.

Bug fixOGC Server

LCD-6942
The server no longer logs exceptions that are caused by client abort actions, to avoid log poisoning.

Bug fixOGC Server

LCD-3366
When creating a default namespace from the data model name, invalid characters are now correctly escaped so that the namespace is always a valid URI, even if the data model name isn't. This avoids browsers to fail in those cases.

2015.1

ImprovementOGC Server

LCD-1137
The sample class samples.ogc.server.Main has been updated with a -fromsource mode to easily start the OGC sample services in an IDE, directly from the source code.

ImprovementOGC Server

LCD-6826
The WCS server now supports version 1.1.0 and 1.1.1 of the OGC WCS protocol, next to the already supported version 1.0.0.

ImprovementOGC Server

The WCS server now supports point-sampling mode. The appropriate sampling mode is not configurable, it is automatically chosen based on the sampling mode of the data being served:
  • Image data, such as GeoTIFF areal imagery, is typically area-sampled.
  • Elevation data, such as DTED or GeoTIFF, is typically point-sampled.
When using the default GeoTIFF format, the response to a GetCoverage requests is a GeoTIFF with the appropriate tag set to 'RasterPixelIsPoint' or 'RasterPixelIsArea'.

ImprovementOGC Server

The WCS server now supports the "bilinear" interpolation method in addition to "nearest neighbor", and advertises this in the coverage offering. Bilinear interpolation usually yields better results than nearest neighbor interpolation, especially when requesting coverages in a much higher resolution than the native one (oversampling).

Bug fixOGC Server

LCD-6640
The WCS server now respects caching headers also for XML requests.

Bug fixOGC Server

LCD-6615
The WCS server now always selects the appropriate level of detail of the source data, even when the response CRS differs from the model reference and when no area of interest is defined.

Bug fixOGC Server

HTTP authentication errors (status code 401) thrown by an ILcdRemoteOWSModelDecoder implementation (e.g., to decode a remote WFS in an SLD user layer) are now correctly passed to the WMS request sender.

2015.0

2015.0.11

Bug fixOGC Server

LCD-6790
The server now returns valid capabilities instead of throwing a NullPointerException when no output formats are defined.

Bug fixOGC Server

LCD-6776
The server now always deletes temporary _lmap_*.tmp files as soon as they become obsolete, to prevent cluttering the tmp directory.

2015.0.10

Bug fixOGC Server

LCD-6756
In case of an unknown CRS, the server will indicate unknown CRS instead of null in WCS DescribeCoverage response.

2015.0.09

Bug fixOGC Server

LCD-6722
Fixed a bug in the parsing of WMS requests with an SLD body.

Bug fixOGC Server

LCD-6667
The RectifiedGrid limits and offsetVector values in a DescribeCoverage response sometimes had unexpected signs in case of very high resolutions.

2015.0.08

Bug fixOGC Server

LCD-6534
The validation of an OGC filter has been made less strict so that property names with "" as default namespace match any namespace.

2015.0.06

Bug fixOGC Server

LCD-6503
The LRU cache used by the sample WMS server model provider class, DynamicModelProvider, could cause a NullPointerException in case of cached raster models.

2015.0.05

ImprovementOGC Server

The OGC web service front-end now automatically detects the servlet location (protocol, host name and port), so that this information no longer needs to be hard-coded in the JSON service description files.

2015.0.01

ImprovementOGC Server

LCD-6404
The acme-1.0.jar library dependency in the WMS server has been removed. It was used in the past by TLcdGXYViewGIFEncoder and TLcdGXYViewSWFEncoder to support GIF map generation in the WMS when a Java version older than 1.6 was used; however, Java 1.7 is the minimum required version in v2015.

Bug fixOGC Server

LCD-6347
Fixed a NullPointerException which could happen when a custom ILcdModelEncoder implementation created and subsequently closed more than one OutputStream using a single given ILcdOutputStreamFactory.

2015.0

ImprovementOGC Server

LCD-1097
The JSP-based front-end delivered with the OGC web services sample has been replaced by a new JavaScript-based front-end that gives access to the various services and example requests. This removes the JSP dependency from the sample.

ImprovementOGC Server

LCD-1097, LCD-1103
The JSP-based front-end delivered with the OGC web services sample has been replaced by a new JavaScript-based front-end that gives access to the various services and example requests. This removes the JSP dependency from the sample.

ImprovementOGC Server

LCD-6176
To support transaction requests containing data defined in a custom data format, it is now possible to register one or more data models via the constructor of TLcdWFSTransactionRequestHandler. A typical use case is the set up of an OGC WFS-T, capable of receiving AIXM 5 data.

Upgrade considerationOGC Server

LCD-5731
It is now possible to specify a content type for the response to a WFS DescribeFeatureType request by implementing the new method getContentType on the interfaceILcdWFSModelSchemaEncoder. In case you have a custom implementation of this interface, you must implement this new method. Typical implementations will return a constant MIME type, for example"text/xml".

Upgrade considerationOGC Server

Because of the OGC web service front-end improvement (LCD-1097), there is a change in 3rd party library dependencies for the OGC web service sample. Because this new front-end is now built using JavaScript instead of JSP, the following JSP-related libraries have been removed:
  • jspapi-2.2.jar
  • javax.servlet.jsp.jstl-1.2.1.jar
  • javax.servlet.jsp-2.2.2.jar
  • jdt-core-3.7.1.jar
  • el-api-2.2.jar
  • jstl-api-1.2.jar
Instead, a JavaScript library dependency has been added to support the front-end, namely AngularJS 1.3.10. More specifically, the following AngularJS modules have been added to build/ogc/resources/js:
  • angular
  • angular-route
  • angular-sanitize
Users that relied on the front-end need to update their build process to take the 3rd party library change into account.

Upgrade considerationOGC Server

LCD-6172
It is now possible to separately define output formats for GetFeature and DescribeFeatureType requests. To this end, the new methods ILcdWFSClientModelEncoderFactory.getSupportedSchemaOutputFormatCount and ILcdWFSClientModelEncoderFactory.getSupportedSchemaOutputFormat have been added, which define the supported output formats for the DescribeFeatureType request. The existing methods ILcdWFSClientModelEncoderFactory.getSupportedOutputFormatCount and ILcdWFSClientModelEncoderFactory.getSupportedOutputFormat now only define the supported output formats for the GetFeature request. Existing, custom implementations of ILcdWFSClientModelEncoderFactory can delegate to the default implementation available in TLcdWFSClientModelEncoderFactory.

Upgrade considerationOGC Server

LCD-5174
It is now possible to define supported output formats per feature type. To this end, a new method ILcdWFSFeatureType.getSupportedOutputFormats has been added, which returns the supported output formats as an object of type TLcdWFSOutputFormatList. The default implementation, TLcdWFSFeatureType, has been updated accordingly and has also received a setter for this new property. Existing, custom implementations of ILcdWFSFeatureType can implement the new method by returning null, indicating that the global list of output formats needs to be used; this corresponds to the past behavior.

Upgrade considerationOGC Server

LCD-3909
It is now possible to define the content type (MIME type) of a custom outputFormat. To this end, the return type of method ILcdWFSClientModelEncoderFactory.createModelEncoder has changed from ILcdModelEncoder to a new type ILcdWFSModelEncoder. You need to update your implementations accordingly:
  • If the ILcdModelEncoder you used to return is an instance of a class under your control, just implement the new method getContentType.
  • If the ILcdModelEncoder you used to return is an instance of a class not under your control, you can wrap it using TLcdWFSModelEncoder and give it a content type. Using null as content type is allowed but not recommended: it means that the GetFeature response will not have a content type, which can result in ill-defined behavior on the client.

Upgrade considerationOGC Server

LCD-6103
To enable WMS request parameter access in the layer creation, the signature of the method ILcdWMSGXYLayerFactory#createGXYLayer(ILcdModel, ALcdWMSLayer, String) has been changed into #createGXYLayer(ILcdModel, ALcdWMSLayer, String, TLcdWMSRequestContext). TLcdWMSRequestContext gives access to the original request and a number of additional request-related parameters.

The change will impact WMS implementations that use an implementation of ILcdWMSGXYLayerFactory that does not extend from ALcdSLDWMSGXYLayerFactory. Affected implementations can simply update the signature of the createGXYLayer method and ignore the new parameter.

2014.1

2014.1.08

Bug fixOGC Server

LCD-6340
Fixed a bug in the interpretation of the default SRS of the bbox of a KVP request: the default SRS is now CRS:84 with lon/lat axis order.

Bug fixOGC Server

LCD-6321
Fixed a bug in the interpretation of XML-encoded GetFeature requests containing multiple typeNames: now all intended typeNames are used rather than just the first one. Also, when the request contains no typeNames at all, all typeNames are used rather than an exception thrown. This brings the behavior of XML-encoded and KVP-encoded GetFeature requests in sync with each other.

2014.1.06

Bug fixOGC Server

LCD-6267
The default outputFormat now correctly depends on the WFS version also for XML requests (HTTP POST).

Bug fixOGC Server

LCD-6254, LCD-6268
TLcdWFSRequestContext now contains the correct requested feature types when passed to ILcdWFSClientModelEncoderFactory implementations.

2014.1.02

ImprovementOGC Server

LCD-5929
The OGC WCS web service previously available in build/wcs (containing the build script) and distrib/ogc/LuciadLightspeedWCS_x.x.x (containing a pre-built / ready-to-deploy service) has now been integrated in a combined OGC web service sample, consisting of a WMS, WFS and WCS; the folder build/ogc contains the build script and the folder distrib/ogc/LuciadLightspeedOGC_x.x.x contains a pre-built and ready-to-deploy service. To run the pre-built service, you can still use the script ogc.server.start (.bat/.sh) available in the samples folder, which will deploy the service in a Jetty servlet container.

Bug fixOGC Server

LCD-6188
GetFeatureWithLock now always locks all features and no longer requires the lockAction parameter, as prescribed by the WFS specification.

Bug fixOGC Server

LCD-6182
GetFeature, GetFeatureWithLock and LockFeature operations now also behave correctly when both featureId and typeName parameters are given.

Bug fixOGC Server

LCD-6168
The WCS server introduced small gaps in raster data responses in case of an elevation coverage backed by multiple elevation rasters and in combination with a need to transform the requested data to a destination reference.

2014.1.01

Bug fixOGC Server

LCD-6096
The WFS server now correctly excludes the 'Lock', 'Insert', 'Delete' and 'Update' operations from the capabilities when locking and/or transactions are disabled.

2014.1

Upgrade considerationOGC Server

LCD-5946, LCD-4201
To enable WMS request parameter access in the data backend, the signature of the method ILcdModelProvider#getModel(String) and its extension ALcdMultiDimensionalModelProvider#getModel(String) have been changed into #getModel(String, ALcdRequestContext). ALcdRequestContext is a new class giving access to the original request; in the WMS, this class is implemented by TLcdWMSRequestContext, which adds a number of additional request-related parameters.

The change will impact WMS implementations that use a custom implementation of ILcdModelProvider or ALcdMultiDimensionalModelProvider. Affected implementations can simply update the signature of the getModel method and ignore the new parameter.

Upgrade considerationOGC Server

LCD-5946
To enable WFS request parameter access in the data backend, the signature of the method ILcdOGCModelProvider#getModel(String) has been changed into ILcdOGCModelProvider#getModel(String, ALcdRequestContext). ALcdRequestContext is a new class giving access to the original request; in the WFS, this class is implemented by TLcdWFSRequestContext, which adds a number of additional request-related parameters.

The change will impact WFS implementations that use a custom implementation of ILcdOGCModelProvider. Affected implementations can simply update the signature of the getModel method and ignore the new parameter.

2014.0

2014.0.17

ImprovementOGC Server

LCD-5994
The WCS server now supports the reprojection of requested data via the RESPONSE_CRS request parameter.

Bug fixOGC Server

LCD-5988
It is now possible to set up a WMS with 0 layers, which can be useful for dynamic services that receive their content at runtime. Previously, this configuration resulted in an Exception when requesting the capabilities.

2014.0.13

ImprovementOGC Server

LCD-5943
Improved the exception reporting in case of a missing 'service' parameter in the request.

2014.0.11

Bug fixOGC Server

LCD-5885
Due to a regression, the WCS server did no longer accept "Image" and "Engineering" as CRS in a request, making it impossible to serve non-georeferenced content.

2014.0.06

ImprovementOGC Server

LCD-5766
Thh WFS server now advertises Operations also at the level of FeatureTypeList in its capabilities. This improves interoperability with third-party clients such as geoserver.

Bug fixOGC Server

LCD-5765
The WFS server now uses the correct casing for the "outputFormat" parameter name in the capabilities, according to. the WFS specification. This improves interoperability with third-party clients such as geoserver.

2014.0.04

Bug fixOGC Server

LCD-5729
The Content-Type (MIME type) of the response to a DescribeFeatureType request now correctly matches one the output formats advertised in the Capabilities. More specifically, for output format "application/gml+xml; version=3.2" the Content-Type of the response is now "application/gml+xml; version=3.2" instead of "text/plain".

2014.0.02

Bug fixOGC Server

LCD-5495
The GeoTIFFModelEncoder now correctly deals with sparse rasters. This fixes for example the visualization of incomplete LuciadFusion coverages when using WCS.

2014.0

ImprovementOGC Server

LCD-5146
The Jetty servlet container delivered with the OGC Web Server Suite to deploy and run the sample OGC services (see samples.ogc.server.Main) has been upgraded from version 6.1.21 to 8.1.15.

ImprovementOGC Server

LCD-4836
An appropriate HTTP status code is now set on the response in case of a service exception report: 4xx for client request errors, 5xx for server errors.

ImprovementOGC Server

LCD-4473
It is now possible to configure a "Last-Modified" date on a WCS coverage (TLcdCoverageOffering). This information is used to fill in the "Last-Modified" date HTTP header on the response of a GetCoverage and DescribeCoverage request and to support conditional HTTP requests.

ImprovementOGC Server

LCD-4473
It is now possible to configure a "Last-Modified" date on a WMS layer (ALcdWMSLayer). This information is used to fill in the "Last-Modified" date HTTP header on the response of a GetMap and GetFeatureInfo request and to support conditional HTTP requests.

ImprovementOGC Server

LCD-4472
It is now possible to configure an expiry date on a WCS coverage (TLcdCoverageOffering). This information is used to fill in the "Expires" HTTP header on the response of a GetCoverage and DescribeCoverage request.

Upgrade considerationOGC Server

LCD-4200
The capabilities class ALcdWMSCapabilities and its default implementation TLcdWMSCapabilities now implement ILcdCloneable, providing a public clone() method to create a copy of an instance. Additionally, TLcdWMSCapabilities now has a copy constructor that allows to create a new TLcdWMSCapabilities instance based on a given ALcdWMSCapabilities instance.

Custom implementations of ALcdWMSCapabilities or extensions of TLcdWMSCapabilities are recommended to override the clone() method and implement proper behavior for the custom implementation / extension - i.e., take into account potential custom properties or delegate in case of a wrapper implementation.

2013.1

2013.1.46

Bug fixOGC Server

LCD-5384
Fixed a bug in the deploy_wcs script so that it now correctly includes the license.

2013.1.40

ImprovementOGC Server

LCD-5169
The longitude range of the WGS 84 bounds advertised in the WMS capabilities are now always normalized to fit into the [-180, 180] range. Although not required by the WMS standard, it improves this interoperability with 3rd party WMS clients.

2013.1.28

ImprovementOGC Server

The EPSG code 2056 is now supported by default.

2013.1.21

Bug fixOGC Server

LCD-4841
The calculation of the "Expires" HTTP header did not take into account the children of the requested layers.

2013.1.15

ImprovementOGC Server

LCD-4838
The GetCoverage response generation performance has been improved for coverages that are backed by multiple rasters contained in a single model (ILcdModel).

2013.1.12

ImprovementOGC Server

LCD-4783
The WCS server has been updated with support for coverages that are backed by multiple rasters contained in a single model (ILcdModel). Based on the supplied area of interest and resolution parameters, the WCS server now takes into account all raster instances found in a model to calculate the resulting GeoTIFF raster.

2013.1.01

Bug fixOGC Server

LCD-4597
Fixed a bug when using WFS transaction requests to populate an empty GML model.

Bug fixOGC Server

LCD-4506
The SRS name is now encoded in the GML envelope. It is no longer repeated for each individual feature. This reduces bandwidth for WFS GetFeature responses.

2013.1

ImprovementOGC Server

LCD-4440, LCD-4457
Updated the DescribeCoverage response with a RectifiedGrid description and reorganized the request CRS listing to improve support for non-compliant OGC clients.

ImprovementOGC Server

LCD-4373
It is now possible to configure an expiry date on a WFS feature type (TLcdWFSFeatureType). This information is used to fill in the "Expires" HTTP header on the response of a GetFeature and GetFeatureWithLock request.

ImprovementOGC Server

LCD-4374
It is now possible to configure an expiry date on a WMS layer (ALcdWMSLayer). This information is used to fill in the "Expires" HTTP header on the response of a GetMap and GetFeatureInfo request.

ImprovementOGC Server

The WMS server now allows the Post method as access point for GetFeatureInfo requests. This is also reflected in the WMS capabilities.

ImprovementOGC Server

The zip file containing all OGC servers is now called Ogc_server.zip instead of Wms_server.zip

2013.0

2013.0.25

ImprovementOGC Server

LCD-4038
The WCS GetCoverage request handler currently expects the bounding box to be expressed in either the EPSG:4326 (WGS 84) reference or in the native reference of the offered data. This enhancement adds support for any EPSG and WKT CRS supported by Luciad.

2013.0.20

Bug fixOGC Server

LCD-4195
A bug was fixed which caused NullPointerExceptions upon GetFeatureType or DescribeFeatureType requests for empty models when using a custom ILcdWFSClientModelEncoderFactory which does not extend from TLcdWFSClientModelEncoderFactory.

2013.0.12

ImprovementOGC Server

LCD-4082
Convenience methods have been added to TLcdWMSRequestContext to access the layers and styles parameters in a request.

2013.0.04

Bug fixOGC Server

LCD-3985
A bug was fixed which prevented custom model reference parsers from being called when another custom model reference parser threw a ParseException.

Bug fixOGC Server

LCD-3982
The cache of model references is now correctly reset upon servlet initialization. This eliminates problems with unknown references which kept polluting the cache after hot redeployment of the servlet.

2013.0.01

ImprovementOGC Server

LCD-3321
The content type of output format "JSON" or "application/json" is now correctly set to "application/json".

Bug fixOGC Server

LCD-3921
The release no longer includes versions 2.4 and 2.5 of the servlet api. Only version 2.5 is now included.

2013.0

Upgrade considerationOGC Server

The Java Servlet dependency has been upgraded from version 2.4 to 2.5. Consequently, an application server or servlet container with support for Java Servlet 2.5 or higher is now required for deployment - for instance, Tomcat 6 or higher. The impact of this is expected to be low since Java Servlet 2.5 is widely adopted by application server and servlet container products for over 7 years.

2012.1

2012.1.13

ImprovementOGC Server

The WFS request handler implementations, i.e. the implementations of ILcdRequestHandler in com.luciad.ogc.wfs, have received a new constructor that takes a TLcdWFSCommandDispatcherContext to configure all required settings. This eases custom creation of the request handlers during server startup in the method ALcdOGCWFSCommandDispatcherFactory#createRequestHandler.

Bug fixOGC Server

LCD-3548
Including PropertyName parameters in WFS GetFeature requests could affect subsequent GetFeature requests in case of ILcdDataObject-based domain objects.

2012.1.09

Bug fixOGC Server

LCD-3545
Custom model reference formatters registered by overriding ALcdOGCWFSCommandDispatcherFactory.registerModelReferenceFormatters() are now always correctly registered. In particular, when a custom instance of TLcdWFSClientModelEncoderFactory is created by overriding createClientModelEncoderFactory().

2012.1.06

Bug fixOGC Server

LCD-3473
The WFS server now respects to the requested feature types, it longer returns irrelevant feature types.

2012.1.04

Bug fixOGC Server

LCD-2543
The WFS property name filtering mechanism was not supported for domain objects that implemented ILcdDataObject, but were not extensions of the class TLcdDataObject. The latter restriction has been removed: any implementation of ILcdDataObject is now supported.

2012.1.02

ImprovementOGC Server

LCD-2557
The WFS server will no longer print stack traces at startup when a certain output format is not usable for a given feature type, a simple warning is printed instead. These warnings are only relevant if the actual output format is in use. The stack traces can still be obtained by enabling debug logging for the "com.luciad.ogc.wfs" package.

2012.1.01

Bug fixOGC Server

The WCS server could not cope with some GetCoverage requests that specified a longitude/latitude outside the coverage bounds.

Bug fixOGC Server

LCD-3060
The WMS scale denominators (optionally configurable on WMS layers) are not correctly taken into account in case of the geodetic reference EPSG:4326 / CRS:84.

Bug fixOGC Server

LCD-3045
The GeoTIFF encoder used in the WCS now encodes tiles with an odd resolution or a byte indexed color model more accurately.

2012.1

ImprovementOGC Server

The WFS Server sample can now also serve features in the GeoJSON format, by passing 'json' or 'application/json' as OutputFormat.

ImprovementOGC Server

A CORS (http://www.w3.org/TR/cors/) implementation is included, which can be activated by optionally applying a servlet filter to the WFS servlet. This enables web applications that are not hosted on the same server as the WFS servlet to send Ajax requests to the WFS servlet.

ImprovementOGC Server

The OGC SLD request handling class TLcdOGCSLDWMSCommandDispatcher now supports the configuration of data models (TLcdDataModel) through a newly added constructor. These data models are used for decoding XML feature data in SLD requests (i.e., SLD inline feature requests).

Upgrade considerationOGC Server

The Batik libraries have been upgraded from version 1.5 to 1.7, to solve issues with respect to SVG XML decoding. Users that are relying on SVG support inside the WMS will need to update their build process accordingly. SVG can be used in the WMS as map output format (through TLcdGXYViewSVGEncoder) or inside OGC Symbology Encoding styles (in an SLD-enabled WMS). If SVG is not used, the Batik libraries are not required.

2012.0

2012.0.19

Bug fixOGC Server

LCD-2939
The WCS server could not cope with GetCoverage requests that specified longitude/latitude request that crossed the date line.

2012.0.17

Bug fixOGC Server

TLcdOWSDomain#getValues() did always return an empty array. This class is used inside OWS (WFS, WCS, WMS) capabilities to model domain metadata.

2012.0.11

Bug fixOGC Server

LCD-2541
The WMS XML schema's have been updated. The new versions now refer to the official W3C XLink schema, instead of the OGC variant that was used before.

Bug fixOGC Server

LCD-2541
The WFS XML schema's have been updated. The new versions now refer to the official W3C XLink schema, instead of the OGC variant that was used before.

Bug fixOGC Server

LCD-2541
The WCS XML schema's have been updated. The new versions now refer to the official W3C XLink schema, instead of the OGC variant that was used before.

2012.0.09

ImprovementOGC Server

LCD-2610
It is now possible to avoid loading the EPSG, AUTO and/or AUTO2 reference codes in the WMS capabilities by leaving out their configuration parameters in the web.xml file.

2012.0.07

ImprovementOGC Server

XML Schema's are now better cached. This improves the performance of processing XPaths.

ImprovementOGC Server

The WFS server no longer accesses the elements() method to generate its schema's, if a data model is available.

Bug fixOGC Server

LCD-2425
The default transparent map configuration applied by the WMS (TLcdWMSGXYViewFactory) could cause rendering issues when using transparent colors for vector features. The configuration has been updated to avoid these issues.

Bug fixOGC Server

The WCS server GetCoverage response could have some incorrect pixels when the request requires resampling of the raster data.

Bug fixOGC Server

LCD-1624
The WCS server sometimes returned raster data that is geographically shifted w.r.t. the original data.

Bug fixOGC Server

LCD-1590
The WCS server did not expose which value indicates that the value of a pixel is unknown. For example a DTED raster can contain unknown values.

Bug fixOGC Server

LCD-1581
The WCS server did not support elevation data with negative heights (e.g. a height below sea level).

Bug fixOGC Server

LCD-1576
The WCS server did not always use the optimal level in an ILcdMultilevelRaster. It could use a more detailed level while a less detailed level already provided the same quality for a given request.

11.0

11.0.30

Bug fixOGC Server

LMAP-6023
GetFeatureInfo requests where not correctly handled for layers that did not provide non-null painters for each available object in a model. It is however valid for layers to do that, if they want to hide an object in the map.

Bug fixOGC Server

LMAP-5641
Manually configured scale ranges on the ILcdGXYLayer instances produced by the layer factory were not correctly taken into account in case of the geodetic reference EPSG:4326 / CRS:84.

11.0.23

Bug fixOGC Server

LMAP-5875
When using WMS layer dimensions, the support class ALcdMultiDimensionalModelProvider did not accept dimension intervals - only values were accepted.

11.0.10

Bug fixOGC Server

LMAP-5647
Fixed a regression with WFS 1.0 GetFeature XML requests that caused the server to return an exception for valid requests.

11.0.07

Bug fixOGC Server

LMAP-5637
Querying on a specified amount of features without a filter is now more memory efficient. This also reduces the memory need on server initialization.

11.0

ImprovementOGC Server

The WFS server now supports additional GML output formats to export data using the GML simple features profile. This allows servers to either export as simple features by default, or otherwise to expose the additional output formats so they are available to clients.

Upgrade considerationOGC Server

The lcd_wxs_common.jar is no longer part of the release. The necessary classes have been included in the luciadmap.jar

Upgrade considerationOGC Server

The lcd_wxs_common.jar is no longer part of the release. The necessary classes have been included in the luciadmap.jar.

10.1

10.1.23

Bug fixOGC Server

LMAP-2414
The WMS GIF encoder, TLcdGXYViewGIFEncoder, now properly supports images that have more than 256 colors in combination with transparency, regardless of the JDK version.

10.1.20

Bug fixOGC Server

LMAP-3741
The GeoTIFF encoder used in the WCS now properly encodes elevation raster data as signed 16-bit GeoTIFF rasters.

10.1.01

ImprovementOGC Server

LMAP-4701
The versions of the WCS specification that are supported by a deployed service can now be configured in the web.xml configuration file. This allows you to avoid unwanted support for older or newer versions of the specification.

Add a parameter with the name wcs.supportedVersions to your web.xml file to enable this feature. You can use comma separated lists of versions such as "1.0.0,1.1.0" as values, or you can use wild cards such as "1.0.*".

ImprovementOGC Server

LMAP-4701
The versions of the WMS specification that are supported by a deployed service can now be configured in the web.xml configuration file. This allows you to avoid unwanted support for older or newer versions of the specification.

Add a parameter with the name wms.supportedVersions to your web.xml file to enable this feature. You can use comma separated lists of versions such as "1.3.0,1.1.0" as values, or you can use wild cards such as "1.1.*".

ImprovementOGC Server

LMAP-4701
The versions of the WFS specification that are supported by a deployed service can now be configured in the web.xml configuration file. This allows you to avoid unwanted support for older or newer versions of the specification.

Add a parameter with the name wfs.supportedVersions to your web.xml file to enable this feature. You can use comma separated lists of versions such as "1.0.0,1.1.0" as values, or you can use wild cards such as "1.*".

10.0

10.0.08

ImprovementOGC Server

The (unofficial) EPSG code 900913 used by Google Earth is now supported.

10.0.07

Bug fixOGC Server

LMAP-4439
Fixed an issue that could cause decoding of transaction requests to fail when the request contains a schemalocation for a type defined by the WFS. We now ignore these schemalocations and use the schemas that are linked to the data.

10.0.03

ImprovementOGC Server

By default support special versions of EPSG codes and some specific srs names like CRS84.

ImprovementOGC Server

LMAP-4312
Improved handling of certain bad filters, this will now result in a WFS service exception.

10.0

ImprovementOGC Server

LMAP-1175
The WFS server now correctly takes the 'srsName' attribute of incoming queries into account to convert bounding box operators to the coordinate system of the model that is being filtered.

ImprovementOGC Server

The WFS server now provides api to convert incoming XPath expressions to the native format that is provided to the WFS. A default implementation exists that relies on the ILcdDataObject interface to support this conversion automatically, assuming that the default WFS client model encoders are used to generate the GML schemas.

ImprovementOGC Server

The WCS server sample is now delivered with a graphical front-end, based upon Java Server Pages (JSP) technology, giving access to the capabilities of the server. When starting the server sample through the startup script ogc.server.start, the front-end can be accessed through the URL http://localhost:8080/LuciadMapWCS.

ImprovementOGC Server

The WFS server sample is now delivered with a graphical front-end, based upon Java Server Pages (JSP) technology, It gives access to the capabilities of the server, and provides a convenient way to test HTTP POST requests. When starting the server sample through the startup script ogc.server.start, the front-end can be accessed through the URL http://localhost:8080/LuciadMapWFS.

ImprovementOGC Server

The WMS server sample is now delivered with a graphical front-end, based upon Java Server Pages (JSP) technology, giving access to the capabilities of the server. When starting the server sample through the startup script ogc.server.start, the front-end can be accessed through the URL http://localhost:8080/LuciadMapWMS.

ImprovementOGC Server

The support for locking and transactions has been improved, and is also WFS 1.1.0 and WFS 1.0.0 compliant. These features can be controlled through a parameter in the servlet configuration file. More information can be found in the developer guide.

The transactional improvements rely on the new ILcdDataObject interface that is introduced in LuciadMap V10. Users should ensure that the elements of the models provided to the WFS server implement this interface.

Additional api was added that allows you to customize how locking and transactions are handled. This makes it possible to support any kind of data backend.

ImprovementOGC Server

The WFS server implementation is now fully WFS 1.1.0 compliant. This results in some changes:
  • The result of a GetFeature request is now a wfs:FeatureCollection
  • The server now performs more strict input checking, invalid input will result in an exception report.
  • Improved filtering capabilities.

Upgrade considerationOGC Server

A new library lcd_wxs_server.jar has been added, sharing common code between the WMS, WFS and WCS server implementations. This might require an update to existing application build and obfuscation scripts, to incorporate the new library.

Upgrade considerationOGC Server

A new library lcd_wxs_server.jar has been added, sharing common code between the WMS, WFS and WCS server implementations. This might require an update to existing application build and obfuscation scripts, to incorporate the new library.

Upgrade considerationOGC Server

A new library lcd_wxs_server.jar has been added, sharing common code between the WMS, WFS and WCS server implementations. This might require an update to existing application build and obfuscation scripts, to incorporate the new library.

Upgrade considerationOGC Server

The metadata API that was available in com.luciad.metadata has been replaced with an improved implementation in com.luciad.format.metadata. Related to this change, the old metadata interfaces that were implemented by some OWS domain model classes have been removed from these classes.

The change will have no or very little impact on existing implementations as the affected classes are mostly used internally. Methods that were available on these interfaces can still be found in the OWS domain model.

Upgrade considerationOGC Server

The ILcdWFSFeatureType interface has been extended with two methods to indicate that the type supports transactions and/or locking. Most existing implementations will want to return false for these methods, which is also the case for implementations that use the TLcdWFSFeatureType class.

The getModelObjectFactory() method of ILcdWFSFeatureType has been removed. The ILcdDataObject interface is now used to create new instances for specific feature types. This means that servers that wish to support transactions are required to use ILcdDataObject enabled models. Existing transactional WFS implementations should take this into consideration before upgrading.

Upgrade considerationOGC Server

The ILcdDataObject interface is now used throughout the WFS if it is available, but it is only required for servers that wish to support transactions. It is recommended to use data formats that support ILcdDataObject with the WFS. For backwards compatibility, ILcdFeature objects can also be supported, but this might disable some of the features that are available to ILcdDataObject based types.

The WFS requires that each ILcdWFSFeatureType corresponds with at most one TLcdDataType. This means that if the elements of an ILcdModel returned by an ILcdOGCModelProvider implement ILcdDataObject, the TLcdDataType of these data objects should be the same for all elements.

9.1

9.1.15

Bug fixOGC Server

LMAP-3960
The INTERSECT constant of the TLcdOGCSpatialFilterCapabilities evaluator had the incorrect value "Intersect" where it should have been "Intersects". As a result, encoding capabilities containing such a spatial filter capability resulted in an invalid xml document.

9.1

ImprovementOGC Server

The JGenerator library used by TLcdGXYViewSWFEncoder to generate maps in the SWF (Flash) format has been upgraded from version 1.3.1 to version 2.2.

ImprovementOGC Server

The EPSG code 3395 is now supported by default.

ImprovementOGC Server

LMAP-3304
To ease the deployment of the WCS server sample, the release is now delivered with the Jetty web server, a Java-based HTTP server and servlet container. A startup script ogc.server.start in the directory samples starts a Jetty web server on port 8080, predeployed with the WCS server sample available in the directory LuciadMapWCS_X.Y.Z/distrib/.

ImprovementOGC Server

LMAP-3304
To ease the deployment of the WFS server sample, the release is now delivered with the Jetty web server, a Java-based HTTP server and servlet container. A startup script ogc.server.start in the directory samples starts a Jetty web server on port 8080, predeployed with the WFS server sample available in the directory LuciadMapWFS_X.Y.Z/distrib/.

ImprovementOGC Server

LMAP-3304
To ease the deployment of the WMS server sample, the release is now delivered with the Jetty web server, a Java-based HTTP server and servlet container. A startup script ogc.server.start in the directory samples starts a Jetty web server on port 8080, predeployed with the WMS server sample available in the directory LuciadMapWMS_X.Y.Z/distrib/.

ImprovementOGC Server

LMAP-3322
An option can now be specified in the WMS servlet configuration file (web.xml) to invert the bounding box coordinates in case the request version is 1.3.0 and the reference is EPSG:4326. If these conditions hold, and the option is set, the x coordinates will be interpreted as latitudes and the y coordinates as longitudes.

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.

Use the configuration option if you want to comply with the WMS 1.3.0 specification. Do note that the EPSG:4326 reference is officially deprecated, so the problem can be circumvented by not supporting this reference.

Add the following to your WMS web.xml file to enable inversion:
      <init-param>
        <param-name>EPSG.4326.latlon</param-name>
        <param-value>true</param-value>
      </init-param>
    

ImprovementOGC Server

LMAP-3289
The ALcdWMSLayer class in the WMS server API has three new methods:
boolean isNoSubsets()
Returns the value of the noSubsets parameter.
int getFixedWidth()
Returns the value of the fixedWidth parameter.
int getFixedHeight()
Returns the value of the fixedHeight parameter.
The TLcdWMSLayer class that extends this abstract class also has corresponding setter methods for these parameters. If set, these parameters will also be encoded in the server capabilities, and the server will take them into account when validating an incoming GetMap request.

These parameters can also be set in the capabilities configuration file of the WMS server sample.

ImprovementOGC Server

LMAP-3088
The WFS server now supports the sortBy parameter in KVP and XML requests. The features returned by the server will be sorted in the requested order. In case a maximum number of features has been set, the sorting will be applied before applying the feature limit.

9.0

9.0.01

ImprovementOGC Server

LMAP-3223
A default logging.properties file has been added to the WEB-INF/classes directory of the sample server, to setup java.util.logging on Apache Tomcat servers. This logs all messages from the server to a separate file in the logs folder of the Apache Tomcat distribution.

9.0

ImprovementOGC Server

A new encoder (TLcdSLDFeatureTypeStyleEncoder) and decoder (TLcdSLDFeatureTypeStyleDecoder) for feature type styles has been added. They replace the existing encoder and decoder which have been made deprecated.

Bug fixOGC Server

LMAP-3131
The GetFeature request handler TLcdWFSGetFeatureRequestHandler now supports multiple feature types that use different coordinate reference systems.

Upgrade considerationOGC Server

LMAP-3116
The interface com.luciad.ogc.wfs.ILcdWFSFeatureType has been extended with a getter and setter to configure a qualified feature name through a javax.xml.namespace.QName object. This might require an update, if a custom implementation of ILcdWFSFeatureType is used.

8.2

8.2.09

ImprovementOGC Server

The EPSG codes 3785 and 4055 used by Google Earth and Microsoft Virtual Earth are now supported.

8.2

ImprovementOGC Server

LMAP-2830
A new factory method createModelProvider() has been introduced in ALcdOGCWFSCommandDispatcherFactory, which is used to create an ILcdOGCModelProvider. This allows to create custom ILcdOGCModelProvider implementations to load data at the server.

Bug fixOGC Server

LMAP-2848
The XML Schema reference in a response to a WFS 1.1.0 GetFeature request now refers to a WFS 1.1.0 DescribeFeatureType request instead of a request for version 1.0.0.

Bug fixOGC Server

LMAP-2845
The XML Schema response to a WFS 1.1.0 DescribeFeatureType request now refers to the GML 3.1.1 XML schemas instead of to the GML 2.1.2 XML schemas.

Upgrade considerationOGC Server

The interface com.luciad.ogc.common.ILcdKVPRequest, used by the WFS and WCS server to represent a key-value pair request, has been extended with a new method getParameterNames(). It returns a list of all the parameters that are specified in the request. Although unlikely, this change requires an update if there are custom implementations of this interface.

Upgrade considerationOGC Server

LMAP-2723
To allow a WFS Server implementation to serve data without geometry, the WFS Server API no longer enforces the use of ILcd2DBoundsIndexedModel when decoding models. The API is now compatible with regular ILcdModel implementations, so that implementations like TLcdVectorModel can be used that do not require objects to have a geometric extent.

To be able to support this, the return type of the following methods is now ILcdModel instead of ILcd2DBoundsIndexedModel:
  • ILcdOGCModelProvider#getModel,
  • ILcdWFSFilteredModelFactory#createFilteredModel,
  • TLcdWFSFilteredModelFactory#createFilteredModel.
This might require an update, if there are explicit dependencies on the previous return type.

8.1

8.1

ImprovementOGC Server

A new factory class TLcdWMSGXYViewFactory has been introduced, which is used to create and configure views in the WMS to render requested maps. Custom extensions can be integrated in the WMS by overriding the method createWMSGXYViewFactory(ServletConfig) in ALcdOGCWMSCommandDispatcherFactory.

8.0

8.0.11

ImprovementOGC Server

New methods have been introduced in TLcdHttpServletRequestKVPRequestWrapper and TLcdHttpServletResponseWrapper to give applications more access to HTTP request and response headers.

8.0.06

Bug fixOGC Server

The handling of GetMap requests through HTTP XML POST has been made more robust and corrected in some cases.

8.0.04

ImprovementOGC Server

Because the WMS Server uses TLcdConcurrentBuffer instead of TLcdBuffer as internal shared buffer since V7, the buffer size configuration is no longer required. The configuration property 'shared.buffer.size.mb' in WEB-INF/classes/settings.cfg is therefore no longer used and has been removed in the sample deployment available in distrib/LuciadMapWMS_x.x.x.

ImprovementOGC Server

The WMS Server no longer explicitly depends on the Xerces XML parser, but now uses the package javax.xml.* available in JRE 1.4 and later - the WMS Server requires JRE 1.4 or later, see prerequisites. The sample build script available in build/wms therefore no longer integrate the libraries xercesImpl.jar and xmlParserAPIs.jar in a new build.

8.0.02

ImprovementOGC Server

When using Tomcat as servlet container, verbose stacktraces could sometimes be observed in the server log files containing notifications of a org.apache.catalina.connector.ClientAbortException. This exception is thrown by Tomcat when a servlet is trying to send a result to a client which already closed the connection. The WMS / WFS / WCS server used to handle this exception as a regular IOException, by logging its stacktrace and sending a service exception report to the client - which fails in this case, resulting in a similar exception. This exception is now no longer propagated in the WCS server; instead, a short debug message is printed in the log files when it occurs.

8.0

ImprovementOGC Server

The WMS server developer guide has been extended with a new section covering various performance guidelines and tips when running a LuciadMap WMS server.

ImprovementOGC Server

The WMS GIF encoder, TLcdGXYViewGIFEncoder, now automatically uses the ImageIO library to encode to GIF, when JDK 1.6 is used. This results in a vast performance improvement, and also adds support for views that use transparency - which was before not possible. For older JDK versions, the Acme GIF encoder and JAI library are still used.

ImprovementOGC Server

The WMS server sample now contains an implementation of ILcdWMSGetFeatureInfoEncoder, namely samples.wms.server.WMSFeatureInfoAsTextEncoder, to provide support for the optional WMS GetFeatureInfo request. To illustrate the use of GetFeatureInfo requests at the client side, the WMS client lightweight sample has been modified with GetFeatureInfo support.

7.0

7.0.09

Bug fixOGC Server

Invoking the getChildWMSLayerIndex(ALcdMWSLayer) method on a TLcdWMSLayer object without any child layers resulted in a NullPointerException. This has been fixed: the value -1 is now returned in that case, following the method description in the javadoc.

7.0.05

ImprovementOGC Server

The WMS 1.3.0 capabilities now contain the XML element 'BoundingBox' for a layer, describing its bounds in one of the available CRSs. This is in contrast with the already available element 'EX_GeographicBoundingBox', that always describes the bounds of a layer in WGS 84 coordinates.

ImprovementOGC Server

Support has been added for the optional FORMAT parameter in a GetCapabilities request. Both the WMS 1.1.1 and 1.3.0 capabilities now mention two available output formats, text/xml and application/vnd.ogc.wms_xml, which can be used in the FORMAT parameter. If no FORMAT parameter is specified, the default format for the version of the capabilities is used: application/vnd.ogc.wms_xml for WMS 1.1.1, text/xml for WMS 1.3.0.

ImprovementOGC Server

When a GetFeatureInfo request was received for an invalid layer, the returned service exception report did not specify the 'LayerNotDefined' code.

7.0.01

Bug fixOGC Server

The class com.luciad.wms.server.viewencoder.TLcdGXYViewPNGEncoder, which is used by the WMS to encode images to PNG, did not work under JRE 1.6.0 when the native codecLib ImageIO plugin was active.

7.0

ImprovementOGC Server

LuciadMap WFS now properly supports the WFS 1.1.0 capabilities format.

ImprovementOGC Server

Support has been added to handle multi-dimensional data in the WMS server, as defined by Annex C of the OpenGIS OGC 06-042 Web Map Server Implementation Specification.

To define a dimension for a layer, the classes ALcdWMSDimension, TLcdWMSDimension and TLcdWMSDimensionExtent have been introduced. ALcdWMSDimension and TLcdWMSDimension represent a dimensional parameter, while TLcdWMSDimensionExtent is used to model the available values for a dimension. The classes ALcdWMSLayer and TLcdWMSLayer have been extended with methods to configure these elements.

For convenience, the sample XML configuration format to configure the capabilities of a server has been extended with support for dimensions. The decoders for this format, com.luciad.wms.server.config.xml.TLcdWMSCapabilitiesXMLDecoder and samples.wms.server.config.xml.WMSCapabilitiesXMLDecoder, both recognize the XML element 'Dimension' and its contents.

The source name property of a layer (see getSourceName() in ALcdWMSLayer), is too limited to be used for a layer with one or more dimensions, since the corresponding data source depends not only on the layer name but also on the dimensional parameters supplied by the client. To be able to map an ALcdWMSLayer with one or more dimensional parameters on a data source, the abstract class ALcdMultiDimensionalModelProvider has been introduced. Users must implement this class and register it by overriding the method createModelProvider(ILcdModelDecoderFactory[]) in ALcdOGCWMSCommandDispatcherFactory, to support multi-dimensional layers.

ImprovementOGC Server

The domain model for the WMS capabilities has been extended to include support for the elements MetadataURL, DataURL and FeatureListURL that can be defined for a layer, and for the elements LegendURL, StylesheetURL and StyleURL that can be defined for a layer style. To model these elements, a new class TLcdWMSURL has been introduced. The classes ALcdWMSLayer, TLcdWMSLayer, ALcdWMSLayerStyle and TLcdWMSLayerStyle have been extended with methods to configure these elements. For consistency, the already supported element AuthorityURL for a layer can now also be modeled using TLcdWMSURL in ALcdWMSLayer and TLcdWMSLayer.

ImprovementOGC Server

A new interface ILcdWMSOnlineResourceResolver has been introduced, which is used to dynamically resolve the paths to online resources. A default implementation is registered by default, but custom implementations can be used by overriding the method createWMSOnlineResourceResolver(ServletConfig) in ALcdOGCWMSCommandDispatcherFactory.

ImprovementOGC Server

Two new methods have added to ALcdWMSLayer, which make it possible to retrieve the parent layer:
  • setParentWMSLayer(ALcdWMSLayer): a protected method that can be called to register the parent layer. The default implementation TLcdWMSLayer automatically invokes this method on the child layer when addChildWMSLayer(ALcdWMSLayer) or removeChildWMSLayer(ALcdWMSLayer) is called.
  • getParentWMSLayer(): a public method, allowing to retrieve the currently registered parent layer.

This functionality is particularly useful to retrieve the layer styles registered on parent layers, because the WMS specification defines that a layer inherits the styles of its parent.

ImprovementOGC Server

Support has been added for two new requests: GetLegendGraphic and DescribeLayer. The GetLegendGraphic request provides a general mechanism for acquiring legend symbols. The DescribeLayer request allows a client to obtain feature/coverage-type information for a named layer, which can be used to construct user-defined styles. Both requests are defined by the OpenGIS OGC 02-070 Styled Layer Descriptor Implementation Specification, and are considered optional for an SLD-enabled WMS.

To provide support for these requests in a WMS implementation, the factory methods createWMSGetLegendGraphicEncoders(ServletConfig) and createWMSDescribeLayerEncoders(ServletConfig) in ALcdOGCSLDWMSCommandDispatcherFactory must be implemented. These methods should return respectively one or more ILcdWMSGetLegendGraphicRequestEncoder and ILcdWMSDescribeLayerRequestEncoder objects, which are responsible for sending a response to the client. Next, the available legend graphic and describe layer formats must be listed in the ALcdWMSCapabilities object created by the ILcdWMSCapabilitiesDecoder in ALcdOGCSLDWMSCommandDispatcherFactory.

Because the OpenGIS OGC 02-070 Styled Layer Descriptor Implementation Specification defines a default XML format for DescribeLayer responses, an implementation of ILcdWMSGetLegendGraphicRequestEncoder, ALcdWMSDescribeLayerRequestEncoder, is also available. This abstract class implements the methods defined in ILcdWMSGetLegendGraphicRequestEncoder, and adds some extra abstract methods that are needed to construct a correct DescribeLayer response. Encoders that want to use the default XML format should extend from this abstract class.

Bug fixOGC Server

An issue has been solved in the view management performed by com.luciad.wms.server.TLcdOGCWMSCommandDispatcher, which potentially could lead to a deadlock when handling GetMap/GetFeatureInfo requests, especially on high-loaded servers. When established, some incoming requests would never be handled, and ultimately, the server would stop responding to GetMap/GetFeatureInfo requests.

Upgrade considerationOGC Server

ILcdWFSFeatureType has been extended to contain a list of TLcdWFSMetadataURLs. This list was previously only included in TLcdWFSFeatureType, but is now included in the interface as well and must therefore be added to all implementations. The metadata URLs are not mandatory, however, so implementations of the new methods may be empty if they are not needed.

Upgrade considerationOGC Server

The interfaces ILcdRemoteOWSModelDecoder and ILcdRemoteOWSModelProvider have been updated to enable implementations to return an ILcdModel array instead of a single ILcdModel:
  • ILcdRemoteOWSModelDecoder.decode(): the return type is now ILcdModel[] instead of ILcdModel
  • ILcdRemoteOWSModelProvider.getModel(): the return type is now ILcdModel[] instead of ILcdModel
This is done to support Styled Layer Descriptors that combine multiple coverages (WCS) or feature types (WFS) into one user-defined layer. Implementations can decode each coverage or feature type into a single ILcdModel. This is especially needed when these coverages or feature types use different model references, since an ILcdModel can only have one model reference.

The abstract class ALcdSLDWMSGXYLayerFactory has been adapted accordingly: the signature of the method
  • abstract public ILcdGXYLayer createGXYLayer( ILcdModel, TLcdSLDUserLayer, TLcdSLDFeatureTypeStyle[] );
has changed into
  • abstract public ILcdGXYLayer[] createGXYLayer( ILcdModel[], TLcdSLDUserLayer, TLcdSLDFeatureTypeStyle[] );
to allow implementations to create an ILcdGXYLayer for each decoded ILcdModel that is part of a user-defined layer.

Upgrade considerationOGC Server

The interface ILcdWMSHttpServletRequestFileNameResolver has been removed, due to its limited practical relevance. The two implementations TLcdWMSServiceExceptionDTDDefaultFileNameResolver and TLcdWMSCapabilitiesDTDDefaultFileNameResolver have been removed accordingly.

Four methods in TLcdOGCWMSCommandDispatcher that were used to set or retrieve an instance of ILcdWMSHttpServletRequestFileNameResolver to resolve the WMS 1.1.1 Capabilities DTD or Service Exception DTD have been removed also:
  • ILcdWMSHttpServletRequestFileNameResolver getWMSCapabilitiesDTDFileNameResolver()
  • setWMSCapabilitiesDTDFileNameResolver(ILcdWMSHttpServletRequestFileNameResolver)
  • ILcdWMSHttpServletRequestFileNameResolver getWMSExceptionDTDFileNameResolver()
  • setWMSExceptionDTDFileNameResolver(ILcdWMSHttpServletRequestFileNameResolver)

Upgrade considerationOGC Server

A new class com.luciad.wms.server.TLcdWMSRequestContext has been introduced that holds information about a current request. A number of interfaces in the package com.luciad.wms.server have been adapted to include this class as a parameter in its methods:
  • ILcdRemoteOWSModelDecoder.canDecode(): replaced HttpServletRequest parameter with TLcdWMSRequestContext parameter
  • ILcdRemoteOWSModelDecoder.decode(): replaced HttpServletRequest parameter with TLcdWMSRequestContext parameter
  • ILcdRemoteOWSModelDecoderFactory.createModelDecoder(): replaced HttpServletRequest parameter with TLcdWMSRequestContext parameter
  • ILcdRemoteOWSModelProvider.getModel(): replaced HttpServletRequest parameter with TLcdWMSRequestContext parameter
Existing implementations just need to update the signature of these methods and can choose whether to use the additional parameter.

Because the information in TLcdWMSRequestContext can also be useful when encoding GetFeatureInfo responses, a new interface ILcdWMSGetFeatureInfoRequestEncoder has been introduced. This interface is similar to the existing ILcdWMSFeatureInfoRequestEncoder, except for the extra TLcdWMSRequestContext parameter that is added to the encode() method. Accordingly, a factory method createWMSGetFeatureInfoEncoders(ServletConfig) in ALcdOGCWMSCommandDispatcherFactory and a method addWMSGetFeatureInfoEncoder(ILcdWMSGetFeatureInfoRequestEncoder) in TLcdOGCWMSCommandDispatcher have been added. The existing interface ILcdWMSFeatureInfoRequestEncoder and associated methods are still fully functional. Note that registered ILcdWMSGetFeatureInfoRequestEncoder objects have precedence above registered ILcdWMSFeatureInfoRequestEncoder objects, when they have the same content type.

6.2

6.2.21

Bug fixOGC Server

The encoding of a service exception report to an image instead of to the predefined XML format could possibly lead to a NullPointerException.

6.2.17

ImprovementOGC Server

TLcdWFSFeatureType has been extended to contain a list of TLcdWFSMetadataURLs. If present, these URLs are added to the feature type list in the capabilities document of the WFS.

Bug fixOGC Server

The robustness of the WMS has been improved when the encoding of a GetMap or GetFeatureInfo result fails. In such cases, a proper service exception report will be created and sent to the client.

6.2.13

ImprovementOGC Server

When using an SLD-enabled WMS (1.1.1 or 1.3.0), the capabilities that are sent to the client now mention the version number of the supported SLD specification in LuciadMap, which is 1.0. This information is added to the contents of the element 'UserDefinedSymbolization'. Displaying this information in the capabilities is optional according to the WMS 1.1.1 specification.

6.2.12

ImprovementOGC Server

Support has been added for the layer attribute 'opaque'. This is a property defined by the WMS specification that allows to indicate that a layer represents an area-filling coverage. The following changes have been made to support this property:
  • ALcdWMSLayer has been extended with a method isOpaque() and TLcdWMSLayer has been extended with a method setOpaque(Boolean). The configured value is automatically taken into account while sending the capabilities to the client (see below).
  • The WMS server configuration decoders, com.luciad.wms.server.config.xml.TLcdWMSCapabilitiesXMLDecoder and samples.wms.server.config.xml.WMSCapabilitiesXMLDecoder, both recognize the XML attribute 'opaque="true|false"' for the XML element 'Layer'.

6.2.06

Bug fixOGC Server

The WFS now properly sets the content type (mime type) of its responses.

6.2

ImprovementOGC Server

To provide better support for dynamic WMS server implementations, a number of enhancements haven been implemented:
  • A new interface com.luciad.wms.server.ILcdWMSCapabilitiesUpdater has been introduced which can be used to implement an update strategy for the WMS server. This interface contains one method update(HttpServletRequest), which will be invoked for each incoming request. To register an implementation on the WMS, the new factory method createWMSCapabilitiesUpdater(ServletConfig, TLcdOGCWMSCommandDispatcher, ILcdWMSCapabilitiesDecoder) in ALcdOGCWMSCommandDispatcherFactory must be implemented.
  • A new factory method createModelProvider() has been introduced in ALcdOGCWMSCommandDispatcherFactory, which returns an ILcdModelProvider. In the past, an ILcdModelProvider was created internally and set on the command dispatcher, which made it more difficult to insert a custom ILcdModelProvider implementation.
  • The WMS server sample has been extended with a sample implementation of ILcdWMSCapabilitiesUpdater.
  • The implementation of TLcdOGCWMSCommandDispatcher has been improved in the context of a dynamic WMS:
    • Extra measures have been taken to prevent any inconsistencies while updating the server at runtime.
    • The getWMSCapabilities(HttpServletRequest) will now always return the same ALcdWMSCapabilities object for the same HttpServletRequest object.

6.1

6.1.17

Bug fixOGC Server

The GML model and schema encoders used by the WFS now properly respect the feature type name specified in ILcdWFSFeatureType.

6.1.15

ImprovementOGC Server

The WMS server developer guide has been extended with extra information about offering support for GetFeatureInfo requests. It now also includes an example of a ILcdWMSFeatureInfoRequestEncoder implementation.

6.1.12

ImprovementOGC Server

LMAP-1440
An interface ILcdWFSServiceMetaData has been introduced in the WFS package. By creating an ILcdWFSServiceMetaData in the command dispatcher factory, WFS users can customize the <Service> section of the WFS capabilities document.

ImprovementOGC Server

The WCS server now performs proper escaping of all user-specifiable values that appear in the GetCapabilities and DescribeCoverage responses.

ImprovementOGC Server

The WFS now performs proper escaping of all user-specifiable values that appear in the GetCapabilities response.

6.1.06

ImprovementOGC Server

The following methods have been introduced in com.luciad.wms.sld.xml.TLcdSLDStyledLayerDescriptorEncoder10:
  • setPrefixMap(ILcdPrefixMap), getPrefixMap(): allows to control the mapping between the fully qualified namespaces and their corresponding prefixes in the resulting XML document.
  • setDefaultNamespace(String), getDefaultNamespace(): allows to set the default namespace in the resulting XML document. This is the namespace for which no prefix will be used.

6.1

ImprovementOGC Server

A new sample is available, samples.wms.client.sld.MainApplet, that illustrates the use of an SLD-enabled WMS server at the client side.

ImprovementOGC Server

The SLD-enabled WMS server now supports GetMap requests that use HTTP XML POST instead of HTTP GET. These type of requests are described in the OGC 02-017r1 Web Map Service Implementation Specification, Part 2: XML for Requests using HTTP POST. Note: servers that use the regular ALcdOGCWMSCommandDispatcherFactory and TLcdOGCWMSCommandDispatcher do not support these types of requests, since SLD support is required to handle them.

ImprovementOGC Server

The WMS server now contains support for OpenGIS Styled Layer Descriptors (SLD), as defined in the OGC 02-070 Styled Layer Descriptor Implementation Specification version 1.0. The following classes and packages are added:
  • com.luciad.wms.server.ALcdOGCSLDWMSCommandDispatcherFactory: this abstract class is an extension of the regular ALcdOGCWMSCommandDispatcherFactory that adds support for Styled Layer Descriptors. This class must be implemented by the user to create an SLD capable WMS server. The class samples.wms.server.OGCWMSCommandDispatcherFactory in the samples illustrates an example implementation.
  • com.luciad.wms.server.TLcdOGCSLDWMSCommandDispatcher: this class is an extension of the regular TLcdOGCWMSCommandDispatcher that adds support for Styled Layer Descriptors. This class must be used to handle WMS requests in an SLD capable WMS server. The class ALcdOGCSLDWMSCommandDispatcherFactory automatically registers an object of TLcdOGCSLDWMSCommandDispatcher on the servlet to handle all incoming requests.
  • com.luciad.wms.server.ALcdSLDWMSGXYLayerFactory: this abstract class is an implementation of ILcdWMSGXYLayerFactory, that is used by the server to create ILcdGXYLayer instances for all ILcdModels, with or without an SLD model. Implementations can be registered on the WMS server by implementing the method ALcdOGCSLDWMSCommandDispatcherFactory.createSLDWMSGXYLayerFactories(). This method replaces the previously used factory method createWMSGXYLayerFactories(), which is now declared final.
  • com.luciad.wms.server.ILcdRemoteOWSModelDecoder, ILcdRemoteOWSModelDecoderFactory, ILcdRemoteOWSModelProvider: these interfaces are used in the WMS server to decode ILcdModel objects based on remote data (typically located on a remote WFS or WCS server). Through the method ALcdOGCSLDWMSCommandDispatcherFactory.createRemoteOWSModelDecoderFactories(), the user can register one or more ILcdRemoteOWSModelDecoderFactory objects on the WMS server. By default, this method returns null, as this is an optional feature according to the SLD specification..
  • com.luciad.wms.sld.model: contains the domain model for Styled Layer Descriptors. This domain model builts upon the Feature Type Style domain model that is available in the package com.luciad.ogc.sld.model.
  • com.luciad.wms.sld.xml: contains an XML decoder and encoder for Styled Layer Descriptors. Both the decoder and encoder respectively built upon the Feature Type Style decoder and encoder that are available in the package com.luciad.ogc.sld.xml.

To inform a client about the SLD support of the WMS server, TLcdOGCSLDWMSCommandDispacher uses the XML capabilities document that is sent to the client after a GetCapabilities request:
  • for version 1.1.1 and earlier, the XML capabilities document includes the XML element UserDefinedSymbolization, which is defined by the OpenGIS WMS 1.1.1 Capabilities DTD (see http://schemas.opengis.net/wms/1.1.1/WMS_MS_Capabilities.dtd). This element contains some attributes that indicate the SLD support.
  • for version 1.3.0, the OpenGIS WMS 1.3.0 Capabilities XML Schema does not include an SLD related XML element. Therefore, a custom LuciadMap WMS 1.3.0 Capabilities XML Schema is available (see build/wms/resources/schemas/wms/1.3.0/sld_capabilities_1_3_0.xsd), which extends the OpenGIS WMS 1.3.0 Capabilities Schema (see http://schemas.opengis.net/wms/1.3.0/capabilities_1_3_0.xsd). This extension adds the element UserDefinedSymbolization to the default schema, which was present in the OpenGIS WMS 1.1.1 Capabilities DTD.

ImprovementOGC Server

The WFS has been extended to support most of the WFS 1.1 specification:
  • GetFeature requests support the "resultType" parameter, allowing clients to retrieve the number of features matched by a request without having to retrieve the actual corresponding features.
  • Features can be retrieved in both GML2 and GML3 formats.
  • The OGC Filter 1.1 specification is supported.
Please refer to the "Upgrade considerations" section for more information on how these changes may affect your application.

ImprovementOGC Server

Section 5.2.1 "Description of the default configuration format" in the WMS server developer guide has been extended with a description of how to configure the possible output formats for a GetFeatureInfo request.

ImprovementOGC Server

The class com.luciad.wms.server.viewencoder.TLcdGXYViewPNGEncoder, which is used by the WMS to encode images to PNG, has been updated with support for the native codecLib plugin for ImageIO. This plugin delivers a higher performance than the default JAI PNG encoder, which was used in the past. It also allows to control the compression to be used, which makes it possible to determine a trade-off between compression and speed; in contrast, the default JAI PNG encoder always uses best compression. To adjust the compression, the following two methods have been introduced: setCompressionLevel() and getCompressionLevel(). The codecLib plugin requires the installation of some extra libraries, which are available in the LuciadMap_xxx/lib directory in the LuciadMap WMS distribution. The following libraries are needed:
  • clibwrapper_jiio.jar: JAR file containing core JAI Image I/O class files
  • jai_imageio.jar: the codecLib JNI interfaces
  • the codecLib JNI libraries for your platform. The available platforms are Win32 (native/win32/clib_jiio*.dll), Linux i586 (native/linux/libclib_jiio.so), Linux AMD64 (native/linux64/libclib_jiio.so) and Solaris Sparc V9 (native/solaris_sparc/libclib_jiio.so, native/solaris_sparc/sparcv9+vis/libclib_jiio_vis.so or native/solaris_sparc/sparcv9+vis2/libclib_jiio_vis2.so).
If one of these libraries is not found, the default PNG encoder in JAI will be used again instead of the ImageIO codecLib plugin.

ImprovementOGC Server

WCS GetCapabilities responses now also contain keywords for each coverage offering, if there are any defined.

Upgrade considerationOGC Server

ILcdWFSFilteredModelFactory:
  • The signature of createFilteredModel() was changed to include an ILcdWFSGetFeatureConstraints argument. ILcdWFSGetFeatureConstraints contains all parameters that can restrict the result of a GetFeature request, including a filter.
  • Filters are passed in as a TLcdOGCFilter object (contained in the ILcdWFSGetFeatureConstraints object) rather than as a JDOM element. Analogously, getFilterCapabilities() must return a TLcdOGCFilterCapabilities rather than a JDOM element.

Upgrade considerationOGC Server

ILcdWFSClientModelEncoderFactory:
  • The method createModelSchemaEncoder() has been added. This method shall return an ILcdWFSModelSchemaEncoder, which is responsible for encoding the result of a DescribeFeatureType request. The class TLcdWFSClientModelEncoderFactory can produce encoders for standard GML application schemas.
  • Both createModelSchemaEncoder() and createModelEncoder() have an argument of type ILcdWFSRequestContext, which contains context information about the request currently being handled.

Upgrade considerationOGC Server

ALcdOGCWFSCommandDispatcherFactory:
  • The registerFilterFactories() has been removed, as it is no longer applicable. Applications that require customized filtering behaviour may override the createFilteredModelFactory() method to return an extension of the new class TLcdWFSFilteredModelFactory. This class provides a hook similar to registerFilterFactories() to allow filtering customization. Please consult the reference documentation for details.
  • The class TLcdWFSClientModelEncoderFactory was made available as the default implementation of ILcdWFSClientModelEncoderFactory. This factory supports GML2 and GML3 output formats, and may be extended by applications that wish to add additional output formats. GML output will not be available unless the model encoder factory advertises it.

6.0

6.0.08

ImprovementOGC Server

A memory leak has been closed in the handling of a feature request that contained a filter.

6.0.06

ImprovementOGC Server

The capabilities decoders for the default XML server configuration format, com.luciad.wms.server.config.xml.TLcdWMSCapabilitiesXMLDecoder and samples.wms.server.config.xml.WMSCapabilitiesXMLDecoder, now also accept the 'PaintStyle' element for layers with data sources other than ESRI Shape (.shp) or Oracle Spatial Object-Relational (.ora).

Bug fixOGC Server

When a layer style was sent that did not exist for a layer, the WMS returned an incorrect service exception report: the name of the wrong layer style was not mentioned. The service exception report now clearly describes that the requested layer style does not exist for the requested layer.

6.0.02

ImprovementOGC Server

The schema documents that are present in the servlet sample have been updated to the latest versions published by OGC (17 May 2006).

6.0

ImprovementOGC Server

ILcdWFSFeatureType and its implementation TLcdWFSFeatureType have been extended with methods to define keywords, which are included in the FeatureTypeList section of the WFS capabilities if available.

ImprovementOGC Server

To ease the deployment of a WFS server, a sample Ant build script has been created: build/wfs/deploy_wfs.xml. A batch script for Windows and a shell script for Unix are available next to this file, to run the build script. As Ant and Proguard releases are needed to run the script, they are also available in the release, respectively in build/ant and build/proguard. The build script can be used to generate a deployment server package (with obfuscated code and a deployment license) or a development server package (with a development license), which can placed into a servlet container (e.g. Tomcat). The script contains also tasks to create WAR files instead of packages.

ImprovementOGC Server

To ease the deployment of a WCS server, a sample Ant build script has been created: build/wcs/deploy_wcs.xml. A batch script for Windows and a shell script for Unix are available next to this file, to run the build script. As Ant and Proguard releases are needed to run the script, they are also available in the release, respectively in build/ant and build/proguard. The build script can be used to generate a deployment server package (with obfuscated code and a deployment license) or a development server package (with a development license), which can placed into a servlet container (e.g. Tomcat). The script contains also tasks to create WAR files instead of packages.

ImprovementOGC Server

To ease the deployment of a WMS server, a sample Ant build script has been created: build/wms/deploy_wms.xml. A batch script for Windows and a shell script for Unix are available next to this file, to run the build script. As Ant and Proguard releases are needed to run the script, they are also available in the release, respectively in build/ant and build/proguard. The build script can be used to generate a deployment server package (with obfuscated code and a deployment license) or a development server package (with a development license), which can placed into a servlet container (e.g. Tomcat). The script contains also tasks to create WAR files instead of packages.

ImprovementOGC Server

The WMS server sample package has been extended with two new packages:
  • samples.wms.server.config.editor: this package contains a new sample representing a graphical configuration editor for the server capabilities.
  • samples.wms.server.config.xml: this package contains the source of a decoder for the server capabilities. This decoder uses the new LuciadMap decoder framework for XML data, available in the package com.luciad.format.xml in LuciadMap. The decoder is used by the samples.wms.server.config.editor sample to load server capabilities files.
The purpose of this code is to enable WMS server developers to extend the default XML server configuration format without writing a whole new decoder. As in the past, one can use a custom server capabilities decoder in the server by extending the method createWMSCapabilitiesDecoder() in com.luciad.wms.server.ALcdOGCWMSCommandDispatcherFactory.

ImprovementOGC Server

A method createWCSCommandDispatcherInstance() has been added to ALcdOGCWCSCommandDispatcherFactory. This method is used to instantiate a TLcdWCSCommandDispatcher. By overriding this method, users can plug in their own extensions of TLcdWCSCommandDispatcher.

ImprovementOGC Server

A method createWFSCommandDispatcherInstance() has been added to ALcdOGCWFSCommandDispatcherFactory. This method is used to instantiate a TLcdWFSCommandDispatcher. By overriding this method, users can plug in their own extensions of TLcdWFSCommandDispatcher. Also note that this class was final prior to version 6.0; this is now no longer the case.

ImprovementOGC Server

WCS DescribeCoverage responses now also contain the bounds of the coverage in its native CRS, in addition to the already supplied WGS84 bounds.

ImprovementOGC Server

The GeoTIFF encoder used in the WCS now supports encoding of non-georeferenced images. If the model being encoded does not have an ILcdGeoReference, the resulting image will be a plain TIFF, without any GeoTIFF-specific tags.

ImprovementOGC Server

A new class com.luciad.ogc.common.log.TLcdOGCLogFilter has been added which can be used to log servlet requests for licensing purposes on behalf of Luciad.

ImprovementOGC Server

The WMS server now supports the UPDATESEQUENCE parameter:
  • The root element of the capabilities that are sent to the client contains an attribute "updateSequence", indicating its current version.
  • The optional UPDATESEQUENCE parameter in a GetCapabilities request will be decoded and compared with the current update sequence value of the capabilities. The response follows the OGC Web Map Service specification.
Through the API, the update sequence value of the capabilities can be retrieved/updated: the class com.luciad.wms.server.model.ALcdWMSCapabilities has been extended with a method getUpdateSequence(), and its implementation com.luciad.wms.server.model.TLcdWMSCapabilities with a method setUpdateSequence(). The default configuration file decoder com.luciad.wms.server.config.xml.TLcdWMSCapabilitiesXMLDecoder sets an initial update sequence value when it has created a new ALcdWMSCapabilities object. When the capabilities are updated through the API (e.g. adding a new layer), the update sequence value should be updated accordingly, to indicate a new capabilities version.

ImprovementOGC Server

A GetFeatureInfo request for a particular layer will now also be delegated to its child layers.

Bug fixOGC Server

Fixed an issue in TLcdOGCFilterDecoder that caused incorrect decoding of the upper boundary value of PropertyIsBetween elements.

5.3

5.3.17

Bug fixOGC Server

The class com.luciad.wms.server.TLcdOGCWMSCommandDispatcher used the ISO-8859-1 character encoding to send XML data (e.g. the capabilities) to the client instead of UTF-8, while the XML declaration tag in the data itself always specified the UTF-8 encoding. This caused problems when special characters were used, like the degree symbol. UTF-8 is now used as default character encoding.

5.3.16

Bug fixOGC Server

The class com.luciad.wms.server.TLcdOGCWMSCommandDispatcher ignored the optional TRANSPARENT parameter in a GetFeatureInfo request, making it impossible to retrieve an image with a transparent background using this type of request. This issue has been fixed.

5.3.09

Bug fixOGC Server

WCS DescribeCoverage requests for an ILcdCoverageOffering with null bounds now produce a descriptive error message rather than an exception.

Bug fixOGC Server

Closing the OutputStream object in a custom implementation of ILcdModelEncoder resulted in a duplication of the result. This bug has been fixed.

5.2

5.2

ImprovementOGC Server

A new interface ILcdWFSFilteredModelFactory has been introduced. ALcdOGCWFSCommandDispatcherFactory has been extended accordingly, with a new createFilteredModelFactory() method. This method can be overridden by applications that wish to extend or reimplement the filtering behaviour of the WFS. The default implementation performs filtering exactly as it was done in previous LuciadMap versions. Please refer to the API documentation for further details.

ImprovementOGC Server

The WFS now supports the MAXFEATURES parameter, allowing clients to restrict the number of features returned by a query.

Bug fixOGC Server

The WMS now defers the sending of GetMap and GetFeatureInfo results until the features have been successfully encoded. This ensures that partially encoded data does not get sent to the client, only to be followed by a service exception report.

Bug fixOGC Server

The WFS now defers the sending of GetFeature results until the features have been successfully encoded. This ensures that partially encoded data does not get sent to the client, only to be followed by a service exception report.

Bug fixOGC Server

The WCS now defers the sending of GetCoverage results until the coverages have been successfully encoded. This ensures that partially encoded data does not get sent to the client, only to be followed by a service exception report.

Upgrade considerationOGC Server

When doing a GetFeature request, earlier versions of the WFS looked for any <PropertyName> elements in the "wfs" namespace. The WFS specification, however, places these elements in the "ogc" namespace. The WFS has been modified to conform with the specification, which means that applications may need to be updated accordingly.

5.0

5.0.06

Bug fixOGC Server

The WMS 1.3.0 service exception reports are now always well-formed XML.

Bug fixOGC Server

When using a spatial filter with a multiple geometries only the first geometry was taken into account.

5.0.03

ImprovementOGC Server

The API has been slightly relaxed to allow the implementation of custom WFS requests through the API:
  • The "final" modifier has been removed from the createCommandDispatcher() method of ALcdOGCWFSCommandDispatcherFactory;
  • The registerRequestHandler() method of ALcdOGCCommandDispatcher has been promoted from protected to public.
This enables users to extend the WFS by installing their own implementations of the ILcdRequestHandler interface.

ImprovementOGC Server

The API has been slightly relaxed to allow the implementation of custom WCS requests through the API:
  • The "final" modifier has been removed from the createCommandDispatcher() method of ALcdOGCWCSCommandDispatcherFactory;
  • The registerRequestHandler() method of ALcdOGCCommandDispatcher has been promoted from protected to public.
This enables users to extend the WCS by installing their own implementations of the ILcdRequestHandler interface.

Bug fixOGC Server

When performing a GetFeature request in XML format, the "outputFormat" attribute is now no longer ignored.

5.0

ImprovementOGC Server

If a request specifies a bounding box that does not lie completely inside the bounds of the selected coverage, the WCS server will now return only the area for which the coverage is defined. Prior to version 4.4, the WCS would return an image that contained blank areas where the coverage was undefined.

4.3

4.3.13

ImprovementOGC Server

When creating objects to be inserted or updated in a model, the WFS now uses the model descriptor (ILcdFeaturedDescriptor) to determine attribute types, rather than looking for the subset of types that can be identified in an XML schema.

4.3.09

ImprovementOGC Server

Added WCS server optimizations that will lead to significant speedups when requesting coverages from a tiled or multilevel raster source.

4.3.07

ImprovementOGC Server

A bug fix within LuciadMap core requires an upgrade of lcd_epsg_resources.jar.

4.3

ImprovementOGC Server

The batik libraries have been updated to batik 1.5.1 release. This also removes a prior incompatibility with the DAFIF and ARINC optional modules.

ImprovementOGC Server

Within the file web.xml a few initialization properties have changed.
  • srs.epsg.cfg has become crs.epsg.cfg
  • srs.auto.cfg has become crs.auto.cfg
  • crs.auto2.cfg has been added for the additional AUTO2 namespace of WMS 1.3.0

ImprovementOGC Server

The schema file structure has changed to include the additional required schema files.

ImprovementOGC Server

Debug output from the server has been improved to help diagnose failed transactions.

ImprovementOGC Server

The server supports WMS 1.3.0 requests.

4.2

4.2.14

ImprovementOGC Server

The WCS server now supports 16 bit paletted raster models as input (DTEDs are a typical example). The color palette, however, will be lost when requesting coverages from such models, and a 16 bit gray raster will be returned.

4.2.08

ImprovementOGC Server

The server accepts requests with WMTVER as version parameter.

4.2.03

ImprovementOGC Server

The WMS server passes all compliancy tests for WMS 1.1.1.

4.2.02

ImprovementOGC Server

com.luciad.wms.server.TLcdOGCWMSCommandDispatcher can set up views capable of different scale factor along x-axis and y-axis.

ImprovementOGC Server

com.luciad.wms.server.TLcdGXYViewPool can construct views able of setting different scale factor along x-axis and y-axis.

4.2

ImprovementOGC Server

Clients may request the WMS an image with a transparent background even if the map format they request does not support this. The WMS is then supposed to return an image with the background pixels set to value of BGCOLOR. A test has been added for formats that do not support a transparent background, ie, JPEG.

Bug fixOGC Server

Clients may request the WMS an image with a transparent background even if the map format they request does not support this. The WMS is then supposed to return an image with the background pixels set to value of BGCOLOR. A test has been added for formats that do not support a transparent background, ie, JPEG.