[GRASS5] [5.7] d.vect bug in lat/lon when crossing 180 deg

Hamish hamish_nospam at yahoo.com
Mon Aug 23 02:19:48 EDT 2004


I'm trying to fix d.vect for use with lat/lon when the region traverses
180 degrees (centering the view on the pacific).

e.g.  g.region w=0 e=360

d.vect includes code to only draw stuff which is actually on screen;
I've just patched the code to get all areas to show up[*], but am
stumbling on getting point data to work in a clean way.

[*] http://freegis.org/cgi-bin/viewcvs.cgi/grass51/display/d.vect/area.c.diff?r1=1.13&r2=1.15

grass51/display/d.vect/main.c  line 414:

	if ( level >= 2 && ( window.north < box.S || window.south >  box.N || 
		             window.east < box.W || window.west > box.E ) )
	    fprintf (stdout,
 "The bounding box of the map outside current region, nothing
	} else { 

Graceful logic eludes me at present.  ideas?


ps - NVIZ crashes with:

Loading Data
ERROR: cell_values_d: xdr_double failed for index 86.
child process exited abnormally

or a malloc error when the region traverses 180 longitude and you are 
using a degree-scaled map (i.e. meters/(60*1852.0)) with very small 
values (eg -0.09 to 0.06).

any hints on getting the C part of NVIZ to work in a gdb based debugger?
(du jour: kdbg)

Ideally, NVIZ should automatically scale meters->deg (or better yet 
deg*deg -> m) when PROJ==LL. Note the height, vertical exag., site icon
size, etc code also would need to be touched for the latter. People
using z=feet would still have problems, but it would be much better
than it is now.

(see r.shaded.relief &/or shade.rel.sh)

More information about the grass-dev mailing list