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

Hi,

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

Points:
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
displayed.\n");
  } else {

Graceful logic eludes me at present. ideas?

thanks,
Hamish

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)

On Mon, 23 Aug 2004, Hamish wrote:

Hi,

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.

Just off the top of my head this sounds like a job for G_adjust_easting()? Only that I remember Eric Miller fixing d.sites using this function.

Paul

> 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.
>

Just off the top of my head this sounds like a job for G_adjust_easting()?
Only that I remember Eric Miller fixing d.sites using this function.

That works. Thanks.

Hamish