[GRASS-dev] GSoC Week 5 Report: Graphical User Interface for the hydrological tools r.stream* in GRASS GIS

Hi all,

I am in delay with my project, this is due to the fact that I am used to code in python in procedural way and now I am facing the object oriented, or better, the “event oriented” way. I am studying the Wxpython reference book and I am learning a lot. I am not giving up at all!!

I also need a little help from you devs to solve some issues.

In the Layer Manager I have added “Network Modeling” under Raster → Hydrologic Modeling. This command should raise the GUI of wx.stream. When user has filled every box dialogs, he/she should select a point on Map Display and click a button in wx.stream called “update preview”, in order to see the preview over a small region. If user doesn’t select any point and clicks the button, raises a warning message like “please select a point on the map display”. When the point is selected, ad the parameters are correctly inserted, the wx.preview GUI raises (this should be a second independent module). It shows an image browser and a bigger image display. User can click over an image in the image browser and the image is displayed in the bigger frame. User can change the parameters in wx.stream GUI and then clicking the same button “update preview” a new image is generated in the preview image browser and can be selected to be displayed.

Preview widget, as Hamish suggested, should be as general as possible, so it can be used by all commands instead of just r.stream. Preview widget IMHO should generate png images stored in a temp folder. And here are my issues.

  1. First problem is that input of preview widget are passed by r.stream GUI (as a command line, so actually a string), and by Map Display (as a point, actually a tuple). String can be processed by preview GUI using os.system(cmd), BUT in order to convert the output of the command in a png file and to export it in the temporary folder, it is necessary to know the name of the output map that has to be exported. Output has a name given by user and passed as string (actually parsing a command line is not big deal, but problem is how to recognize output name, because every command has different name for output, it’s not always output = something, but can be acc = something for instance). And also:

  2. How to convert the output of the command in a png file and how to export it in the temporary folder in G7? In grass 6.5 I simply would do:

grass.run_command( ‘d.mon’, start = ‘x0’ )
grass.run_command( ‘d.rast’, map = ‘sc_elev’ )
grass.run_command( ‘d.out.file’, output = os.path.join(fpath, prefix + ‘_elevation’), format = ‘png’, resolution = 2, flags = ‘t’ )

Thanks for any suggestion…

madi


Eng. Margherita Di Leo
Ph.D. Candidate
Methods and Technologies for Environmental Monitoring
Department of Environmental Engineering and Physics (DIFA)

University of Basilicata
Campus Macchia Romana
85100 - Potenza
Italy

Office: +39-0971205360

2011/6/24 Margherita Di Leo <dileomargherita@gmail.com>:

Hi all,

Hi madi

2) How to convert the output of the command in a png file and how to export
it in the temporary folder in G7? In grass 6.5 I simply would do:

grass\.run\_command\( &#39;d\.mon&#39;, start = &#39;x0&#39; \)
grass\.run\_command\( &#39;d\.rast&#39;, map = &#39;sc\_elev&#39; \)
grass\.run\_command\( &#39;d\.out\.file&#39;, output = os\.path\.join\(fpath, prefix \+

'_elevation'), format = 'png', resolution = 2, flags = 't' )

for this you can use d.rast and environment variables, look here [0]

# Define driver settings (here: bash shell syntax)
export GRASS_RENDER_IMMEDIATE=PNG
export GRASS_TRUECOLOR=TRUE

# Display raster map and vector polygons
d.rast sc_elev

Thanks for any suggestion..

madi

[0] http://grass.osgeo.org/grass70/manuals/html70_user/pngdriver.html

--
best
Luca

http://gis.cri.fmach.it/delucchi/
www.lucadelu.org