Opened 16 years ago
Closed 12 years ago
#547 closed defect (fixed)
Raster query in wxGUI
Reported by: | hcho | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 7.0.0 |
Component: | wxGUI | Version: | svn-trunk |
Keywords: | raster, query, r.what | Cc: | |
CPU: | x86-32 | Platform: | Linux |
Description
GRASS_REGION is set to the current display settings before raster queries in gui/wxpython/gui_modules/mapdisp.py line 1117. However, the only changes r.what can see are nsres, ewres, nrows, and ncols. East, west, north, and south remain unchanged even after zooming/panning. Any ideas?
WxGUI uses the display region/resolution for raster query (compReg=False in line 1152). Setting aside the above issue, why can't we just use the computational region for raster queries? Differences between the computational and display regions cause a cell-alignment problem where the user gets several different values within a single cell. For example, if I click eastern part of a cell, I get the correct value. But, if I click western part of the cell, I get the value of the left-adjacent cell. When I removed the compReg=False option, this problem disappeared.
R.what already takes care of everything related to query in the computational region, and what we need to pass to it is just a map name and coordinates. I don't see the need for GRASS_REGION and compReg=False. Am I missing something?
Thanks.
Change History (8)
comment:1 by , 16 years ago
Milestone: | 6.4.0 |
---|
comment:2 by , 16 years ago
Milestone: | → 7.0.0 |
---|
comment:3 by , 16 years ago
follow-up: 5 comment:4 by , 16 years ago
Hmm.... I was wrong!
os.environGRASS_REGION is passed to r.what correctly only for the *first* query. After that, r.what cannot see any changes to this variable. Now, I'm puzzled...
comment:5 by , 16 years ago
Replying to hcho:
os.environ["GRASS_REGION"] is passed to r.what correctly only for the *first* query. After that, r.what cannot see any changes to this variable. Now, I'm puzzled...
Please don't use os.environ for per-command environment settings. subprocess.Popen() has an "env" parameter; use it!
comment:6 by , 16 years ago
Thanks for clarification, Glynn.
Because GRASS_REGION is not properly passed to r.what, querying outside the initial extent (after panning) gives NULL. Note that r.what complains when query coordinates are outside the current region (GRASS_REGION in this case).
comment:7 by , 15 years ago
Keywords: | r.what added |
---|
comment:8 by , 12 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
No activity for 3 years. wxGUI development is continuing. Probably out-dated issue, closing, please re-open if needed.
OK, I think I figured out why it happens. r.what and v.what run in GMConsole.cmdThread.RunCmd, and cmdThread takes a snapshot of os.environ when it's initialized at goutput.py line 163. No changes made to os.environ afterward can be readable by any GRASS modules running in a thread. I guess this issue can cause other problems somewhere else.
Still, I think we shouldn't use GRASS_REGION for r.what.
Any comments?