__init__.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!/usr/bin/env python
  2. # coding=utf-8
  3. from OWS import OWS
  4. import mapscript
  5. from osgeo import gdal
  6. from osgeo import osr
  7. from string import Template
  8. import os
  9. import logging
  10. class WCS(OWS):
  11. service = "WCS"
  12. request = '' # GetCapabilies, ...
  13. def __init__(self,url=None,qstring=None,configFiles=None):
  14. OWS.__init__(self,url,qstring)
  15. def makeMap(self,mapfilename=None):
  16. mapobj = self.getMapObj(mapfilename)
  17. for layer in self.capabilities.Contents.getchildren():
  18. name = layer.Identifier.text
  19. logging.debug("Creating layer %s" % name)
  20. layerDefFile = self.createLayerDefinitionFile(name,
  21. os.path.join( os.path.dirname(__file__), "templates",'wcs.xml'))
  22. ds = gdal.Open(layerDefFile)
  23. lyrobj = mapscript.layerObj(mapobj)
  24. lyrobj.name = name
  25. lyrobj.data = layerDefFile
  26. lyrobj.title = layer["{%s}%s" % (self.owsNs,"Title")].text
  27. lyrobj.setMetaData("wms_title",layer["{%s}%s" % (self.owsNs,"Title")].text)
  28. sr = osr.SpatialReference()
  29. sr.ImportFromWkt(ds.GetProjection())
  30. lyrobj.setProjection(sr.ExportToProj4())
  31. lyrobj.type = mapscript.MS_LAYER_RASTER
  32. lyrobj.dump = mapscript.MS_TRUE
  33. lyrobj.template = "foo"
  34. cls = mapscript.classObj(lyrobj)
  35. mapscript.styleObj(cls)
  36. self.saveMapfile(mapobj,mapfilename)
  37. return mapobj