فهرست منبع

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

Jachym Cepicky 14 سال پیش
والد
کامیت
548eee6eeb
3فایلهای تغییر یافته به همراه15 افزوده شده و 12 حذف شده
  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: