|
@@ -41,9 +41,8 @@ class OWS:
|
|
|
if qstring:
|
|
if qstring:
|
|
|
self.qstring = qstring
|
|
self.qstring = qstring
|
|
|
|
|
|
|
|
- configFiles = [
|
|
|
|
|
- os.path.join(os.path.dirname(__file__),"config.cfg")
|
|
|
|
|
- ]
|
|
|
|
|
|
|
+ configFiles = [ os.path.join(os.path.dirname(__file__),"config.cfg") ]
|
|
|
|
|
+
|
|
|
if sys.platform == "win32":
|
|
if sys.platform == "win32":
|
|
|
pass # TODO Default conf. file on windows platform
|
|
pass # TODO Default conf. file on windows platform
|
|
|
elif sys.platform == "linux2":
|
|
elif sys.platform == "linux2":
|
|
@@ -63,14 +62,26 @@ class OWS:
|
|
|
self.parsedUrl = urlparse.urlparse(self.url)
|
|
self.parsedUrl = urlparse.urlparse(self.url)
|
|
|
if self.service == "WFS":
|
|
if self.service == "WFS":
|
|
|
from owslib.wfs import WebFeatureService
|
|
from owslib.wfs import WebFeatureService
|
|
|
- self.capabilities = WebFeatureService(url=self.url,version="1.1.0")
|
|
|
|
|
|
|
+ self.capabilities = WebFeatureService(url=self.url,version="1.0.0")
|
|
|
logging.debug("OWS Capabilities: %s",self.capabilities)
|
|
logging.debug("OWS Capabilities: %s",self.capabilities)
|
|
|
elif self.service == "WCS":
|
|
elif self.service == "WCS":
|
|
|
from owslib.wcs import WebCoverageService
|
|
from owslib.wcs import WebCoverageService
|
|
|
self.capabilities = WebCoverageService(url=self.url,version="1.0.0")
|
|
self.capabilities = WebCoverageService(url=self.url,version="1.0.0")
|
|
|
|
|
|
|
|
def getParams(self):
|
|
def getParams(self):
|
|
|
- return urlparse.parse_qs(self.qstring)
|
|
|
|
|
|
|
+ params = urlparse.parse_qs(self.qstring)
|
|
|
|
|
+
|
|
|
|
|
+ if not "VERSION" in params.keys():
|
|
|
|
|
+ params["VERSION"] = params.pop("version")
|
|
|
|
|
+ if not "LAYERS" in params.keys():
|
|
|
|
|
+ params["LAYERS"] = params.pop("layers")
|
|
|
|
|
+ if not "FORMAT" in params.keys():
|
|
|
|
|
+ params["FORMAT"] = params.pop("format")
|
|
|
|
|
+ if not "STYLES" in params.keys():
|
|
|
|
|
+ params["STYLES"] = params.pop("styles")
|
|
|
|
|
+ if not "TRANSPARENT" in params.keys():
|
|
|
|
|
+ params["TRANSPARENT"] = params.pop("transparent")
|
|
|
|
|
+ return params
|
|
|
|
|
|
|
|
def getOnlineResource(self,onlineresource,mapfilename=None):
|
|
def getOnlineResource(self,onlineresource,mapfilename=None):
|
|
|
o = urlparse.urlparse(onlineresource)
|
|
o = urlparse.urlparse(onlineresource)
|
|
@@ -141,7 +152,6 @@ class OWS:
|
|
|
|
|
|
|
|
# mapobj.getLayerByName(request.getValueByName("layers")).metadata.get("wfs_filter")
|
|
# mapobj.getLayerByName(request.getValueByName("layers")).metadata.get("wfs_filter")
|
|
|
# here is still fine, but it fails on dispatch:
|
|
# here is still fine, but it fails on dispatch:
|
|
|
-
|
|
|
|
|
res = mapobj.OWSDispatch(request)
|
|
res = mapobj.OWSDispatch(request)
|
|
|
if mapscript.MS_DONE == res:
|
|
if mapscript.MS_DONE == res:
|
|
|
raise OWSExceptions.NoValidRequest("No valid OWS Request")
|
|
raise OWSExceptions.NoValidRequest("No valid OWS Request")
|
|
@@ -220,7 +230,7 @@ class OWS:
|
|
|
return layerurl
|
|
return layerurl
|
|
|
|
|
|
|
|
def createLayerDefinitionFile(self, name,
|
|
def createLayerDefinitionFile(self, name,
|
|
|
- templatefile,time=None,target=None):
|
|
|
|
|
|
|
+ templatefile,time="",target=None):
|
|
|
|
|
|
|
|
layerurl = self.getLayerUrl()
|
|
layerurl = self.getLayerUrl()
|
|
|
defFileName = None
|
|
defFileName = None
|
|
@@ -230,12 +240,12 @@ class OWS:
|
|
|
defFileName = os.path.join(self.cachedir,'%s.%s'%(name,self.service.lower()))
|
|
defFileName = os.path.join(self.cachedir,'%s.%s'%(name,self.service.lower()))
|
|
|
if time:
|
|
if time:
|
|
|
time = "<DefaultTime>"+time+"</DefaultTime>"
|
|
time = "<DefaultTime>"+time+"</DefaultTime>"
|
|
|
- else:
|
|
|
|
|
- time = ""
|
|
|
|
|
|
|
|
|
|
open(defFileName,'w').write(
|
|
open(defFileName,'w').write(
|
|
|
Template(open(templatefile).read()).substitute(
|
|
Template(open(templatefile).read()).substitute(
|
|
|
- dict(url= layerurl, name=name,time=time)))
|
|
|
|
|
|
|
+ dict(url= layerurl,
|
|
|
|
|
+ name=name,time=time,extras="&BAND=1,2,3")))
|
|
|
|
|
+ # FIXME always takes band 1,2,3 ^^
|
|
|
|
|
|
|
|
logging.debug("Created %s layer definition file" % defFileName)
|
|
logging.debug("Created %s layer definition file" % defFileName)
|
|
|
|
|
|
|
@@ -301,7 +311,7 @@ class OWS:
|
|
|
layerobj.setMetaData("wfs_filter",msFilter)
|
|
layerobj.setMetaData("wfs_filter",msFilter)
|
|
|
|
|
|
|
|
|
|
|
|
|
-def getService():
|
|
|
|
|
|
|
+def getService(configFile=None):
|
|
|
|
|
|
|
|
qstring = os.environ["QUERY_STRING"]
|
|
qstring = os.environ["QUERY_STRING"]
|
|
|
params = urlparse.parse_qs(qstring)
|
|
params = urlparse.parse_qs(qstring)
|
|
@@ -325,10 +335,13 @@ def getService():
|
|
|
if params["owsService"][0].lower() == "wfs":
|
|
if params["owsService"][0].lower() == "wfs":
|
|
|
from wfs import WFS
|
|
from wfs import WFS
|
|
|
logging.debug("OWS.py::getService()::owsUrl: '%s'" % owsUrl)
|
|
logging.debug("OWS.py::getService()::owsUrl: '%s'" % owsUrl)
|
|
|
- return WFS(owsUrl,qstring)
|
|
|
|
|
|
|
+ return WFS(owsUrl,qstring,configFile = configFile )
|
|
|
elif params["owsService"][0].lower() == "wcs":
|
|
elif params["owsService"][0].lower() == "wcs":
|
|
|
from wcs import WCS
|
|
from wcs import WCS
|
|
|
- return WCS(owsUrl,qstring)
|
|
|
|
|
|
|
+ return WCS(owsUrl,qstring, configFile = configFile)
|
|
|
|
|
+ elif params["owsService"][0].lower() == "wms":
|
|
|
|
|
+ from wms import WMS
|
|
|
|
|
+ return WMS(owsUrl,qstring, configFile = configFile)
|
|
|
else:
|
|
else:
|
|
|
raise OWSExceptions.MissingParameterValue("""owsUrl or owsService""")
|
|
raise OWSExceptions.MissingParameterValue("""owsUrl or owsService""")
|
|
|
|
|
|