source: cows/trunk/README @ 4228

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/cows/trunk/README@4809
Revision 4228, 3.5 KB checked in by spascoe, 11 years ago (diff)

Changed print statements to loggging calls where appropriate.

Line 
1
2= COWS: CEDA OGC Web Services framework =
3
4COWS is a set of tools for building OGC Web Services using the Pylons web application framework. 
5It's key features are:
6
7 - A data model compatible with OGC Common 1.1.0
8 - OWS operation dispatch.  Version negotiation, argument parsing and exception serialisation.
9 - Specific OGC Service implementations with plugable data handlers.  Currently WMS is by far the most mature with support for WCS and WPS in development but not yet in the COWS package.
10 
11
12COWS is alpha-quality software and the API is in flux.  Some parts provide quite high-level
13control of services whereas others are little more than a little helping hand.  For instance
14the mechanism for creating creating Capabilities documents involves overriding 2 different methods
15A better way is likely to emerge before a beta release.
16
17Although some parts of theAs it develops COWS is beginning to become more like a framework in it's own right. 
18
19== Overview ==
20
21 1. COWS stack
22 2. COWS OWS-common data model
23 3. COWS and Pylons
24 4. WMS interface classes
25 
26== COWS stack ==
27
28COWS is intended to be used with the Pylons web application framework, but it isn't a Pylons
29application in itself.  Instead you create a Pylons application that imports COWS.  You could
30think of the structure of a COWS application as follows.
31
32|| Application      ||
33|| COWS   Framework ||
34|| Pylons Framework ||
35|| Python           ||
36
37== COWS OWS-common data model ==
38
39The Data model described in OGC-Common 1.1.0 is a complex beast, reflecting the goal of unifying OGC service standards
40that have evolved independently.  COWS reflects the OGC Common data model in the  {{{cows.model}}} package.  This package
41contains classes that shadow the main OGC common UML classes.  COWS also provides Genshi templates for serialising the
42OGC-Common data model into a Capabilities document. 
43
44In principle all OGC services should expose their Capabilities using the OGC-Common model.  However, most OWS standards require
45extensions to OWS-Common and support for well established legacy versions (e.g. WMS-1.1) require a substantially different
46Capabilities XML schema.  Therefore service-specific Genshi templates are provided that take the OGC-Common model as input
47where possible.
48
49== COWS and Pylons ==
50
51COWS aims to give application developers the full flexibility of Pylons when building OWS services.
52
53=== Multiple service endpoints via Routes === 
54 
55 Different elements of a URL are translated into controller arguments using the Routes module.  This allows you to create
56 multiple services e.g.
57 
58  - http://www.example.com/dataset1/wms
59  - http://www.example.com/dataset2/wms
60  - http://www.example.com/dataset1/wcs
61 
62  could all be served from the same codebase. 
63 
64 
65== COWS Quick Start guide ==
66
67The core of COWS is the cows.pylons.ows_controller.OwsController class.  If you want to implement a completely new service you would start from here.
68
69 1. Create a pylons application {{{$ paster create -t pylons }}}.  You will be prompted for a project name.
70 1. Add COWS as a dependency.  Not essential but good practice.
71 {{{#!python
72 def setup(# ...
73           install_requires=['Pylons>=0.9.6.1', 'COWS'],
74           dependency_links=['http://ndg.nerc.ac.uk/dist'],
75           # ...
76           )
77 }}}
78 1. Create a controller for your service {{{$ paster controller wxs }}}
79 1. Edit controllers/wxs.py to inherit from {{{cows.pylons.ows_controller.OwsController}}}
80 
81           
82 
83 
Note: See TracBrowser for help on using the repository browser.