瀏覽代碼

wxNviz: load areas as boundaries and centroids

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@56495 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová 12 年之前
父節點
當前提交
0f5460c518
共有 2 個文件被更改,包括 29 次插入59 次删除
  1. 14 19
      gui/wxpython/nviz/mapwindow.py
  2. 15 40
      gui/wxpython/nviz/tools.py

+ 14 - 19
gui/wxpython/nviz/mapwindow.py

@@ -1318,17 +1318,12 @@ class GLWindow(MapWindow, glcanvas.GLCanvas):
                 elif type ==  '3d-raster':
                     self.LoadRaster3d(item)
                 elif type ==  'vector':
-                    # data = self.tree.GetLayerInfo(item, key = 'nviz')
-                    # vecType = []
-                    # if data and 'vector' in data:
-                    #     for v in ('lines', 'points'):
-                    #         if data['vector'][v]:
-                    #             vecType.append(v)
                     layer = self.tree.GetLayerInfo(item, key = 'maplayer')
-                    npoints, nlines, nfeatures, mapIs3D = self.lmgr.nviz.VectorInfo(layer)
-                    if npoints > 0:
+                    vInfo = grass.vector_info_topo(layer.GetName())
+                    if (vInfo['points']) > 0:
+                        # include vInfo['centroids'] to initially load centroids 
                         self.LoadVector(item, points = True)
-                    if nlines > 0 or mapIs3D:
+                    if (vInfo['lines'] + vInfo['boundaries']) > 0 or vInfo['map3d']:
                         self.LoadVector(item, points = False)
                     
             except GException, e:
@@ -1367,10 +1362,10 @@ class GLWindow(MapWindow, glcanvas.GLCanvas):
                     self.UnloadRaster3d(layer) 
                 elif ltype ==  'vector':
                     maplayer = self.tree.GetLayerInfo(layer, key = 'maplayer')
-                    npoints, nlines, nfeatures, mapIs3D = self.lmgr.nviz.VectorInfo(maplayer)
-                    if npoints > 0:
+                    vInfo = grass.vector_info_topo(maplayer.GetName())
+                    if (vInfo['points'] + vInfo['centroids']) > 0:
                         self.UnloadVector(layer, points = True)
-                    if nlines > 0:
+                    if (vInfo['lines'] + vInfo['boundaries']) > 0 or vInfo['map3d']:
                         self.UnloadVector(layer, points = False)
                         
             except GException, e:
@@ -2240,10 +2235,10 @@ class GLWindow(MapWindow, glcanvas.GLCanvas):
             if type == 'raster':
                 self.nvizDefault.SetSurfaceDefaultProp(data['surface'])
             if type == 'vector':
-                npoints, nlines, nfeatures, mapIs3D = self.lmgr.nviz.VectorInfo(layer)
-                if npoints > 0:
+                vInfo = grass.vector_info_topo(layer.GetName())
+                if (vInfo['points'] + vInfo['centroids']) > 0:
                     self.nvizDefault.SetVectorPointsDefaultProp(data['vector']['points'])
-                if nlines > 0:
+                if (vInfo['lines'] + vInfo['boundaries']) > 0:
                     self.nvizDefault.SetVectorLinesDefaultProp(data['vector']['lines'])
             
     def NvizCmdCommand(self):
@@ -2362,17 +2357,17 @@ class GLWindow(MapWindow, glcanvas.GLCanvas):
             markers = ['x', 'box', 'sphere', 'cube', 'diamond',
                        'dec_tree', 'con_tree', 'aster', 'gyro', 'histogram']
             for vector in vectors:
-                npoints, nlines, nfeatures, mapIs3D = self.lmgr.nviz.VectorInfo(
-                                                      self.tree.GetLayerInfo(vector, key = 'maplayer'))
+                layerName = self.tree.GetLayerInfo(vector, key = 'maplayer').GetName()
+                vInfo = grass.vector_info_topo(layerName)
                 nvizData = self.tree.GetLayerInfo(vector, key = 'nviz')['vector']
-                if nlines > 0:
+                if (vInfo['lines'] + vInfo['boundaries']) > 0:
                     cmdLines += "%s," % self.tree.GetLayerInfo(vector, key = 'maplayer').GetName()
                     cmdLWidth += "%d," % nvizData['lines']['width']['value']
                     cmdLHeight += "%d," % nvizData['lines']['height']['value']
                     cmdLColor += "%s," % nvizData['lines']['color']['value']
                     cmdLMode += "%s," % nvizData['lines']['mode']['type']
                     cmdLPos += "0,0,%d," % nvizData['lines']['height']['value']
-                if npoints > 0:    
+                if (vInfo['points'] + vInfo['centroids']) > 0:    
                     cmdPoints += "%s," % self.tree.GetLayerInfo(vector, key = 'maplayer').GetName()
                     cmdPWidth += "%d," % nvizData['points']['width']['value']
                     cmdPSize += "%d," % nvizData['points']['size']['value']

+ 15 - 40
gui/wxpython/nviz/tools.py

@@ -4694,43 +4694,20 @@ class NvizToolWindow(FN.FlatNotebook):
 
         # enable/disable res widget + set draw mode
         self.OnSurfaceMode(event = None)
-
-    def VectorInfo(self, layer):
-        """!Get number of points/lines
-        
-        @param layer MapLayer instance
-        
-        @return num of points/features (expect of points)
-        @return None
-        """
-        vInfo = grass.vector_info_topo(layer.GetName())
-        
-        if not vInfo:
-            return None
-        
-        nprimitives = 0
-        for key, value in vInfo.iteritems():
-            if key in ('points',
-                       'lines',
-                       'boundaries',
-                       'centroids',
-                       'faces',
-                       'kernels'):
-                nprimitives += value
-        
-        return (vInfo['points'], vInfo['lines'], nprimitives, vInfo['map3d'])
         
     def UpdateVectorPage(self, layer, data, updateName = True):
         """!Update vector page"""
-        npoints, nlines, nfeatures, mapIs3D = self.VectorInfo(layer)
-        if mapIs3D:
+        vInfo = grass.vector_info_topo(layer.GetName())
+        if not vInfo:
+            return
+        if vInfo['map3d']:
             desc = _("Vector map is 3D")
             enable = False
         else:
             desc = _("Vector map is 2D")
             enable = True
         desc += " - " + _("%(features)d features (%(points)d points)") % \
-            { 'features' : nfeatures, 'points' : npoints }
+            { 'features' : vInfo['primitives'], 'points' : vInfo['points']}
         
         if updateName:
             self.FindWindowById(self.win['vector']['map']).SetValue(layer.name)
@@ -4760,13 +4737,12 @@ class NvizToolWindow(FN.FlatNotebook):
             showLines.SetValue(True)
         else:
             showLines.SetValue(False)
-            if nlines > 0:
-                showLines.Enable(True)
-            else:
-                showLines.Enable(False)
+        if (vInfo['lines'] + vInfo['boundaries']) > 0:
+            showLines.Enable(True)
+        else:
+            showLines.Enable(False)
         
-        self.UpdateVectorShow('lines',
-                              showLines.IsChecked())
+        self.UpdateVectorShow('lines', showLines.IsChecked())
         
         width = self.FindWindowById(self.win['vector']['lines']['width'])
         width.SetValue(data['lines']['width']['value'])
@@ -4807,13 +4783,12 @@ class NvizToolWindow(FN.FlatNotebook):
             showPoints.SetValue(True)
         else:
             showPoints.SetValue(False)
-            if npoints > 0:
-                showPoints.Enable(True)
-            else:
-                showPoints.Enable(False)
+        if (vInfo['points'] + vInfo['centroids']) > 0:
+            showPoints.Enable(True)
+        else:
+            showPoints.Enable(False)
         
-        self.UpdateVectorShow('points',
-                              showPoints.IsChecked())
+        self.UpdateVectorShow('points', showPoints.IsChecked())
         # size, width, marker, color
         for prop in ('size', 'marker', 'color'):
             win = self.FindWindowById(self.win['vector']['points'][prop])