Parcourir la source

Updates for WFS, nearly working, but there are some Extent issues (maybe MapServer bug??)

Jachym Cepicky il y a 14 ans
Parent
commit
548eee6eeb
3 fichiers modifiés avec 15 ajouts et 12 suppressions
  1. 3 5
      OWS.py
  2. 0 0
      owsproxy.cgi
  3. 12 7
      wfs/__init__.py

+ 3 - 5
OWS.py

@@ -103,9 +103,6 @@ class OWS:
     def getParams(self):
         return urlparse.parse_qs(self.qstring)
 
-    def performRequest(self):
-        pass
-
     def getOnlineResource(self,onlineresource,mapfilename=None):
         o = urlparse.urlparse(onlineresource)
         params = urlparse.parse_qs(o.query,keep_blank_values=True)
@@ -165,7 +162,7 @@ class OWS:
             else:
                 mapobj = self.makeMap(request.getValueByName("map"))
 
-        print mapobj.OWSDispatch(request)
+        mapobj.OWSDispatch(request)
 
     def getMapObj(self,mapfilename=None):
 
@@ -229,8 +226,9 @@ class OWS:
                     Template(open(templatefile).read()).substitute( 
                             dict(url= layerurl, name=name)))
 
-            return defFileName
+            logging.debug("Created %s layer definition file" % defFileName)
 
+            return defFileName
 
 def getService():
 

+ 0 - 0
owsviewer.cgi → owsproxy.cgi


+ 12 - 7
wfs/__init__.py

@@ -23,28 +23,33 @@ class WFS(OWS):
 
         mapobj = self.getMapObj(mapfilename)
 
+        layerDefFile = self.createLayerDefinitionFile("wfs",
+                os.path.join( os.path.dirname(__file__), "templates",'wfs.xml'))
+
+        ds = ogr.Open(layerDefFile)
+
         for layer in self.capabilities.FeatureTypeList.getchildren():
             if layer.tag != "{http://www.opengis.net/wfs}FeatureType":
                     continue
+
             name = layer.Name.text
             logging.debug("Creating layer %s" % name)
             
-
-            layerDefFile = self.createLayerDefinitionFile(name,
-                    os.path.join( os.path.dirname(__file__), "templates",'wfs.xml'))
-
-            ds = ogr.Open(layerDefFile)
-
             lyrobj = mapscript.layerObj(mapobj)
             lyrobj.name = name
             lyrobj.title = layer.Title.text
-            lyrobj.data = layerDefFile
             lyrobj.setMetaData("wms_title",layer.Title.text)
             lyrobj.setMetaData("wfs_typename",layer.Name.text)
             lyrobj.setMetaData("wfs_version",self.capabilities.attrib["version"])
+            lyrobj.setConnectionType(mapscript.MS_OGR,'')
+            lyrobj.connection = layerDefFile
+            lyrobj.data = name
 
             if ds:
                 ogrLayer = ds.GetLayerByName(name)
+                e = ogrLayer.GetExtent()
+                lyrobj.setMetaData("wms_extent","%s %s %s %s" % \
+                        (e[0],e[2],e[1],e[3]))
                 if ogrLayer:
                     feature = ogrLayer.GetNextFeature()
                     if feature: