WxPython-based GUI for GRASS: Difference between revisions

From GRASS-Wiki
Jump to navigation Jump to search
m (fix URLs)
 
(188 intermediate revisions by 10 users not shown)
Line 1: Line 1:
See also [[GRASS GUI]], [[GRASS and Python]] and [[GRASS SoC Ideas 2009‎]].
Browse also wxGUI related [[:Category:WxGUI|articles or screenshots]].


For developer-related issues see [http://trac.osgeo.org/grass/wiki/wxGUIDevelopment Trac wxGUI page].
See also [[GRASS GUI]], and [[GRASS and Python]].
 
For developer-related issues see [http://trac.osgeo.org/grass/wiki/wxGUIDevelopment Trac wxGUI page] and [ GitHub GUI issues].
 
[[Image:GRASS_GIS_70_startup.png|center|400px]]


__TOC__
__TOC__
Line 7: Line 11:
== Overview ==
== Overview ==


* [http://grass.osgeo.org/grass64/manuals/html64_user/wxGUI.html Manual page]
* '''{{cmd|wxGUI}} Manual page]'''
 
Historical development documents:
* A nice summary of the progress to date, written by Jachym Cepicky:
* A nice summary of the progress to date, written by Jachym Cepicky:
** [http://www.les-ejk.cz/english/wxgrass-new-grass-gui-1 Part 1]
** [http://www.les-ejk.cz/english/wxgrass-new-grass-gui-1 Part 1]
Line 14: Line 20:
* [[User:Landa|Martin Landa]], Cristina Moretto, Michele Zanolli, Luca Manganelli and Markus Neteler: [http://gama.fsv.cvut.cz/~landa/publications/2008/gfoss-it-08/paper/grass-gfoss-tn.pdf wxPython-based GUI for GRASS GIS] ([http://gama.fsv.cvut.cz/~landa/publications/2008/gfoss-it-08/prezentazione/perugia-grass-gui-wxpython.pdf presentation]) ([http://www.grassmeeting2008.unipg.it IX Meeting degli Utenti Italiani di GRASS - GFOSS], February 20-22, Perugia, Italy)
* [[User:Landa|Martin Landa]], Cristina Moretto, Michele Zanolli, Luca Manganelli and Markus Neteler: [http://gama.fsv.cvut.cz/~landa/publications/2008/gfoss-it-08/paper/grass-gfoss-tn.pdf wxPython-based GUI for GRASS GIS] ([http://gama.fsv.cvut.cz/~landa/publications/2008/gfoss-it-08/prezentazione/perugia-grass-gui-wxpython.pdf presentation]) ([http://www.grassmeeting2008.unipg.it IX Meeting degli Utenti Italiani di GRASS - GFOSS], February 20-22, Perugia, Italy)


=== Requirements ===
Contributing:
* https://github.com/OSGeo/grass/blob/master/CONTRIBUTING.md
* [http://svn.osgeo.org/grass/grass/trunk/gui/wxpython/README README]


=== Development ===
=== Development ===
Line 26: Line 31:
* GRASS user (or better developer) experience  
* GRASS user (or better developer) experience  


How to get [http://trac.osgeo.org/grass/wiki/HowToContribute write access] to the GRASS SVN repository.
How to get [http://trac.osgeo.org/grass/wiki/HowToContribute write access] to the GRASS GIS code repository.
 
See example of wxGUI module in core: {{src|doc/gui/wxpython/example/}}


== Screenshots ==
== Screenshots ==


* [http://svn.osgeo.org/grass/grass-addons/screenshots/wxpython SVN]
* See [[WxGUI Screenshots|Screenshots]] page
* [http://grass.osgeo.org/screenshots/gui.php Website screenshot page]
* [[:Category:WxGUI|Screenshots from GRASSWiki]]
* [https://svn.osgeo.org/grass/grass-addons/screenshots/wxpython SVN]
* [https://grass.osgeo.org/screenshots/user-interface Website screenshot page]
* Various screenshots from [[:Category:WxGUI|GRASS-Wiki]]
* Various screenshots from [[:Category:WxGUI|GRASS-Wiki]]


=== GNU/Linux ===
== Video tutorials ==


<center>
* See [[wxGUI/Video tutorials|Video tutorials]] page
{|
|
[[Image:Wxgui-startup-gnulinux.png|300px|thumb|Start-up screen]]
||
[[Image:Wxgui-vdigit1-gnulinux.png|300px|thumb|Vector digitizer]]
|-
|
[[Image:Wxgui-atm0-gnulinux.png|300px|thumb|Attribute Table Manager]]
||
[[Image:Wxgui-vector-querying-gnulinux.png|300px|thumb|Querying vector map layers (attribute data)]]
|}
</center>


=== Mac OS ===
== Components ==


=== MS Windows ===
=== Core components ===


<center>
==== Layer Manager ====
{|
|
[[Image:Wxgui-startup-windows1.png|300px|thumb|Start-up screen]]
||
[[Image:Wxgui-d-vect-windows.png|300px|thumb|GUI dialog d.vect]]
|-
|
[[Image:Wxgui-atm-windows.png|300px|thumb|Attribute Table Manager]]
||
[[Image:Wxgui-r-buffer-windows.png|300px|thumb|Running command (r.buffer)]]
|-
|
[[Image:Wxgui-vector-querying-windows.png|300px|thumb|Querying vector map layer (editable mode)]]
||
&nbsp;
|}
</center>


== HowTo ==
'''Status:''' prototype implemented.


=== Import vector data ===
The '''GRASS GIS Layer Manager''' provides an interactive graphical interface to GRASS commands. The Layer Manager includes a set of pull-down menus for all GRASS GIS functions (analysis, file I/O, GIS configuration and management), toolbar that manage display map layers in map display windows, layer tree in which map layers to display are organized, command output window and integrated command line prompt.


* [[Import DXF]]
<center>
* [http://gama.fsv.cvut.cz/~landa/grass/swf/import-shp-file.html Importing single shapefile]
<gallery perrow=2 widths=300 heights=200>
* [http://gama.fsv.cvut.cz/~landa/grass/swf/import-shp-dir.html Importing multiple shapefiles]
Image:wxgrass-gis-manager-layer.png|2007/12
* [http://gama.fsv.cvut.cz/~landa/grass/swf/import-spatialite.html Importing SpatiaLite layers]
Image:wxgrass-gis-manager-output.png|2007/12
* [http://gama.fsv.cvut.cz/~landa/grass/swf/import-postgis.html Importing PostGIS layers]
Image:Wxgrass rgb.png|2008/02
Image:wxgui-layer-manager-70.png|2010/08
Image:wxgui-pyshell.png|2011/06 - Embedded interactive Python Shell
</gallery>
</center>


=== Georectifier ===
==== Import tool ====


* [http://gama.fsv.cvut.cz/~landa/grass/swf/georect.html Georectifing raster data]
The GUI offers a convenient tool for single map and bulk import:  


=== Graphical modeler ===
* see [[Importing data]]


Note: GRASS 6.5+ required.
==== Map display window ====


* [http://gama.fsv.cvut.cz/~landa/grass/swf/wxgui-modeler-0.html Creating simple model]
Each '''Map display window''' has a unique set of layers to display and region setting (zoom). The map display window includes main toolbar with basic tools including zooming, panning, data querying, simple analyse functions (measure, profile, histogram, etc.), overlay management, etc. From main toolbar are accessible additional toolbars, currently only Digitization tool is available. Under development is Georectification tool.
* [http://gama.fsv.cvut.cz/~landa/grass/swf/wxgui-modeler-1.html Define intermediate data]


=== Layer Manager ===
<center>
<gallery perrow=2 widths=300 heights=200>
Image:Wxgrass-mapdisplay-0.png
Image:Wxgui-mapdisplay-1.png
</gallery>
</center>


Note: GRASS 6.5+ required.
==== Map query tool ====


* [http://gama.fsv.cvut.cz/~landa/grass/swf/wxgui-search-module.html Searching GRASS module]
Raster and vector maps can be queried at cursor position:


== Components ==
[[Image:Wxgui map query tool.png|center|thumb|500px|Raster and vector map query (select map to query in layer manager)]]


=== Layer Manager ===
==== Map measure tool ====


'''Status:''' prototype implemented.
Raster and vector maps can be measured with a digitizer (line or self-closing area).


The '''GRASS GIS Layer Manager''' provides an interactive graphical interface to GRASS commands. The Layer Manager includes a set of pull-down menus for all GRASS GIS functions (analysis, file I/O, GIS configuration and management), toolbar that manage display map layers in map display windows, layer tree in which map layers to display are organized, command output window and integrated command line prompt.
Note for LatLong locations: The lengths/areas are returned also in metric units.


<div align="center">
[[Image:Wxgui map measure tool.png|center|thumb|500px|Measurements of line length and area size (latitude-longitude location example with SRTM]]
{|
|[[Image:wxgrass-gis-manager-layer.png|350px]] || [[Image:wxgrass-gis-manager-output.png|350px]]
|}
</div>
 
<div align="center">
[[Image:Wxgrass rgb.png|350px]]
</div>
 
=== Map display window ===
 
'''Status:''' prototype implemented.
 
Each '''Map display window''' has a unique set of layers to display and region setting (zoom). The map display window includes main toolbar with basic tools including zooming, panning, data querying, simple analyse functions (measure, profile, histogram, etc.), overlay management, etc. From main toolbar are accessible additional toolbars, currently only Digitization tool is available. Under development is Georectification tool.
 
<center>
{|
|-
| [[Image:Wxgrass-mapdisplay-0.png|thumb|350px|center]] ||
[[Image:Wxgui-mapdisplay-1.png|thumb|350px|center]]
|-
|}
</center>


=== Module GUIs ===
==== GUI dialogs ====


'''Status:''' prototype implemented.
'''Status:''' prototype implemented.
Line 163: Line 128:


becomes with <tt>d.rgb --interface-description</tt>
becomes with <tt>d.rgb --interface-description</tt>
<source lang="xml">
   <?xml version="1.0" encoding="UTF-8"?>
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE task SYSTEM "[http://trac.osgeo.org/grass/browser/grass/trunk/gui/xml/grass-interface.dtd grass-interface.dtd]">
   <!DOCTYPE task SYSTEM "[http://trac.osgeo.org/grass/browser/grass/trunk/gui/xml/grass-interface.dtd grass-interface.dtd]">
Line 220: Line 187:
         </flag>
         </flag>
   </task>
   </task>
 
</source>


which is then used to generate:
which is then used to generate:
Line 226: Line 193:
[[Image:wxgrass-d-rgb.png|center|600px]]
[[Image:wxgrass-d-rgb.png|center|600px]]


=== Startup GUI ===
==== Startup GUI (welcome screen) ====


'''Status:''' prototype implemented.
<!-- historical
'''Status:''' implemented.


Start new GRASS session with
Start new GRASS session with


  grass -wxpython
  grass64 -gui


[[Image:Wxgrass-startup.png|center|400px]]
[[Image:Wxgrass-startup.png|center|400px]]


=== Location wizard ===
-->
 
grass78 -gui
 
[[Image:GRASS_GIS_70_startup.png|center|400px]]
 
==== Location wizard ====


'''Status:''' prototype implemented.
'''Status:''' prototype implemented.
Line 252: Line 226:
[[Image:Wxgui-location-wizard.png|center|thumb|600px|Location wizard]]
[[Image:Wxgui-location-wizard.png|center|thumb|600px|Location wizard]]


=== Cartography tools ===
=== Digitizer ===
 
==== Vector digitizer ====
 
'''Status:''' prototype implemented.
 
See also {{cmd|wxGUI.Vector_Digitizer|desc=manual page}}
 
See also [[GRASS Digitizing tool]] and [[wxGUI Vector Digitizer]].
 
Replacement of <tt>v.digit</tt> module integrated into Map display window ([http://svn.osgeo.org/grass/grass-promo/screenshots/wxpython/digitization Screenshots]).
 
<center>
 
<gallery perrow=2 widths=300 heights=200>
Image:WxDigit200804.png|Vector digitizer (2008/04)
Image:Digit-01.png|Vector digitizer (2007/11)
Image:WxGUI-vdigit-fill-area.png|Vector digitizer - fill valid areas (closed boundary + centroid) (2008/07)
Image:WxGUI-vdigit-bg.png|Vector digitizer - background raster maps with different opacity level (2008/07)
Image:WxGUI-vdigit-win0.png|Vector digitizer on MS Windows (2011/01)
Image:Wxgui-vdigit-dupl.png|Vector digitizer - checking for duplicates (2011/02)
</gallery>


'''Status:''' development not started yet.
</center>


==== GUI for ps.map ====
==== Raster digitizer ====


* [http://grass.osgeo.org/grass63/manuals/html63_user/ps.map.html ps.map] is a cartographic composer, intended to be a stand-alone hardcopy plot generator. It is not meant to be a '''Print''' button for the maps currently displayed in the map canvas, that will need it own controls.
'''Status:''' development started in GRASS 7 (2014) --> implemented in 2020


* The GUI will prepare a semi-WYSIWYG + tree menu controls which can write a ps.map control file, and then run ps.map to create PostScript and PDF output directly. Loading a ps.map control file is harder and can happen later.
* {{cmd|r.digit}} (merge with {{cmd|v.digit}}?)
: Probably write a front end for {{cmd|r.in.poly}}, that's all the old {{cmd|r.digit}} is.
* {{cmd|d.rast.edit}}
: Idea: get cell center coords and new values from GUI interaction, then pass those through {{cmd|r.in.xyz}}, and {{cmd|r.patch}} the new values over the top of the old map.
: Current status:


* For a start at a Tcl/Tk composer see gui/tcltk/d.m/print.tcl
[[Image:D_rast_edit_grass7.png|center|thumb|500px|Raster map editor in GRASS 7]]
: see also these discussions and pyGTK prototype by Jachym Cepicky
:* http://thread.gmane.org/gmane.comp.gis.grass.devel/12469
:* http://thread.gmane.org/gmane.comp.gis.grass.devel/19368


* Start with most important mapping instructions
* merge with Georectifier? (i.points, i.vpoints)
** paper
** scale
** maploc
** rast
** vects
** grids
** scalebar
** mapinfo
** text labels


===== Intelligent label placement in ps.map =====
===== Category Labels =====


* use PAL/JPAL [http://geosysin.iict.ch/PAL cartographic labelling library] (GPL, C++ language, JNI wrapper)
* Write with new {{cmd|r.category}} import tool
** ''Back-end component complete: {{cmd|r.category}} module is now updated to handle a rules= file and other goodies like dynamic labels''


===== Outputs =====
* Read with one of {{cmd|r.category}}, {{cmd|r.describe}}, {{cmd|r.report}}, {{cmd|r.stats}}, ???
** probably need to add a new flag to one of those to print flat <tt>"%d %s", cat, label</tt>
: or read the cats/ file directly, it's already flat ascii.
* how to deal with FP maps & cats?


* ps.map instructions file
=== Command line ===
* PostScript file [ps.map instructions tmp file]
* lpr [PostScript tmp file]
* PDF File (pstopdf? ps2pdf? GNU Ghostscript?) [PostScript tmp file]


===== Inputs =====
In order to provide a command line in all operating systems, there is a tab "Command console" available (with auto-completion support). It communicates directly with the Map Display window:


* Ability to load in saved ps.map scripts. I consider this to be a low priority, deal with it after map creation is fully functional. Start with scripts saved using the GUI, after that is working expand to load any ps.map instructions file.
[[Image:Wxgui command line.png|350px|center|Command line]]


===== Prototype g-ps.map =====
=== Cartography tools ===
* [http://les-ejk.cz/files/programs/grass/gpsmap-0.1.2.tgz gpsmap-0.1.2.tgz]
 
* [http://les-ejk.cz/tmp/gpsmap.png g-ps.map Screenshot]
==== GUI for {{Cmd|ps.map}} ====
* [http://www.nabble.com/status-of-g-ps.map-tf4465835.html#a12733414 Jachym's posting]
 
'''Status:''' under development (Anna Kratochvilova).
 
Note: More info at '''[[WxGUI Cartographic Composer]]'''
 
<center>
{|
|-
| [[Image:CartographicComposer.png|350px|thumb|Cartographic Composer: draft mode]]
| [[Image:CCPreview.png|350px|thumb|Cartographic Composer: preview]]
|-
|}
</center>


==== Direct printing ====
==== Direct printing ====
'''Status:''' development not started yet.


Implement direct printing of map canvas content using GRASS PS driver or Cairo driver.
Implement direct printing of map canvas content using GRASS PS driver or Cairo driver.
Line 324: Line 327:
{|
{|
|-
|-
| [[Image:Wxgui-georectify-0.png|thumb|350px|center]] ||
| [[Image:Wxgui-georectify-0.png|thumb|350px|center|Georectifier (old interface)]] ||
[[Image:Wxgui-georectify-1.png|thumb|350px|center]]
[[Image:Wxgui-georectify-1.png|thumb|350px|center|Georectifier (old interface)]]
|-
|-
|}
|}
</center>
</center>


See also [[Georeferencing]].
[[Image:Georectifier berlin.png|thumb|Georectification of historical maps using a simplified OpenStreetmap reference (example Berlin) - new interface|450px|center]]


; Tutorials


* [http://gama.fsv.cvut.cz/~landa/grass/swf/georect.html Georectifing raster data]
See also [[Georeferencing]].


=== Profile Analysis Tool ===
=== Profile Analysis Tool ===
Line 349: Line 351:
</center>
</center>


=== Vector digitizer ===
=== Attribute table manager ===


'''Status:''' prototype implemented.
'''Status:''' prototype implemented.


[http://grass.osgeo.org/grass64/manuals/html64_user/wxGUI.Vector_Digitizing_Tool.html Manual page].
See [[wxGUI Attribute Table Manager]] page and also {{cmd|wxGUI.Attribute_Table_Manager|desc=manual page}}.


See also [[GRASS Digitizing tool]].
[[Image:Grass-atm-example.png|center|thumb|640px|Attribute queries in wxGUI]]


Replacement of <tt>v.digit</tt> module integrated to Map display window ([http://svn.osgeo.org/grass/grass-addons/screenshots/wxpython/digitization Screenshots]).
=== 3D view mode ===


<center>
'''Status:''' prototype implemented (Google Summer of Code 2008/2010/2011).


{|
See detailed information at [[wxNVIZ]] page and classic Tcl/Tk [[NVIZ]] pages.
|-
| [[Image:WxDigit200804.png|thumb|300px|center|Vector digitizer (2008/04)]] ||
[[Image:Digit-01.png|thumb|300px|center|Vector digitizer (2007/11)]]
|-
| [[Image:WxGUI-vdigit-fill-area.png|thumb|300px|center|Vector digitizer - fill valid areas (closed boundary + centroid) (2008/07)]] ||
[[Image:WxGUI-vdigit-bg.png|thumb|300px|center|Vector digitizer - background raster maps with different opacity level (2008/07)]]
|-
|}
</center>


=== Raster digitizer ===
[[Image:Wxnviz-volumes.png|640px|thumb|center|Displaying raster (surface), 2D vector and 3D raster (volume) in the 3D space.]]


'''Status:''' development not started yet.
=== Imagery tools ===


* r.digit (merge with v.digit?)
'''Status:''' (re)development not started in earnest yet. Some behind-the-scenes code has been prepared, but not much.
: Probably write a front end for [http://grass.osgeo.org/grass63/manuals/html63_user/r.in.poly.html r.in.poly], that's all the old r.digit is.
: ''Volunteers welcome!''
* d.rast.edit
: Idea: get cell center coords and new values from GUI interaction, then pass those through r.in.xyz, and r.patch the new values over the top of the old map.


* merge with Georectifier? (i.points, i.vpoints)
==== Ortho photos ====


===== Category Labels =====
'''Status:''' GUI development not started yet, initial start of module updates like {{cmd|i.ortho.rectify|version=70}}


* Write with new r.category import tool
* To replace {{cmd|i.ortho.photo}} and friends
** ''Back-end component complete: r.category module is now updated to handle a rules= file and other goodies like dynamic labels''


* Read with one of r.category, r.describe, r.report, r.stats, ???
==== wx.iclass ====
** probably need to add a new flag to one of those to print flat <tt>"%d %s", cat, label</tt>
: or read the cats/ file directly, it's already flat ascii.
* how to deal with FP maps & cats?


=== Ortho photos ===
'''Status:''' prototype implemented.
<!--
===== First prototype (AddOns) =====


'''Status:''' development not started yet.
* [http://trac.osgeo.org/grass/browser/grass-addons/gui/wxpython/wx.class wx.class]


* To replace i.ortho.photo and friends
<center>
{|
|-
| [[Image:wx.class1.png|350px|thumb|center|wx.class]]
| [[Image:wx.class2.png|350px|thumb|center|wx.class]]
| [[Image:wx.class3.png|350px|thumb|center|wx.class]]
|-
|}
</center>


=== Attribute table manager ===
Current Features:


;'''Status:''' prototype implemented.
* Does not require xterm
* works on windows which is not currently available


[http://grass.osgeo.org/grass64/manuals/html64_user/wxGUI.Attribute_Table_Manager.html Manual page].
To be implemented:


[[Image:Wxgui-attribute-table-manager.png|center|thumb|350px|Attribute Table Manager]]
* Proper view of histogram using python-matplotlib
* To work on other datset (currently works for nc_spm_08)
* Needs a code cleanup


;Allows:
===== Second prototype (trunk) =====
-->


* To browse attribute data, perform SQL select statements
* See [[wxIClass]] page
* Modify attribute data, insert new records to attribute table, delete existing records
* Highlight selected items in Map Display Window
* Extract selected items into new vector map layer
* Modify attribute table - add, drop, rename columns
* Modify vector map layer DB connestion settings - add, remove or modify layers


=== NVIZ replacement ===
=== Graphical Modeller ===


'''Status:''' under development.
'''Status:''' prototype implemented.


Detailed information [[wxNVIZ]].
[[File:WxGUI-modeler-if-else-0.png|500px|center]]


=== Imagery tools ===
See [[wxGUI Graphical Modeler]] page for more information.


'''Status:''' (re)development not started in earnest yet. Some behind-the-scenes code has been prepared, but not much.
=== Extension Manager ===
: ''Volunteers welcome!''


=== Graphical Modeller ===
'''Status:''' prototype implemented


'''Status:''' under development.
Settings | Addons extensions | Install extension from addons


See [[wxGUI Modeler]] page for more information.
{{YouTube|buxsHVHLDBI|desc=wxGUI Extension Manager}}


=== Extension Manager ===
[[Image:wxgui-em.png|center|thumb|500px|wxGUI Extension Manager]]


'''Status:''' under development
=== Raster Calculator ===


* [http://gama.fsv.cvut.cz/~landa/grass/swf/install-addons.html wxGUI Extension Manager]
'''Status:''' prototype implemented. This is a frontend to {{cmd|r.mapcalc|version=70}}


[[Image:wxgui-em.png|center|thumb|640px|wxGUI Extension Manager]]
[[Image:wxgui-mapcalc.png|center|thumb|500px|wxGUI Map Calculator]]
 
=== Map Calculator ===
 
'''Status:''' prototype implemented


[[Image:wxgui-mapcalc.png|center|thumb|640px|wxGUI Map Calculator]]
See also [[wxGUI/Video tutorials#Raster calculator|video tutorials]].


=== Data Catalog ===
=== GRASS Catalog ===


;'''Status:''' Under development.
'''Status:''' under development (in AddOns)


* [http://trac.osgeo.org/grass/browser/grass-addons/gui/wxpython/data_catalog Data Catalog]
* [http://lsi.iiit.ac.in/grass_addons/ GRASS Catalog files]


<center>
<center>
{|
{|
|-
|-
| [[Image:Catalog.png|350px|thumb|center|Data Catalog ]]
| [[Image:GRASS Catalog1.png|350px|thumb|center|GRASS Catalog ]]
| [[Image:Aspect.png|350px|thumb|center|Data Catalog]]
| [[Image:GRASS Catalog2.png|350px|thumb|center|GRASS Catalog]]
|-
|-
|}
|}
</center>
</center>


;Current Features:
;Current Features:
Line 469: Line 458:
* view raster & vector map layers from any location and any mapset.
* view raster & vector map layers from any location and any mapset.
* Provides a GUI wrapper for r.info & v.info grass commands while viewing map layers in mapwindow.
* Provides a GUI wrapper for r.info & v.info grass commands while viewing map layers in mapwindow.
* Can connect with OssimPlanet using PlanetSasha
* Add and Remove maps from GRASS GIS to OssimPlanet(Send to OssimPlanet/Remove from OssimPlanet)
   
   
;To be implemented:
;To be implemented:


Line 477: Line 467:
* Copy, delete, rename DBF files.
* Copy, delete, rename DBF files.
* Modify attribute tables.
* Modify attribute tables.
* Viewing other formats.
* Create a properties window to display Coordinate system & projection for each map
* ...
* ...
Alternative: http://code.google.com/p/wxgis/
=== r.li.setup GUI ===
'''Status:''' available as {{cmd|g.gui.rlisetup|version=70}} (former {{cmd|r.li.setup}})
<center>
<gallery perrow=2 widths=300 heights=200>
Image:Rlisetup_first_frame.png | First frame of wizard for selecting existing configuration files or creating a new one
Image:Rlisetup wizard first page.png | Frame for selecting maps
Image:G_gui_rlisetup_3.png | Frame for inserting sampling areas
Image:G_gui_rlisetup_4.png | Frame for defining rectangular moving window
Image:G_gui_rlisetup_5.png | Frame for defining circular moving window
Image:Rlisetup wizard keybord sampling frame.png | Frame for choosing the sampling frame with keyboard
Image:G gui rlisetup 7.png | Frame for drawing the sampling frame
Image:G gui rlisetup 8.png | Summary frame
</gallery>
<!-- equal to Image:Rlisetup_first_frame.png?
Image:Rlisetup_wizard_sampling_areas.png ‎| Choose the type of sampling area
-->
</center>


=== Help browser ===
=== Help browser ===
Line 486: Line 498:
For browsing manual pages is currently used web browser, the goal is to design integrated help system.
For browsing manual pages is currently used web browser, the goal is to design integrated help system.
: HB: ''We used to have one of these for viewing the help pages of Tcl/Tk NVIZ. We dropped it because it was a pain to maintain and generally outside our core mission so a distraction.''
: HB: ''We used to have one of these for viewing the help pages of Tcl/Tk NVIZ. We dropped it because it was a pain to maintain and generally outside our core mission so a distraction.''
=== Map Swipe ===
'''Status:''' prototype implemented.
This tool enables you to compare two raster maps covering the same area (e.g. compare maps from different year).
;Current features:
* orientation of swipe line can be horizontal or vertical
* zooming works in the same way as in [[#Map_display_window | Map Display]]
See more '''examples''' and videos at [[WxGUI Map Swipe]] page.
[[Image:Tsunami japan2011 sendai.jpg|center|thumb|500px|wxGUI Map Swipe for disaster management: Tsunami Japan 2011]]
=== Animation Tool ===
'''Status:''' prototype implemented in GRASS 7 (Anna Kratochvilova).
Animation tool is a replacement for {{cmd|xganim}}. It allows to animate a series of GRASS raster maps or a space time raster dataset ([http://trac.osgeo.org/grass/wiki/Grass7/TemporalExtension see GRASS GIS temporal extension]).
[[Image:WxGUI animation tool.jpg|center|500px|wxGUI animation tool]]
<center>More info at '''[[WxGUI Animation Tool]]'''.</center>
=== Vector Network Analysis Tool ===
'''Status:''' prototype implemented.
See more examples and video at [[WxGUI Vector Network Analysis Tool]] page.
== WMS support ==
{{YouTube|vfNw4SAP2Uc}}


== Known issues ==
== Known issues ==


* See and report in trac: [http://trac.osgeo.org/grass/query?status=new&status=assigned&status=reopened&component=wxGUI&order=priority List of open issues]
* See and report in trac: [http://trac.osgeo.org/grass/query?status=new&status=assigned&status=reopened&component=wxGUI&order=priority List of open issues]
* Warning "widget class `GtkPizza' has no property named `row-ending-details'", http://trac.osgeo.org/grass/ticket/204


=== Platform specific ===
=== Platform specific ===
Line 561: Line 605:
| ?
| ?
| ?
| ?
|-
| 64bit MS Windows 7
| win32
| nt
| Windows_NT
| Windows
|-
|}
|}


Line 603: Line 654:
* Idrisi: similar to SAGA and Ossim (http://www.clarklabs.org/products/idrisi-taiga.cfm)
* Idrisi: similar to SAGA and Ossim (http://www.clarklabs.org/products/idrisi-taiga.cfm)
* MapInfo (Pitney Bowes): Seems to be like Saga (http://www.pbinsight.com/support/training/video-tutorials/)
* MapInfo (Pitney Bowes): Seems to be like Saga (http://www.pbinsight.com/support/training/video-tutorials/)
* Whitebox Geospatial Analysis Tools: http://www.uoguelph.ca/~hydrogeo/Whitebox/screenshots.html


'''''See also'''''
'''''See also'''''
Line 612: Line 664:
== Useful links ==
== Useful links ==


* [http://www.poromenos.org/tutorials/python 10 minutes Python tutorial] for programmers of other languages
* [http://www.poromenos.org/tutorials/python 10 minute Python tutorial] for programmers of other languages


== References ==
== References ==
Line 619: Line 671:
* [[User:Landa|Martin Landa]], Cristina Moretto, Michele Zanolli, Luca Manganelli and Markus Neteler: [http://gama.fsv.cvut.cz/~landa/publications/2008/gfoss-it-08/paper/grass-gfoss-tn.pdf wxPython-based GUI for GRASS GIS] ([http://gama.fsv.cvut.cz/~landa/publications/2008/gfoss-it-08/prezentazione/perugia-grass-gui-wxpython.pdf presentation]) ([http://www.grassmeeting2008.unipg.it IX Meeting degli Utenti Italiani di GRASS - GFOSS], February 20-22, Perugia, Italy)
* [[User:Landa|Martin Landa]], Cristina Moretto, Michele Zanolli, Luca Manganelli and Markus Neteler: [http://gama.fsv.cvut.cz/~landa/publications/2008/gfoss-it-08/paper/grass-gfoss-tn.pdf wxPython-based GUI for GRASS GIS] ([http://gama.fsv.cvut.cz/~landa/publications/2008/gfoss-it-08/prezentazione/perugia-grass-gui-wxpython.pdf presentation]) ([http://www.grassmeeting2008.unipg.it IX Meeting degli Utenti Italiani di GRASS - GFOSS], February 20-22, Perugia, Italy)


[[Category:Development]]
{{wxGUI}}
[[Category:GUI]]
 
[[Category:Python]]
[[Category: Documentation]]

Latest revision as of 19:03, 14 April 2021

Browse also wxGUI related articles or screenshots.

See also GRASS GUI, and GRASS and Python.

For developer-related issues see Trac wxGUI page and [ GitHub GUI issues].

Overview

Historical development documents:

Contributing:

Development

Do you want to help with the development?

  • basic Python programming ability required
  • GUI programming experience welcomed (especially wxPython)
  • GRASS user (or better developer) experience

How to get write access to the GRASS GIS code repository.

See example of wxGUI module in core: doc/gui/wxpython/example/

Screenshots

Video tutorials

Components

Core components

Layer Manager

Status: prototype implemented.

The GRASS GIS Layer Manager provides an interactive graphical interface to GRASS commands. The Layer Manager includes a set of pull-down menus for all GRASS GIS functions (analysis, file I/O, GIS configuration and management), toolbar that manage display map layers in map display windows, layer tree in which map layers to display are organized, command output window and integrated command line prompt.

Import tool

The GUI offers a convenient tool for single map and bulk import:

Map display window

Each Map display window has a unique set of layers to display and region setting (zoom). The map display window includes main toolbar with basic tools including zooming, panning, data querying, simple analyse functions (measure, profile, histogram, etc.), overlay management, etc. From main toolbar are accessible additional toolbars, currently only Digitization tool is available. Under development is Georectification tool.

Map query tool

Raster and vector maps can be queried at cursor position:

Raster and vector map query (select map to query in layer manager)

Map measure tool

Raster and vector maps can be measured with a digitizer (line or self-closing area).

Note for LatLong locations: The lengths/areas are returned also in metric units.

Measurements of line length and area size (latitude-longitude location example with SRTM

GUI dialogs

Status: prototype implemented.

Generated from XML using --interface-description.

E.g. d.rgb --help

Description:
 Displays three user-specified raster map layers as red, green, and blue overlays in the active graphics frame.

Keywords:
 display

Usage:
 d.rgb [-ox] red=name green=name blue=name [--verbose] [--quiet]

Flags:
  -o   Overlay (non-null values only)
  -x   Don't add to list of commands in monitor
 --v   Verbose module output
 --q   Quiet module output

Parameters:
    red   Name of raster map to be used for <red>
  green   Name of raster map to be used for <green>
   blue   Name of raster map to be used for <blue>

becomes with d.rgb --interface-description

  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE task SYSTEM "[http://trac.osgeo.org/grass/browser/grass/trunk/gui/xml/grass-interface.dtd grass-interface.dtd]">
  <task name="d.rgb">
        <description>
                Displays three user-specified raster map layers as red, green, and blue overlays in the active graphics frame.
        </description>
        <keywords>
                display
        </keywords>
        <parameter name="red" type="string" required="yes" multiple="no">
                <description>
                        Name of raster map to be used for &lt;red&gt;
                </description>
                <keydesc>
                        <item order="1">name</item>
                </keydesc>
                <gisprompt age="old" element="cell" prompt="raster" />
        </parameter>
        <parameter name="green" type="string" required="yes" multiple="no">
                <description>
                        Name of raster map to be used for &lt;green&gt;
                </description>
                <keydesc>
                        <item order="1">name</item>
                </keydesc>
                <gisprompt age="old" element="cell" prompt="raster" />
        </parameter>
        <parameter name="blue" type="string" required="yes" multiple="no">
                <description>
                        Name of raster map to be used for &lt;blue&gt;
                </description>
                <keydesc>
                        <item order="1">name</item>
                </keydesc>
                <gisprompt age="old" element="cell" prompt="raster" />
        </parameter>
        <flag name="o">
                <description>
                        Overlay (non-null values only)
                </description>
        </flag>
        <flag name="x">
                <description>
                        Don't add to list of commands in monitor
                </description>
        </flag>
        <flag name="verbose">
                <description>
                        Verbose module output
                </description>
        </flag>
        <flag name="quiet">
                <description>
                        Quiet module output
                </description>
        </flag>
  </task>

which is then used to generate:

Startup GUI (welcome screen)

grass78 -gui

Location wizard

Status: prototype implemented.

Wizard for creating new GRASS project location based on:

  • Coordinate system
  • EPSG code
  • Georeferenced file
  • PROJ.4 string
  • XY

See also GRASS Location Wizard.

Location wizard

Digitizer

Vector digitizer

Status: prototype implemented.

See also manual page

See also GRASS Digitizing tool and wxGUI Vector Digitizer.

Replacement of v.digit module integrated into Map display window (Screenshots).

Raster digitizer

Status: development started in GRASS 7 (2014) --> implemented in 2020

Probably write a front end for r.in.poly, that's all the old r.digit is.
Idea: get cell center coords and new values from GUI interaction, then pass those through r.in.xyz, and r.patch the new values over the top of the old map.
Current status:
Raster map editor in GRASS 7
  • merge with Georectifier? (i.points, i.vpoints)
Category Labels
  • Write with new r.category import tool
    • Back-end component complete: r.category module is now updated to handle a rules= file and other goodies like dynamic labels
or read the cats/ file directly, it's already flat ascii.
  • how to deal with FP maps & cats?

Command line

In order to provide a command line in all operating systems, there is a tab "Command console" available (with auto-completion support). It communicates directly with the Map Display window:

Command line
Command line

Cartography tools

GUI for ps.map

Status: under development (Anna Kratochvilova).

Note: More info at WxGUI Cartographic Composer

Cartographic Composer: draft mode
Cartographic Composer: preview

Direct printing

Status: development not started yet.

Implement direct printing of map canvas content using GRASS PS driver or Cairo driver.

Georectifier

Status: prototype implemented.

Georectifier (old interface)
Georectifier (old interface)
Georectification of historical maps using a simplified OpenStreetmap reference (example Berlin) - new interface


See also Georeferencing.

Profile Analysis Tool

Status: prototype implemented.

Attribute table manager

Status: prototype implemented.

See wxGUI Attribute Table Manager page and also manual page.

Attribute queries in wxGUI

3D view mode

Status: prototype implemented (Google Summer of Code 2008/2010/2011).

See detailed information at wxNVIZ page and classic Tcl/Tk NVIZ pages.

Displaying raster (surface), 2D vector and 3D raster (volume) in the 3D space.

Imagery tools

Status: (re)development not started in earnest yet. Some behind-the-scenes code has been prepared, but not much.

Volunteers welcome!

Ortho photos

Status: GUI development not started yet, initial start of module updates like i.ortho.rectify

wx.iclass

Status: prototype implemented.

Graphical Modeller

Status: prototype implemented.

See wxGUI Graphical Modeler page for more information.

Extension Manager

Status: prototype implemented

Settings | Addons extensions | Install extension from addons


wxGUI Extension Manager
wxGUI Extension Manager

Raster Calculator

Status: prototype implemented. This is a frontend to r.mapcalc

wxGUI Map Calculator

See also video tutorials.

GRASS Catalog

Status: under development (in AddOns)

GRASS Catalog
GRASS Catalog
Current Features
  • copy, delete, rename map layers (raster & vector) in current mapset.
  • view raster & vector map layers from any location and any mapset.
  • Provides a GUI wrapper for r.info & v.info grass commands while viewing map layers in mapwindow.
  • Can connect with OssimPlanet using PlanetSasha
  • Add and Remove maps from GRASS GIS to OssimPlanet(Send to OssimPlanet/Remove from OssimPlanet)
To be implemented
  • copy, move map layers in different mapsets.
  • View DBF files as tables.
  • Copy, delete, rename DBF files.
  • Modify attribute tables.
  • Create a properties window to display Coordinate system & projection for each map
  • ...

Alternative: http://code.google.com/p/wxgis/

r.li.setup GUI

Status: available as g.gui.rlisetup (former r.li.setup)

Help browser

Status: development not started yet.

For browsing manual pages is currently used web browser, the goal is to design integrated help system.

HB: We used to have one of these for viewing the help pages of Tcl/Tk NVIZ. We dropped it because it was a pain to maintain and generally outside our core mission so a distraction.

Map Swipe

Status: prototype implemented.

This tool enables you to compare two raster maps covering the same area (e.g. compare maps from different year).

Current features
  • orientation of swipe line can be horizontal or vertical
  • zooming works in the same way as in Map Display

See more examples and videos at WxGUI Map Swipe page.

wxGUI Map Swipe for disaster management: Tsunami Japan 2011

Animation Tool

Status: prototype implemented in GRASS 7 (Anna Kratochvilova).

Animation tool is a replacement for xganim. It allows to animate a series of GRASS raster maps or a space time raster dataset (see GRASS GIS temporal extension).

wxGUI animation tool
wxGUI animation tool
More info at WxGUI Animation Tool.

Vector Network Analysis Tool

Status: prototype implemented.

See more examples and video at WxGUI Vector Network Analysis Tool page.

WMS support

Known issues

Platform specific

For the GUI to know what platform it's on, and therefore apply platform specific commands (e.g. append '.exe' to programs) it has to test what platform it is running on. Here we take the experimental approach to learning what's best to use. Please add or generalize this list as you can.

Platform information - start Python from the command line then issue

 import sys
 sys.platform
 
 import os
 os.name
 os.environ['OS']
 
 import platform
 platform.system()
  • Results:
Platform sys.platform os.name os.environ['OS'] platform.system()
32bit GNU/Linux linux2 posix n/a Linux
64bit GNU/Linux linux2 posix n/a Linux
32bit Mac OSX (PowerPC G4) darwin posix n/a Darwin
64bit Mac OSX (Intel) [1] see note ? ? ?
32bit MS Windows XP win32 nt Windows_NT Windows
64bit MS Windows Vista win32 nt Windows_NT Windows
32bit MS Windows XP (Cygwin) win32 ? ? ?
64bit MS Windows 7 win32 nt Windows_NT Windows

[1] On Fri, May 29, 2009 at 10:49 PM, William Kyngesburye wrote:

Right now the GUI only runs 32bit, even if the rest of GRASS is 64bit, because it's not yet possible for wxPython to be 64bit. It comes out the same as PPC 32bit - no distinction between ppc/intel or 32/64 bit, it's all darwin. (yes, I checked, and I have a custom 64bit python executable to verify)

General GUI Design

Layout

For some users, the current approach of separate windows (SDI) leads to a windows flooding. Especially on large monitors or dual screen systems catching the wxGUI windows can be tedious when they appear on separate monitors (depends on windows manager, the much used KDE scatters typically the wxGUI windows all over the screen real estate). Almost each task generates a new wxGUI window which is freely floating around on the screen: example 1 and example 2. On a dual-screen this may sum up to 50cm of distance!

Proposed solutions:

  • implement optional layout similar to QGIS (with a legend attached to each display) or GSDView etc) (see figure below)
  • implement optional magnetic docking of the layer manager and display windows to keep the windows closer
  • do not allow module windows to stay open. That is, get rid of the apply button and force each window to close when OK is pressed (QGIS/ArcGIS approach). This leaves only the display(s) and single legend/layer manager on desktop.
  • If you otherwise wish to continue using your current WM, file a bug report with them asking for better multi-head support and get the problem fixed at the source. (there probably already is a bug filed with tips in it)
Current wxGUI layout with detached window components
Proposal for wxGUI layout modification (Recomposition of existing toolbars, mapview and menus)

New solution: see WxGUI#Data_Catalog above.


What others do

SDI: (each document opened in application occupies a window on the desktop)

  • GRASS: display window for each document (i.e., set of maps displayed) opened on desktop; one legend/layer manager window for all display windows; ; each module/function opens a separate window on the desktop
  • QGIS: display window for each document (i.e., set of maps displayed) opened on the desktop; legend/layer manager window attached to each display window; each module/function opens a separate window on the desktop (e.g. http://grass.osgeo.org/grass61/screenshots/images/qgis08_grass6_toolbox.png)
  • ArcGIS: similar to QGIS with combined legend/display for each document (set of maps displayed); each module/function opens a separate window on the desktop (e.g. http://upload.wikimedia.org/wikipedia/en/9/92/ArcMap.jpg)
  • MapInfo (pre Pitney Bowes): each document opens a map display window on the desktop; single legend/toolbox opened on the desktop controls all visible documents (i.e., map displays); each module/function opens a separate window on the desktop (similar to current GRASS layout)

MDI: (a single frame is opened for the application on the desktop; all documents opened inside the application frame)

See also

Useful links

References