فهرست منبع

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

+ 0 - 0
owsviewer.cgi → owsproxy.cgi


+ 12 - 7
wfs/__init__.py

@@ -23,28 +23,33 @@ class WFS(OWS):
 
 
         mapobj = self.getMapObj(mapfilename)
         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():
         for layer in self.capabilities.FeatureTypeList.getchildren():
             if layer.tag != "{http://www.opengis.net/wfs}FeatureType":
             if layer.tag != "{http://www.opengis.net/wfs}FeatureType":
                     continue
                     continue
+
             name = layer.Name.text
             name = layer.Name.text
             logging.debug("Creating layer %s" % name)
             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 = mapscript.layerObj(mapobj)
             lyrobj.name = name
             lyrobj.name = name
             lyrobj.title = layer.Title.text
             lyrobj.title = layer.Title.text
-            lyrobj.data = layerDefFile
             lyrobj.setMetaData("wms_title",layer.Title.text)
             lyrobj.setMetaData("wms_title",layer.Title.text)
             lyrobj.setMetaData("wfs_typename",layer.Name.text)
             lyrobj.setMetaData("wfs_typename",layer.Name.text)
             lyrobj.setMetaData("wfs_version",self.capabilities.attrib["version"])
             lyrobj.setMetaData("wfs_version",self.capabilities.attrib["version"])
+            lyrobj.setConnectionType(mapscript.MS_OGR,'')
+            lyrobj.connection = layerDefFile
+            lyrobj.data = name
 
 
             if ds:
             if ds:
                 ogrLayer = ds.GetLayerByName(name)
                 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:
                 if ogrLayer:
                     feature = ogrLayer.GetNextFeature()
                     feature = ogrLayer.GetNextFeature()
                     if feature:
                     if feature: