Opened 16 years ago

Closed 12 years ago

#547 closed defect (fixed)

Raster query in wxGUI

Reported by: hcho Owned by: grass-dev@…
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 hcho, 16 years ago

Milestone: 6.4.0

comment:2 by hcho, 16 years ago

Milestone: 7.0.0

comment:3 by hcho, 16 years ago

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?

comment:4 by hcho, 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...

in reply to:  4 comment:5 by glynn, 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 hcho, 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 hamish, 15 years ago

Keywords: r.what added

comment:8 by martinl, 12 years ago

Resolution: fixed
Status: newclosed

No activity for 3 years. wxGUI development is continuing. Probably out-dated issue, closing, please re-open if needed.

Note: See TracTickets for help on using tickets.