__init__.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. parser = None
  14. version = None
  15. wcsns = None
  16. def __init__(self,url=None,qstring=None,configFiles=None):
  17. OWS.__init__(self,url,qstring)
  18. def makeMap(self,mapfilename=None):
  19. self.version = self.capabilities.attrib["version"]
  20. self.wcsns = self.capabilities.nsmap[self.capabilities.prefix]
  21. mapobj = self.getMapObj(mapfilename)
  22. for layer in self.capabilities["{%s}Contents" % (self.wcsns)].getchildren():
  23. name = layer.Identifier.text
  24. logging.debug("Creating layer %s" % name)
  25. layerDefFile = self.createLayerDefinitionFile(name,
  26. os.path.join( os.path.dirname(__file__), "templates",'wcs.xml'))
  27. ds = gdal.Open(layerDefFile)
  28. lyrobj = mapscript.layerObj(mapobj)
  29. lyrobj.name = name
  30. lyrobj.data = layerDefFile
  31. lyrobj.title = layer["{%s}%s" % (self.owsns11,"Title")].text
  32. lyrobj.setMetaData("wms_title",layer["{%s}%s" % (self.owsns11,"Title")].text)
  33. if "{%s}%s" % (self.owsns11,"Abstract") in layer:
  34. lyrobj.setMetaData("ows_abstract", layer["{%s}%s" % (self.owsns11,"Abstract")].text)
  35. sr = osr.SpatialReference()
  36. sr.ImportFromWkt(ds.GetProjection())
  37. lyrobj.setProjection(sr.ExportToProj4())
  38. lyrobj.type = mapscript.MS_LAYER_RASTER
  39. lyrobj.dump = mapscript.MS_TRUE
  40. lyrobj.template = "foo"
  41. cls = mapscript.classObj(lyrobj)
  42. mapscript.styleObj(cls)
  43. self.saveMapfile(mapobj,mapfilename)
  44. return mapobj