[mapserver-commits] r9108 - trunk/mapserver

svn at osgeo.org svn at osgeo.org
Wed Jun 17 15:14:55 EDT 2009


Author: pramsey
Date: 2009-06-17 15:14:55 -0400 (Wed, 17 Jun 2009)
New Revision: 9108

Modified:
   trunk/mapserver/HISTORY.TXT
   trunk/mapserver/mapdraw.c
Log:
Add logging in layer visibility tests to help users find why layers don't draw (#3054)


Modified: trunk/mapserver/HISTORY.TXT
===================================================================
--- trunk/mapserver/HISTORY.TXT	2009-06-17 12:59:11 UTC (rev 9107)
+++ trunk/mapserver/HISTORY.TXT	2009-06-17 19:14:55 UTC (rev 9108)
@@ -14,6 +14,8 @@
 Current Version (SVN trunk):
 ----------------------------
 
+- Add logging in layer visibility tests to help users find why layers don't draw (#3054)
+
 - include PNG libs first (#3046)
 
 - merge graphics branch: RFC54 implementation, cairo rendering (png, svg, pdf),

Modified: trunk/mapserver/mapdraw.c
===================================================================
--- trunk/mapserver/mapdraw.c	2009-06-17 12:59:11 UTC (rev 9107)
+++ trunk/mapserver/mapdraw.c	2009-06-17 19:14:55 UTC (rev 9108)
@@ -634,15 +634,30 @@
 
   /* Only return MS_FALSE if it is definitely false. Sometimes it will return MS_UNKNOWN, which we 
   ** consider true, for this use case (it might be visible, try and draw it, see what happens). */
-  if ( msExtentsOverlap(map, layer) == MS_FALSE ) return(MS_FALSE);  
+  if ( msExtentsOverlap(map, layer) == MS_FALSE ) {
+    if( layer->debug >= MS_DEBUGLEVEL_V ) {
+      msDebug("msLayerIsVisible(): Skipping layer (%s) because LAYER.EXTENT does not intersect MAP.EXTENT\n", layer->name);
+    }
+    return(MS_FALSE);  
+  }
   
   if(msEvalContext(map, layer, layer->requires) == MS_FALSE) return(MS_FALSE);
 
   if(map->scaledenom > 0) {
     
     /* layer scale boundaries should be checked first */
-    if((layer->maxscaledenom > 0) && (map->scaledenom > layer->maxscaledenom)) return(MS_FALSE);
-    if((layer->minscaledenom > 0) && (map->scaledenom <= layer->minscaledenom)) return(MS_FALSE);
+    if((layer->maxscaledenom > 0) && (map->scaledenom > layer->maxscaledenom)) {
+      if( layer->debug >= MS_DEBUGLEVEL_V ) {
+        msDebug("msLayerIsVisible(): Skipping layer (%s) because LAYER.MAXSCALE is too small for this MAP scale\n", layer->name);
+      }
+      return(MS_FALSE);
+    }
+    if((layer->minscaledenom > 0) && (map->scaledenom <= layer->minscaledenom)) {
+      if( layer->debug >= MS_DEBUGLEVEL_V ) {
+        msDebug("msLayerIsVisible(): Skipping layer (%s) because LAYER.MAXSCALE is too large for this MAP scale\n", layer->name);
+      }
+      return(MS_FALSE);
+    }
 
     /* now check class scale boundaries (all layers *must* pass these tests) */
     if(layer->numclasses > 0) {
@@ -654,14 +669,29 @@
 
         break; /* can't skip this class (or layer for that matter) */
       } 
-      if(i == layer->numclasses) return(MS_FALSE);
+      if(i == layer->numclasses) {
+        if( layer->debug >= MS_DEBUGLEVEL_V ) {
+          msDebug("msLayerIsVisible(): Skipping layer (%s) because no CLASS in the layer is in-scale for this MAP scale\n", layer->name);
+        }
+        return(MS_FALSE);
+      }
     }
 
   }
 
   if (layer->maxscaledenom <= 0 && layer->minscaledenom <= 0) {
-      if((layer->maxgeowidth > 0) && ((map->extent.maxx - map->extent.minx) > layer->maxgeowidth)) return(MS_FALSE);
-      if((layer->mingeowidth > 0) && ((map->extent.maxx - map->extent.minx) < layer->mingeowidth)) return(MS_FALSE);
+      if((layer->maxgeowidth > 0) && ((map->extent.maxx - map->extent.minx) > layer->maxgeowidth)) {
+        if( layer->debug >= MS_DEBUGLEVEL_V ) {
+          msDebug("msLayerIsVisible(): Skipping layer (%s) because LAYER width is much smaller than map width\n", layer->name);
+        }
+        return(MS_FALSE);
+      }
+      if((layer->mingeowidth > 0) && ((map->extent.maxx - map->extent.minx) < layer->mingeowidth)) {
+        if( layer->debug >= MS_DEBUGLEVEL_V ) {
+          msDebug("msLayerIsVisible(): Skipping layer (%s) because LAYER width is much larger than map width\n", layer->name);
+        }
+        return(MS_FALSE);
+      }
   }
 
   return MS_TRUE;  /* All tests passed.  Layer is visible. */



More information about the mapserver-commits mailing list