= FDO RFC 13 - Tile Caching Support in the WMS Provider = This page contains a request for comments document (RFC) for the FDO Open Source project. More FDO RFCs can be found on the [wiki:FDORfcs RFCs] page. == Status == ||RFC Template Version||(1.0)|| ||Submission Date|||| ||Last Modified||Jack Wang [[Timestamp]]|| ||Author||Jack Wang|| ||RFC Status||Draft|| ||Implementation Status ||Pending|| ||Proposed Milestone||3.3.0.0|| ||Assigned PSC guide(s)||Orest Halustchak|| ||'''Voting History'''|| || ||+1|||| ||+0|||| ||-0|||| ||-1|||| == Overview == The tile caching technology is a commonly used approach to optimize the delivery of map imagery across the Internet. Many applications such as [http://www.microsoft.com/virtualearth/ Microsoft® Virtual Earth™] and [http://earth.google.com/ Google Earth] have leveraged it and got significant improvement of the user experience. Currently, WMS doesn’t support it appropriately. But some people have written proposals in order to introduce it to the WMS standard. Refer to those articles at http://wiki.osgeo.org/index.php/WMS_Tile_Caching and http://portal.opengeospatial.org/files/?artifact_id=23206 We’ve started preparing for tile caching support in FDO. And we found that in most cases the GETMAP request in current WMS protocol can be used for the tiling query. One exception is for the case where some stylization rules applied. For example, the following picture shows that duplicated labels are drawn when tiling is done. [[Image(wmstileproblem.jpg, align=center)]] To solve this problem, we’re intent to add a flag per WMS layer which indicates whether using tile cache or not. This way, user can set it up for different WMS layers, and can persist it in the FDO configuration. == Proposed Solution == In order to facilitate the implementation, some new WMS Override APIs will be added. The following section outlines the necessary unmanaged and managed code changes as well as the corresponding configuration xml document change. '''Unmanaged Code''' {{{ /// \brief /// /// The FdoWmsOvRasterDefinition class defines the physical overrides for a raster property in a WMS FDO schema. class FdoWmsOvRasterDefinition : public FdoPhysicalElementMapping { ... /// \brief /// Gets the tile caching option value. /// /// \remarks /// This option specifies whether using the tile caching method to query the raster data. /// The default value is true. /// /// \return /// Returns a FdoBoolean indicating whether using tile cache or not. /// FDOWMS_API FdoBoolean GetTileCacheOption(void) const; /// \brief /// Sets the tile caching option value. /// /// \remarks /// This option specifies whether using the tile caching method to query the raster data. /// The default value is true. /// /// \return /// Returns nothing. /// FDOWMS_API void SetTileCacheOption(FdoBoolean value); ... } }}} '''Managed Code''' {{{ /// /// The FdoWmsOvRasterDefinition class defines the physical overrides for a raster property in a WMS FDO schema. /// public __gc class OvRasterDefinition : public NAMESPACE_OSGEO_FDO_COMMANDS_SCHEMA::PhysicalElementMapping { ... /// Gets the tile caching option value. /// Returns a FdoBoolean indicating whether using tile cache or not. /// This option specifies whether using the tile caching method to query the raster data. /// The default value is true. __property System::Boolean get_TileCacheOption (); /// Sets the tile caching option value. /// Returns nothing. /// This option specifies whether using the tile caching method to query the raster data. /// The default value is true. __property System::Void set_TileCacheOption(System::Boolean value); ... } }}} '''Configuration xml document:''' {{{ ... True ... }}} == Test Plan == Existing unit tests will be expanded to test the proposed enhancements defined above. == Funding/Resources == Autodesk to provide resources / funding to update WMS Override API.