160 likes | 291 Views
Integrated OGC Web Service Delivery with the COWS Framework. Philip Kershaw [on behalf of Stephen Pascoe] GO-ESSP Seattle 18 September 2008. Overview. Brief Introduction to OGC WebServices Motivation and High-level design of COWS COWS services in the wild NERC Portals Project
E N D
Integrated OGC Web Service Delivery with the COWS Framework Philip Kershaw [on behalf of Stephen Pascoe] GO-ESSP Seattle 18 September 2008
Overview GO-ESSP Seattle • Brief Introduction to OGC WebServices • Motivation and High-level design of COWS • COWS services in the wild • NERC Portals Project • UKCIP (UK Climate Impacts Project) Data Delivery Portal
OGC Web Services GO-ESSP Seattle • Open Geospatial Consortium • Specifications • Web Map Service (WMS) • Web Feature Service (WFS) • Web Coverage Service (WCS) • Web Processing Service (WPS) • KML ! • EU INSPIRE will mandate OGC Web Services
COWS Motivation GO-ESSP Seattle • Develop lightweight OGC Services in Python • Support integration with bespoke Web Applications • Support multiple OGC services in one application
COWS Features GO-ESSP Seattle • Layered design. Implement your service at the level of abstraction that suites you. • Complete flexibility in underlying data model. • Deals with the protocol “bureaucracy” of OWS-compliant • HTTP request/response • metadata model (OWS-Common) • Exceptions • INCOMPLETE
Building Blocks for Layered Approach GO-ESSP Seattle • WSGI – Web Server Gateway Interface • standardized pattern for web application middleware • defines standard i/o interface enabling chaining of WSGI middleware components to apply multiple passes over HTTP request and response • Solution for multiplicity of Python frameworks • Pylons web framework • a Ruby on Rails for Python – enables rapid development approach • Built on WSGI based architecture • COWS Plugin
WSGI Middleware GO-ESSP Seattle • Add security to a COWS Application by adding security middleware • Python Paste package enables inclusion of middleware via a config file – no change to COWS code required: • Example middleware chain: AuthenticationFilter HTTP Request AnotherFilter CowsApplication HTTP Response [pipeline:CowsApplication] pipeline = AuthenticationFilter AnotherFilter CowsApplication
Idealised COWS Application GO-ESSP Seattle Apache + mod_python, FastCGI, Python HTTPD HTTP Server WSGI Middleware Paste WSGI e.g. Authentication Pylons COWS Web Application WMS WCS W*S Library Standard Interface Data Model Application-specific Code
COWS Components GO-ESSP Seattle • cows.model implements The OWS Common data model for describing your service and it's contents • cows.pylons provides pylons-specific code • Service controllers • templates (XML rendering) • cows.service provides service interfaces and implementations
COWS Flexibility GO-ESSP Seattle • Data dimensions/parameters • Climatological dimensions • Probabilistic • e.g. WMS layer supports extra WMS dimensions by default • Custom Co-ordinate transformations • UKMO UM rotated pole grid • Custom rendering backend • Custom URL layout • Multiple URL endpoints for services
COWS Interface Evolution GO-ESSP Seattle NetCDF Data Data Model Data Model Implementation Plugin CSML WMS-impl. Custom Controller Service Controller WMSController COWS COWS COWS Current Design Plugin Design WMS With CSML Backend
WMS Plugin Details GO-ESSP Seattle
NERC Portals: HiGEM WMS GO-ESSP Seattle • Portion of HiGEM dataset over WMS • Uses COWS CSML Plugin • OpenLayers as WMS Client • Climatological time selectable as a dimension on the WMS • KML generator links to WMS endpoint • Enables display on GoogleEarth
NERC Portals Project GO-ESSP Seattle • 2 Different Station datasets • Integrate with CSML • Pylons Application plots CSML Features • 2 visualisation interfaces • KML references plot service • COWS WMS provides in-browser support.
Station time series via COWS WMS GO-ESSP Seattle WMS Browser Client GoogleEarth Client Times Series displayed via plot service
UKCIP08 DDP GO-ESSP Seattle • Highly Dimensional Dataset • Time Period • Emission Scenario • Percentile (CDF) • Meaning Period • UKMO UM Rotated Grid but we need to plot it on GoogleMaps (Transverse Mercator) • Custom WMS operation to serve Grid-box values as JSON