[GRASS-dev] Behavior of explore mode in GIS Manager

I have a question for you all.

I just discovered an unexpected (to me) behavior of explore mode in gism. I thought explore mode only tried to fill the display window with the rendered map. However, it also changes the region resolution as you zoom in and out. To give an example:

Start with the 30m DEM in Spearfish and set the region to match the DEM
Zoom in and the resolution increases to 10m, 5m, 1m
Zoom out and the resolution decreases to 60m, 90m, etc

Essentially, it is changing so that a constant number of grid cells are represented in the display window.

I first thought this was a bug and have been trying to find where it is located over the past day. I found it and discovered that it is intentional. So here’s the question.

Is this the way we want zooming to work in this special mode? If so, we need to change the mouse over help to make sure this is clear. If not, we need to change how explore mode works so that it does not change resolution. I can see advantages and disadvantages of each.

I’ve included the code of the relevant function below.

Michael


Michael Barton, Professor of Anthropology
School of Human Evolution & Social Change
Center for Social Dynamics and Complexity
Arizona State University

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

— relevant function of mapcanvas.tcl with code lines marked that change resolution.

proc MapCanvas::currentzoom { mon } {
variable zoom_attrs
variable exploremode
variable monitor_zooms
global canvas_w
global canvas_h

Fetch the current zoom settings

set region {}
foreach attr $zoom_attrs {
lappend region $monitor_zooms($mon,1,$attr)
}

If explore mode is engaged blow up the region to match the canvas

if {$exploremode($mon) == 1} {

Set the region to the smallest region no smaller than the canvas

set canvas_ar [expr {1.0 * $canvas_w($mon) / $canvas_h($mon)}]
set expanded_nsew [MapCanvas::shrinkwrap 1 [lrange $region 0 3] $canvas_ar]
puts “expanded = $expanded_nsew”
foreach {n s e w} $expanded_nsew {break}

Calculate the resolutions

—> lappend expanded_nsew [expr {1.0 * ($n - $s) / $canvas_h($mon)}]
—> lappend expanded_nsew [expr {1.0 * ($e - $w) / $canvas_w($mon)}]
set region $expanded_nsew
}

return $region
}

Michael,

Essentially, it is changing so that a constant number of grid cells are
represented in the display window.

Is this the way we want zooming to work in this special mode? If so, we
need to change the mouse over help to make sure this is clear. If not, we
need to change how explore mode works so that it does not change
resolution. I can see advantages and disadvantages of each.

This was very deliberate. Explore mode does two things:

Makes the region displayed fill the window and
Makes the region one cell per pixel on the display device.

The solution is more documentation or ...

I actually considered two separate toggle buttons when I designed this, one
for filling the screen and one for automatic resolution changes. Another
interesting behaviour is the one you described, "a constant number of grid
cells are represented in the display window", but it is slightly less obvious
how to use.

--Cedric

Hi Cedric,

I figured that you intended it to be this way, but wanted to make sure that
others understood it as well. Most of the concern about this was obviated
when we decoupled the display region settings from the 'computational'
region settings.

Cheers
Michael

On 1/2/07 9:21 AM, "Cedric Shock" <cedricgrass@shockfamily.net> wrote:

Michael,

Essentially, it is changing so that a constant number of grid cells are
represented in the display window.

Is this the way we want zooming to work in this special mode? If so, we
need to change the mouse over help to make sure this is clear. If not, we
need to change how explore mode works so that it does not change
resolution. I can see advantages and disadvantages of each.

This was very deliberate. Explore mode does two things:

Makes the region displayed fill the window and
Makes the region one cell per pixel on the display device.

The solution is more documentation or ...

I actually considered two separate toggle buttons when I designed this, one
for filling the screen and one for automatic resolution changes. Another
interesting behaviour is the one you described, "a constant number of grid
cells are represented in the display window", but it is slightly less obvious
how to use.

--Cedric

__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution & Social Change
Center for Social Dynamics & Complexity
Arizona State University

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton