[mapserver-commits] r10008 - branches/branch-5-6/mapserver

svn at osgeo.org svn at osgeo.org
Thu Mar 25 10:05:30 EDT 2010


Author: assefa
Date: 2010-03-25 10:05:29 -0400 (Thu, 25 Mar 2010)
New Revision: 10008

Modified:
   branches/branch-5-6/mapserver/HISTORY.TXT
   branches/branch-5-6/mapserver/mapserver.h
   branches/branch-5-6/mapserver/mapwfslayer.c
Log:
 Fix GetFeatureInfo quries on WFS layers (#3403)

Modified: branches/branch-5-6/mapserver/HISTORY.TXT
===================================================================
--- branches/branch-5-6/mapserver/HISTORY.TXT	2010-03-25 13:46:25 UTC (rev 10007)
+++ branches/branch-5-6/mapserver/HISTORY.TXT	2010-03-25 14:05:29 UTC (rev 10008)
@@ -15,6 +15,8 @@
 Version 5.6.4 (????-??-??):
 ---------------------------
 
+- Fix getFeatureInfo quries on WFS layers (#3403)
+
 - Fixed mapstring.c build problem related to errno (#3401).
 
 - Correct ungeoreferenced defaults via GetExtent() on raster layer (#3368)

Modified: branches/branch-5-6/mapserver/mapserver.h
===================================================================
--- branches/branch-5-6/mapserver/mapserver.h	2010-03-25 13:46:25 UTC (rev 10007)
+++ branches/branch-5-6/mapserver/mapserver.h	2010-03-25 14:05:29 UTC (rev 10008)
@@ -1958,6 +1958,7 @@
 int msOGRLayerGetItems(layerObj *layer);
 void msOGRLayerFreeItemInfo(layerObj *layer);
 int msOGRLayerGetShape(layerObj *layer, shapeObj *shape, int tile, long record);
+int msOGRLayerResultGetShape(layerObj *layer, shapeObj *shape, int tile, long record);
 int msOGRLayerGetExtent(layerObj *layer, rectObj *extent);
 
 #ifdef USE_OGR

Modified: branches/branch-5-6/mapserver/mapwfslayer.c
===================================================================
--- branches/branch-5-6/mapserver/mapwfslayer.c	2010-03-25 13:46:25 UTC (rev 10007)
+++ branches/branch-5-6/mapserver/mapwfslayer.c	2010-03-25 14:05:29 UTC (rev 10008)
@@ -946,9 +946,46 @@
 
 }
 
+/**********************************************************************
+ *                          msWFSLayerResultGetShape()
+ *
+ **********************************************************************/
+int msWFSLayerResultGetShape(layerObj *layer, shapeObj *shape, int tile, 
+                             long record)
+{
+#ifdef USE_WFS_LYR
+    msWFSLayerInfo* psInfo = NULL;
 
+    if(layer != NULL && layer->wfslayerinfo != NULL)
+    	psInfo = (msWFSLayerInfo*)layer->wfslayerinfo;
+    else
+    {
+	msSetError(MS_WFSERR, "Layer is not opened.", "msWFSLayerResultGetShape()");
+	return MS_FAILURE;
+    }
 
+    if(psInfo->bLayerHasValidGML)
+      return msOGRLayerResultGetShape(layer, shape, tile, record);
+    else
+    {
+          /* Layer is successful, but there is no data to process */
+        msFreeShape(shape);
+        shape->type = MS_SHAPE_NULL;
+        return MS_FAILURE;
+    }
+#else
+/* ------------------------------------------------------------------
+ * WFS CONNECTION Support not included...
+ * ------------------------------------------------------------------ */
+  msSetError(MS_WFSCONNERR, "WFS CLIENT CONNECTION support is not available.", 
+             "msWFSLayerResultGetShape()");
+  return(MS_FAILURE);
+#endif /* USE_WFS_LYR */
 
+}
+
+
+
 /**********************************************************************
  *                          msWFSLayerGetNextShape()
  *
@@ -1333,7 +1370,7 @@
     layer->vtable->LayerIsOpen = msWFSLayerIsOpen;
     layer->vtable->LayerWhichShapes = msWFSLayerWhichShapes;
     layer->vtable->LayerNextShape = msWFSLayerNextShape;
-    layer->vtable->LayerResultsGetShape = msWFSLayerGetShape; 
+    layer->vtable->LayerResultsGetShape = msWFSLayerResultGetShape; 
     layer->vtable->LayerGetShape = msWFSLayerGetShape;
     layer->vtable->LayerClose = msWFSLayerClose;
     layer->vtable->LayerGetItems = msWFSLayerGetItems;



More information about the mapserver-commits mailing list