[GRASS-dev] Profiler updates

Hamish hamish_nospam at yahoo.com
Sun Feb 11 23:20:04 EST 2007


Michael Barton wrote:
> 
> I committed your patch to profile.tcl with a few modifications. The
> window placement is a nice improvement. There was already an error
> trap for profiles with a 0 length, so I deleted your 2nd trap for this
> condition. I also moved the trap for elevation range = 0 up a bit to
> immediately after the spot where the procedure for generating
> elevation range is called.
> 
> I thought of another potential problem but haven¹t found a way to trap
> it. If you send r.profile any coordinates that extend beyond the
> current region, it will crash and crash the entire GUI‹in spite of the
> fact that the call to r.profile is trapped with a catch statement. The
> profiler generates correct coordinates for any place on the display,
> regardless of whether it extends beyond the region boundaries or not.
> However, r.profile apparently chokes on coordinates outside the
> region.
> 
> I¹m not sure if this can really be called a bug in r.profile, but it
> should probably fail more gracefully.


This is a bug in r.profile. Out of region values are not correct.

spearfish example:

d.mon x0
# stretch the window so it is twice as wide as it is tall
g.region rast=elevation.dem
d.erase color=grey
d.rast elevation.dem
r.profile -i in=elevation.dem res=300

If you go off the left edge of the region, the answers are wrong.
If you go off the right edge, the answers are very wrong, then 0.

# next re-strech the window so it is taller that wide.

If you go off the bottom:
WARNING: [elevation.dem in PERMANENT] - read request for row 471 is
	  outside region
and a the program exits.

If you go off the top:
ERROR: Coordinate request outsite current region settings
and a the program exits.


d.what.rast gives a "You are clicking outside the map" warning.

r.what gives a warning before reporting a NULL ("*"):

G63> r.what in=elevation.dem east_north=602283,4913294
** note ** 602283 4913294 is outside your current window
602283|4913294||*


So it would seem appropriate that r.profile out-of-region should report
a "NULL" result (to stdout) and warning that the endpoint is out of
region (G_warning() to stderr).



Hamish




More information about the grass-dev mailing list