[mapserver-commits] r13020 - trunk/mapserver

svn at osgeo.org svn at osgeo.org
Sat Jan 28 07:29:44 EST 2012


Author: rouault
Date: 2012-01-28 04:29:44 -0800 (Sat, 28 Jan 2012)
New Revision: 13020

Modified:
   trunk/mapserver/HISTORY.TXT
   trunk/mapserver/maptree.c
Log:
shptree: Improvement to reduce size of .qix files (#4169)

Modified: trunk/mapserver/HISTORY.TXT
===================================================================
--- trunk/mapserver/HISTORY.TXT	2012-01-27 10:12:57 UTC (rev 13019)
+++ trunk/mapserver/HISTORY.TXT	2012-01-28 12:29:44 UTC (rev 13020)
@@ -14,6 +14,9 @@
 
 Current Version (SVN trunk, 6.1-dev, future 6.2): 
 -------------------------------------------------
+
+- shptree: Improvement to reduce size of .qix files (#4169)
+
 - avoid potential gd fontcache deadlock on fastcgi exit signals(#4093)
 
 - Adjusted WCS GetCapabilities for an empty list of layers (#4140)

Modified: trunk/mapserver/maptree.c
===================================================================
--- trunk/mapserver/maptree.c	2012-01-27 10:12:57 UTC (rev 13019)
+++ trunk/mapserver/maptree.c	2012-01-28 12:29:44 UTC (rev 13020)
@@ -435,10 +435,24 @@
       }
     }
 
-    if( node->numsubnodes == 1 && node->numshapes == 0 ) {
-      node = node->subnode[0];
+/* -------------------------------------------------------------------- */
+/*      If the current node has 1 subnode and no shapes, promote that   */
+/*      subnode to the current node position.                           */
+/* -------------------------------------------------------------------- */
+    if( node->numsubnodes == 1 && node->numshapes == 0)
+    {
+        treeNodeObj* psSubNode = node->subnode[0];
+
+        memcpy(&node->rect, &psSubNode->rect,
+               sizeof(psSubNode->rect));
+        node->numshapes = psSubNode->numshapes;
+        assert(node->ids == NULL);
+        node->ids = psSubNode->ids;
+        node->numsubnodes = psSubNode->numsubnodes;
+        for( i = 0; i < psSubNode->numsubnodes; i++ )
+            node->subnode[i] = psSubNode->subnode[i];
+        free(psSubNode);
     }
-/* if I only have 1 subnode promote that subnode to my positon */ 
 
     /* -------------------------------------------------------------------- */
     /*      We should be trimmed if we have no subnodes, and no shapes.     */



More information about the mapserver-commits mailing list