#!/usr/bin/env python # coding=utf-8 from OWS import OWS import mapscript from osgeo import gdal from osgeo import osr from string import Template import os import logging class WCS(OWS): service = "WCS" request = '' # GetCapabilies, ... def __init__(self,url=None,qstring=None,configFiles=None): OWS.__init__(self,url,qstring) def makeMap(self,mapfilename=None): mapobj = self.getMapObj(mapfilename) for layer in self.capabilities.Contents.getchildren(): name = layer.Identifier.text logging.debug("Creating layer %s" % name) layerDefFile = self.createLayerDefinitionFile(name, os.path.join( os.path.dirname(__file__), "templates",'wcs.xml')) ds = gdal.Open(layerDefFile) lyrobj = mapscript.layerObj(mapobj) lyrobj.name = name lyrobj.data = layerDefFile lyrobj.title = layer["{%s}%s" % (self.owsns11,"Title")].text lyrobj.setMetaData("wms_title",layer["{%s}%s" % (self.owsns11,"Title")].text) if "{%s}%s" % (self.owsns11,"Abstract") in layer: lyrobj.setMetaData("ows_abstract", layer["{%s}%s" % (self.owsns11,"Abstract")].text) sr = osr.SpatialReference() sr.ImportFromWkt(ds.GetProjection()) lyrobj.setProjection(sr.ExportToProj4()) lyrobj.type = mapscript.MS_LAYER_RASTER lyrobj.dump = mapscript.MS_TRUE lyrobj.template = "foo" cls = mapscript.classObj(lyrobj) mapscript.styleObj(cls) self.saveMapfile(mapobj,mapfilename) return mapobj