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<String>,
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
<https://github.com/geoserver/geoserver/blob/master/src/main/src/main/java/org/geoserver/ExtendedCapabilitiesProvider.java>,
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.

-------------------------------------------------------
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Reply via email to