[GRASS-user] problem in v.drape command
Hamish
hamish_nospam at yahoo.com
Mon Jul 9 23:07:45 EDT 2007
Dylan Beaudette wrote:
>
> The v.drape module was created by suggestion of Radim, and implemented
> by an amateur (me). This bug is one of the last remaining issues in
> the code. Although it is mentioned in the manual page, it would be
> good to do a simple test of
>
> if vector %in% current region or vector %in% raster bbox
> then run else error and exit
>
> I am not sure how to implement this check, but if I get some feedback
> I will submit a patch!
I think the libgis error is appropriate, but that v.drape should not be
trying to load a raster array i,j which is out of range. Perhaps in
these cases the Z value should be set to NULL (nan), or if that is
illegal either set to 0 (with warning) or G_fatal_error() out.
You can check in map is contained within the current region by reading
the map header info and the current region settings,
e.g. read current region into "window":
struct Cell_head window;
G_get_window(&window);
then you have doubles: window.north, .south, .east, .west, .top, .bottom
To read vector bounds:
struct Map_info Map;
BOUND_BOX box;
Vect_open_old_head (&Map, input->answer, mapset);
Vect_get_map_box (&Map, &box);
then you have doubles: box.N, box.S, box.E, box.W, box.T, box.B
compare:
if ( (box.N > window.north) || (box.S < window.south) ||
(box.E > window.east) || (box.W < window.west) )
G_warning("Vector exists outside of raster region");
...
Hamish
More information about the grass-user
mailing list