Hi,
I’m currently working on a extension/profile of WMTS (and eventually WMS) that allows
clients to better interact with a dataset having multiple dimensions, eventually scattered,
eventually correlated, providing tools to discover where the pockets of data are in
a large potential ND space.
The extension is written down as a spec of sorts, but it’s not a OGC spec, if you are curious
you can read it here:
http://demo.geo-solutions.it/share/wmts-multidim/wmts_multidim_geosolutions.html
Now, given this is nothing official I want to keep it in a community module.
And given it’s about deep understanding of the dimensions structure, and requires custom fast
data access to get all the min/max/histograms, I want to keep it
in GeoServer, where all the tools to recognize layer types and query dimensions are
available.
Now, what I need to do in order to add support for the extension is:
- Add support for dimensions in the WMTS caps document. Dimensions are a native concept in WMTS, but they are limited to a full enumeration of possible values (you can read more about it in the doc above).
- Add extra operations to the protocol (typical of a profile), by declaring them in the caps document and then having a way to dispatch them when invoked
- (Optional) Add REST extension to WMTS… ok, this can be done directly in GWC, just not sure right now if it will fit. If added, the caps document will need to contain URL templates for the new operations, too
For the first, I would suggest to extend TileLayer with a method to discover the dimensions:
getDimensions() → Map<String, Dimension>
where Dimension would be a bean reporting the WMTS description of a dimension, that is, providing name, title, abstract, default value and list of values.
Given the limited usefulness of the full enumeration approach against large domains, I’m inclined to just return the list of values as a List, if one has troubles keeping it in memory, the caps document is toast anyways, but I’m open to other alternatives, like a closeable iterator of sorts (we have one in GeoServer, but it’s not available in GWC).
The default implementation would just return an empty map, the GeoServerTileLayer would look for a TileDimensionProvider interface returning such map, with no default implementation (to keep things easy for the moment), and the community module would provide an implementation of it.
In order to extend the protocol instead, I’d propose to have a WMTSExtension interface in GWC following the same spirit as
the GeoServer extended capabilities providers, but with the extra ability to dispatch a request, something like:
interface WMTSExtension {
/* --------- Pretty much as the geoserver own extended caps providers here -------- */
String getSchemaLocations(String schemaBaseURL);
void registerNamespaces(NamespaceSupport namespaces);
public abstract void encodeExtendedOperations(
org.geoserver.ExtendedCapabilitiesProvider.Translator tx, WCSInfo wcs,
GetCapabilitiesType request) throws IOException;
/**
- Interface for clients to encode XML.
*/
public interface Translator {
/**
- Starts an element creating the opening tag.
- @param element The name of the element.
*/
void start(String element);
/**
- Starts an element with attributes, creating the opening tag.
- @param element The name of the element.
- @param attributes The attributes of the element.
*/
void start(String element, Attributes attributes);
/**
- Creates a text node within an element.
- @param text The character text.
*/
void chars(String text);
/**
- Ends an element creating a closing tag.
- @param element
*/
void end(String element);
}
/** ------------- Dispatching the extra requests here, working like a GWC Service object -------------------- **/
public Conveyor getConveyor(HttpServletRequest request, HttpServletResponse response)
throws GeoWebCacheException, OWSException;
public void handleRequest(Conveyor conv) throws OWSException;
}
If there are no objections I’ll turn this into a GWC proposal next week.
Now, the only thing I’m a bit concerned about is Kevin’s availability and ability to type… Kevin, if you can use any voice
communication we can setup a voice meeting, chat about this, and I’ll transcribe your feedback for everybody else
to read.
Cheers
Andrea
–
==
GeoServer Professional Services from the experts! Visit
http://goo.gl/it488V for more information.
Ing. Andrea Aime
@geowolf
Technical Lead
GeoSolutions S.A.S.
Via di Montramito 3/A
55054 Massarosa (LU)
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549
http://www.geo-solutions.it
http://twitter.com/geosolutions_it
AVVERTENZE AI SENSI DEL D.Lgs. 196/2003
Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse, costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.
The information in this message and/or attachments, is intended solely for the attention and use of the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree June, 30 2003, no.196 - Italy’s New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying, distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named addressee(s). If you are not the intended recipient, please contact immediately the sender by telephone, fax or e-mail and delete the information in this message that has been received in error. The sender does not give any warranty or accept liability as the content, accuracy or completeness of sent messages and accepts no responsibility for changes made after they were sent or for other risks which arise as a result of e-mail transmission, viruses, etc.