Browse Source

* using wfs 1.1.0
* improved parsing of crs

Michal Sredl 14 years ago
parent
commit
281f6ebcc4
3 changed files with 18 additions and 4 deletions
  1. 14 2
      OWS.py
  2. 3 0
      owsproxy.cgi
  3. 1 2
      wfs/__init__.py

+ 14 - 2
OWS.py

@@ -60,7 +60,8 @@ class OWS:
         self.parsedUrl = urlparse.urlparse(self.url)
         if self.service == "WFS":
             from owslib.wfs import WebFeatureService
-            self.capabilities = WebFeatureService(url=self.url)
+            self.capabilities = WebFeatureService(url=self.url,version="1.1.0")
+            logging.debug("OWS Capabilities: %s",self.capabilities)
         elif self.service == "WCS":
             from owslib.wcs import WebCoverageService
             self.capabilities = WebCoverageService(url=self.url,version="1.0.0")
@@ -133,6 +134,10 @@ class OWS:
         if request.getValueByName("fes"):
             self.setFilter(mapobj,request)
 
+        # mapobj.getLayerByName(request.getValueByName("layers")).metadata.get("wfs_filter")
+        # here is still fine
+
+        # but it fails here:
         mapobj.OWSDispatch(request)
 
     def getMapObj(self,mapfilename=None):
@@ -236,7 +241,12 @@ class OWS:
 
             dest = osr.SpatialReference()
             if crs:
-                dest.ImportFromEPSG(int(crs.split(":")[1]))
+                try:
+                    crsSplit = crs.split(":")
+                    epsg = int(crsSplit[len(crsSplit)-1])                                
+                    dest.ImportFromEPSG(epsg)
+                except (ValueError):
+                    logging.debug("Unable to parse crs '%s'" % crs)
             else:
                 dest.ImportFromWkt(wkt)
             source = osr.SpatialReference()
@@ -266,6 +276,8 @@ class OWS:
         logging.debug("Setting filter for layer %s to %s" % (request.getValueByName("layers"),request.getValueByName("fes")))
         layerobj = mapobj.getLayerByName(request.getValueByName("layers"))
         layerobj.setMetaData("wfs_filter",request.getValueByName("fes"))
+        # layerobj.metadata.get("wfs_filter") is still fine
+        
 
 def getService():
 

+ 3 - 0
owsproxy.cgi

@@ -1,5 +1,8 @@
 #!/usr/bin/python
 
+#debugger
+#import rpdb2; rpdb2.start_embedded_debugger("lucerna")
+
 import sys
 sys.path.append("/home/jachym/usr/src/hsrs/hslayers/trunk/source/scripts/hslframework/owsviewer/")
 

+ 1 - 2
wfs/__init__.py

@@ -34,8 +34,6 @@ class WFS(OWS):
 
         self.setMapName(mapobj)
 
-        logging.debug(self.capabilities.contents)
-
         for name in self.capabilities.contents:
             layer = self.capabilities.contents[name]
 
@@ -50,6 +48,7 @@ class WFS(OWS):
             #if layer.abstract:
             #    lyrobj.setMetaData("ows_abstract",  layer.abstract)
             lyrobj.setMetaData("wfs_typename", name)
+            logging.debug("WFS version %s",self.capabilities.version)
             lyrobj.setMetaData("wfs_version",self.capabilities.version)
             lyrobj.setMetaData("gml_include_items","all")
             lyrobj.setMetaData("wfs_request_method","GET")