[GRASS-SVN] r47469 - grass-addons/grass7/gui/wxpython/wx.stream/gui_modules

svn_grass at osgeo.org svn_grass at osgeo.org
Sat Aug 6 12:03:47 EDT 2011


Author: madi
Date: 2011-08-06 09:03:47 -0700 (Sat, 06 Aug 2011)
New Revision: 47469

Modified:
   grass-addons/grass7/gui/wxpython/wx.stream/gui_modules/rstream_panelOne.py
Log:
Fixed bugs and added onRun function for stream extraction

Modified: grass-addons/grass7/gui/wxpython/wx.stream/gui_modules/rstream_panelOne.py
===================================================================
--- grass-addons/grass7/gui/wxpython/wx.stream/gui_modules/rstream_panelOne.py	2011-08-06 07:50:36 UTC (rev 47468)
+++ grass-addons/grass7/gui/wxpython/wx.stream/gui_modules/rstream_panelOne.py	2011-08-06 16:03:47 UTC (rev 47469)
@@ -64,96 +64,93 @@
     def _layout(self): 
 
 	# create the grid for gselect
-        select = wx.GridBagSizer(20, 5)
+        self.select = wx.GridBagSizer(20, 5)
 
         #----------------------------
         #---------Input maps---------
 
         # Ask user for digital elevation model
-        text1 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "INPUT : Elevation map (required)") 
-        select.Add(item = text1, flag = wx.LEFT, pos = (1,0), span = wx.DefaultSpan, border = 0)
+        self.text1 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "INPUT : Elevation map (required)") 
+        self.select.Add(item = self.text1, flag = wx.LEFT, pos = (1,0), span = wx.DefaultSpan, border = 0)
 
         # Add the box for choosing the map 
-        select1 = gselect.Select(parent = self.panel, id = wx.ID_ANY, size = (250, -1),
+        self.select1 = gselect.Select(parent = self.panel, id = wx.ID_ANY, size = (250, -1),
                                type = 'rast', multiple = False)
-        select.Add(item = select1, pos = (2,0), span = wx.DefaultSpan)
+        self.select.Add(item = self.select1, pos = (2,0), span = wx.DefaultSpan)
 
         # binder
-        select1.Bind(wx.EVT_TEXT, self.OnSelectElev)
+        self.select1.Bind(wx.EVT_TEXT, self.OnSelectElev)
 
         #----------------------------
 
         # Ask user for Flow accumulation
-        text2 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "INPUT/OUTPUT : Flow accumulation (required)") 
-        select.Add(item = text2, flag = wx.LEFT, pos = (3,0), span = wx.DefaultSpan)
+        self.text2 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "INPUT/OUTPUT : Flow accumulation (required)") 
+        self.select.Add(item = self.text2, flag = wx.LEFT, pos = (3,0), span = wx.DefaultSpan)
         
 
         # Flow accum can be either existent or to be calculated
         # RadioButton
-        hbox1 = wx.BoxSizer(wx.HORIZONTAL)
+        self.hbox1 = wx.BoxSizer(wx.HORIZONTAL)
 
-        cb1 = wx.RadioButton(parent = self.panel, id = wx.ID_ANY, label = "Custom (select existing map)", style = wx.RB_GROUP)
-        hbox1.Add(item = cb1, flag = wx.LEFT)
-        cb2 = wx.RadioButton(parent = self.panel, id = wx.ID_ANY, label = "Create by MFD algorithm")
-        hbox1.Add(item = cb2, flag = wx.LEFT)
-        cb3 = wx.RadioButton(parent = self.panel, id = wx.ID_ANY, label = "Create by SFD algorithm")
-        hbox1.Add(item = cb3, flag = wx.LEFT)
+        self.cb1 = wx.RadioButton(parent = self.panel, id = wx.ID_ANY, label = "Custom (select existing map)", style = wx.RB_GROUP)
+        self.hbox1.Add(item = self.cb1, flag = wx.LEFT)
+        self.cb2 = wx.RadioButton(parent = self.panel, id = wx.ID_ANY, label = "Create by MFD algorithm")
+        self.hbox1.Add(item = self.cb2, flag = wx.LEFT)
+        self.cb3 = wx.RadioButton(parent = self.panel, id = wx.ID_ANY, label = "Create by SFD algorithm")
+        self.hbox1.Add(item = self.cb3, flag = wx.LEFT)
 
-        select.Add(item = hbox1, pos = (4,0))
+        self.select.Add(item = self.hbox1, pos = (4,0))
 
         # Box to insert name of acc map 
-
-        global select2, textOne
-
-        select2 = gselect.Select(parent = self.panel, id = wx.ID_ANY, size = (250, -1),
+        self.select2 = gselect.Select(parent = self.panel, id = wx.ID_ANY, size = (250, -1),
                                type = 'rast', multiple = False) # select existing map
-        select.Add(item = select2, pos = (5,0), span = wx.DefaultSpan)
-        textOne = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY, style = wx.TE_LEFT) 
-        select.Add(item = textOne, flag = wx.LEFT | wx.EXPAND , pos = (6,0), span = wx.DefaultSpan)
+        self.select.Add(item = self.select2, pos = (5,0), span = wx.DefaultSpan)
+        self.textOne = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY, style = wx.TE_LEFT) 
+        self.select.Add(item = self.textOne, flag = wx.LEFT | wx.EXPAND , pos = (6,0), span = wx.DefaultSpan)
 
 
         # linking buttons and text
-        self.texts = {"Custom (select existing map)" : select2,
-                      "Create by MFD algorithm" : textOne,
-                      "Create by SFD algorithm" : textOne}
+        self.texts = {"Custom (select existing map)" : self.select2,
+                      "Create by MFD algorithm" : self.textOne,
+                      "Create by SFD algorithm" : self.textOne}
 
 
-        self.selectedText = select2 # default is select existing map
+        self.selectedText = self.select2 # default is select existing map
 
         # Disable 
-        textOne.Enable(False)
+        self.textOne.Enable(False)
 
         # RadioButton binders
-        cb1.Bind(wx.EVT_RADIOBUTTON, self.OnSelectExistAcc)
-        cb2.Bind(wx.EVT_RADIOBUTTON, self.OnSelectMFDAcc)
-        cb3.Bind(wx.EVT_RADIOBUTTON, self.OnSelectSFDAcc)
+        self.cb1.Bind(wx.EVT_RADIOBUTTON, self.OnSelectExistAcc)
+        self.cb2.Bind(wx.EVT_RADIOBUTTON, self.OnSelectMFDAcc)
+        self.cb3.Bind(wx.EVT_RADIOBUTTON, self.OnSelectSFDAcc)
 
         #----------------------------
 
         # Ask user for Mask
-        text3 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "INPUT : Mask (optional)") 
-        select.Add(item = text3, flag = wx.LEFT, pos = (7,0), span = wx.DefaultSpan)
+        self.text3 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "INPUT : Mask (optional)") 
+        self.select.Add(item = self.text3, flag = wx.LEFT, pos = (7,0), span = wx.DefaultSpan)
 
         # Add the box for choosing the map
-        select3 = gselect.Select(parent = self.panel, id = wx.ID_ANY, size = (250, -1),
+        self.select3 = gselect.Select(parent = self.panel, id = wx.ID_ANY, size = (250, -1),
                                type = 'rast', multiple = False)
-        select.Add(item = select3, pos = (8,0), span = wx.DefaultSpan)
+        self.select.Add(item = self.select3, pos = (8,0), span = wx.DefaultSpan)
 
         # binder
-        select3.Bind(wx.EVT_TEXT, self.OnSelectMask)
+        self.select3.Bind(wx.EVT_TEXT, self.OnSelectMask)
 
         #----------------------------
 
         # Ask user for threshold
-        text4 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "INPUT : Threshold (required)") 
-        select.Add(item = text4, flag = wx.LEFT, pos = (9,0), span = wx.DefaultSpan)
+        self.text4 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "INPUT : Threshold (required)") 
+        self.select.Add(item = self.text4, flag = wx.LEFT, pos = (9,0), span = wx.DefaultSpan)
 
         # Box to insert threshold
-        txtTwo = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY, style = wx.TE_LEFT)
-        select.Add(item = txtTwo, flag = wx.LEFT, pos = (10,0), span = wx.DefaultSpan)
+        self.txtTwo = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY, style = wx.TE_LEFT)
+        self.select.Add(item = self.txtTwo, flag = wx.LEFT, pos = (10,0), span = wx.DefaultSpan)
 
         # binder
-        txtTwo.Bind(wx.EVT_TEXT, self.OnSelecTh)
+        self.txtTwo.Bind(wx.EVT_TEXT, self.OnSelecTh)
 
 
         #----------------------------
@@ -161,59 +158,56 @@
 
 
         # Flow direction map
-        text5 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "OUTPUT : Flow direction map (required)") 
-        select.Add(item = text5, flag = wx.LEFT | wx.EXPAND, pos = (11,0), span = wx.DefaultSpan)
+        self.text5 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "OUTPUT : Flow direction map (required)") 
+        self.select.Add(item = self.text5, flag = wx.LEFT | wx.EXPAND, pos = (11,0), span = wx.DefaultSpan)
 
         # Box to insert name of new flow dir map (to be created)
-        txtThr = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY, style = wx.TE_LEFT)
-        select.Add(item = txtThr, flag = wx.LEFT | wx.EXPAND , pos = (12,0), span = wx.DefaultSpan)
+        self.txtThr = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY, style = wx.TE_LEFT)
+        self.select.Add(item = self.txtThr, flag = wx.LEFT | wx.EXPAND , pos = (12,0), span = wx.DefaultSpan)
 
         # binder
-        txtThr.Bind(wx.EVT_TEXT, self.OnSelecFd)
+        self.txtThr.Bind(wx.EVT_TEXT, self.OnSelecFd)
 
 
         #----------------------------
 
         # Streams map
-        text6 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "OUTPUT : Streams (required)") 
-        select.Add(item = text6, flag = wx.LEFT | wx.EXPAND, pos = (13,0), span = wx.DefaultSpan)
+        self.text6 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "OUTPUT : Streams (required)") 
+        self.select.Add(item = self.text6, flag = wx.LEFT | wx.EXPAND, pos = (13,0), span = wx.DefaultSpan)
 
         # Box to insert name of new streams map (to be created)
-        txtFou = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY, style = wx.TE_LEFT)
-        select.Add(item = txtFou, flag = wx.LEFT | wx.EXPAND , pos = (14,0), span = wx.DefaultSpan)
+        self.txtFou = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY, style = wx.TE_LEFT)
+        self.select.Add(item = self.txtFou, flag = wx.LEFT | wx.EXPAND , pos = (14,0), span = wx.DefaultSpan)
 
         # binder
-        txtFou.Bind(wx.EVT_TEXT, self.OnSelecStr)
+        self.txtFou.Bind(wx.EVT_TEXT, self.OnSelecStr)
 
         #----------------------------
 
         # Network map
-        text7 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "OUTPUT : Network (required)") 
-        select.Add(item = text7, flag = wx.LEFT | wx.EXPAND, pos = (15,0), span = wx.DefaultSpan)
+        self.text7 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "OUTPUT : Network (required)") 
+        self.select.Add(item = self.text7, flag = wx.LEFT | wx.EXPAND, pos = (15,0), span = wx.DefaultSpan)
 
         # Box to insert name of new streams map (to be created)
-        txtFiv = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY, style = wx.TE_LEFT)
-        select.Add(item = txtFiv, flag = wx.LEFT | wx.EXPAND , pos = (16,0), span = wx.DefaultSpan)
+        self.txtFiv = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY, style = wx.TE_LEFT)
+        self.select.Add(item = self.txtFiv, flag = wx.LEFT | wx.EXPAND , pos = (16,0), span = wx.DefaultSpan)
 
         # binder
-        txtFiv.Bind(wx.EVT_TEXT, self.OnSelecNet)
+        self.txtFiv.Bind(wx.EVT_TEXT, self.OnSelecNet)
 
 
         #----------------------------
  
-        self.panel.SetSizer(select)
+        self.panel.SetSizer(self.select)
+        self.btnPanel = wx.Panel(self)
 
-        btnPanel = wx.Panel(self)
-
         #-------------Buttons-------------
 
-        self.createButtonBar(btnPanel)
-        
-        sizer = wx.BoxSizer(wx.VERTICAL)
-        
-        sizer.Add(self.panel, 1, wx.EXPAND)
-        sizer.Add(btnPanel, 0, wx.EXPAND)
-        self.SetSizer(sizer)
+        self.createButtonBar(self.btnPanel)       
+        self.sizer = wx.BoxSizer(wx.VERTICAL)        
+        self.sizer.Add(self.panel, 1, wx.EXPAND)
+        self.sizer.Add(self.btnPanel, 0, wx.EXPAND)
+        self.SetSizer(self.sizer)
     
         
     #-------------input maps-------------
@@ -229,40 +223,35 @@
         if self.selectedText:
             self.selectedText.Enable(False)
         radioSelected = event.GetEventObject()
-        self.r_acc = self.texts[radioSelected.GetLabel()]
-        self.r_acc.Enable(True)
-        self.SelectedText = self.r_acc
+        self.acc = self.texts[radioSelected.GetLabel()]
+        self.acc.Enable(True)
+        self.SelectedText = self.acc
+        self.r_acc = self.acc.GetValue()
 
-        #select2.Bind(wx.EVT_TEXT, self.OnSelectExistAcc
-        #r_acc = event.GetString()
-        # r.watershed elevation = r_elev accumulation = r_acc -a (MFD)
+        print self.r_acc
 
-        gcmd.RunCommand('r.watershed', elevation = 'r_elev' , accumulation = 'r_acc' , drainage = 'r_new_dir' , convergence = 5 , flags = 'a')
-
     def OnSelectSFDAcc(self, event):
         """!Gets new flow accum map and assign it to var
         """
         if self.selectedText:
             self.selectedText.Enable(False)
         radioSelected = event.GetEventObject()
-        self.r_acc = self.texts[radioSelected.GetLabel()]
-        self.r_acc.Enable(True)
-        self.SelectedText = self.r_acc
+        self.acc = self.texts[radioSelected.GetLabel()]
+        self.acc.Enable(True)
+        self.SelectedText = self.acc
+        self.r_acc = self.acc.GetValue()
 
-        #r_acc = event.GetString()
-        # r.watershed elevation = r_elev accumulation = r_acc -a (SFD, flag = -s)
-
-        gcmd.RunCommand('r.watershed', elevation = 'r_elev' , accumulation = 'r_acc' , drainage = 'r_new_dir' , convergence = 5 , flags = 'sa')
-
     def OnSelectExistAcc(self, event):
         """!Gets existing flow acc map and assign it to var
         """
+        self.textOne.Enable(False)
         if self.selectedText:
             self.selectedText.Enable(False)
         radioSelected = event.GetEventObject()
-        self.r_acc = self.texts[radioSelected.GetLabel()]
-        self.r_acc.Enable(True)
-        self.SelectedText = self.r_acc
+        self.acc = self.texts[radioSelected.GetLabel()]
+        self.acc.Enable(True)
+        self.SelectedText = self.acc
+        self.r_acc = self.acc.GetValue()
 
     def OnSelectMask(self, event):
         """!Gets mask map and assign it to var
@@ -321,7 +310,27 @@
     #-------------Network extraction-------------
     
     def OnRun(self, event):
+
+        radioval1 = self.cb1.GetValue()
+        radioval2 = self.cb2.GetValue()
+        radioval3 = self.cb3.GetValue()
         
+        # MFD
+        if radioval2 == 'True':
+            grass.message('Creating flow accumulation map with MFD algorithm..')
+            grass.run_command('r.watershed', elevation = self.r_elev , accumulation = self.r_acc , convergence = 5 , flags = 'a', overwrite = True )
+
+        # SFD
+        if radioval3 == 'True':
+            grass.message('Creating flow accumulation map with SFD algorithm..')
+            grass.run_command('r.watershed', elevation = self.r_elev , accumulation = self.r_acc , drainage = self.r_drain , convergence = 5 , flags = 'sa', overwrite = True)
+
+        grass.message('Network extraction..')
+        grass.run_command('r.stream.extract', elevation = self.r_elev , accumulation = self.r_acc , threshold = self.thre, 
+                        stream_rast = self.r_stre, stream_vect = self.v_net, direction = self.r_drain, overwrite = True)
+
+        
+        # Debug
         print self.r_elev
         print self.r_acc
         print self.thre
@@ -329,9 +338,3 @@
         print self.v_net
         print self.r_drain
 
-        gcmd.RunCommand('r.stream.extract', elevation = self.r_elev , accumulation = self.r_acc , threshold = self.thre, 
-                        stream_rast = self.r_stre, stream_vect = self.v_net, direction = self.r_drain)
-
-
-
-



More information about the grass-commit mailing list