[GRASS5] d.vect -a|c for all types ver2

Markus Neteler neteler at itc.it
Mon Jan 16 09:02:22 EST 2006


Hi Martin,

the patch is now in CVS for easier testing.
Thanks for it!

Markus

On Sun, Jan 15, 2006 at 09:53:16PM +0100, Martin Landa wrote:
> Hi Markus,
> 
> I have modified this path to make it compile with mentioned compiler
> options, see the attached file.
> 
> BTW, which compile options I should use:
> 
> Now I am using:
> 
> CFLAGS="-g -Wall -Werror-implicit-function-declaration -fno-common
> -D_BSD_SOURCE=1 -D_SVID_SOURCE=1 -D_POSIX_SOURCE=1 -D_POSIX_C_
> SOURCE=199506L"
> 
> Best regards, Martin
> 
> 2006/1/15, Markus Neteler <neteler at itc.it>:
> > Hi Martin,
> >
> > to make it compile with my more restrictive compiler options,
> > I have to add to local_proto.h:
> >
> > #include "symbol.h"
> >  and
> > int test_bg_color (const char*);
> >
> >
> > and to include local_proto.h in area.c and plot1.c. Please
> > add this to your version.
> >
> > I compile with
> > export CFLAGS="-g -Wall -Werror-implicit-function-declaration -fno-common"
> > ./configure ...
> >
> > to find such things (which are needed for portability).
> >
> > So far I couldn't test yet, hopefully others will do.
> >
> > Markus
> >
> > On Sun, Jan 15, 2006 at 02:21:59PM +0100, Martin Landa wrote:
> > > Hi Markus,
> > >
> > > I think it should be more tested, the last think what I want is to make
> > > d.vect buggy (or more buggy;-). In the attachment you can find the
> > > last version of the patch
> > > (slightly modified version from 2005-11). So if you can, please test it.
> > >
> > > for grassdev list: This patch allows to display colored lines and
> > > points based on GRASSRGB column (not only areas).
> > >
> > > Best regards, Martin
> > >
> > > PS: Has anyone tested the similar patch for ps.map, see
> > >
> > > http://grass.fsv.cvut.cz/~martin/grass/patches/ps_map-grassrgb-2005-10-02.diff.gz
> > >
> > > 2006/1/12, Markus Neteler <neteler at itc.it>:
> > > > Hi Martin,
> > > >
> > > > I lost track on this somehow, sorry. What do you think,
> > > > should I submit what I have from you to CVS?
> > > > Then you compare and, if needed, send final updates?
> > > >
> > > > Markus
> > > >
> > > > On Mon, Nov 07, 2005 at 09:56:11AM +0100, Martin Landa wrote:
> > > > > Hi Markus,
> > > > >
> > > > > 2005/10/28, Markus Neteler <neteler at itc.it>:
> > > > >
> > > > > > Testing the patch I got the idea that it may be useful/important
> > > > > > to exclude the color equal to the monitor background color to
> > > > > > avoid, that objects become invisible. This may be a simple if
> > > > > > statement using a function which fetches the current background
> > > > > > color.
> > > > > >
> > > > >
> > > > > I am not sure if I understood well. Did you mean this??
> > > > >
> > > > > $ d.vect mapa col=white fcol=white
> > > > > WARNING: Line color and background color are the same!
> > > > > WARNING: Area fill color and background color are the same!
> > > > >
> > > > > or
> > > > >
> > > > > cat |  grassrgb   | vel
> > > > > -----+-------------+-----
> > > > >    2 | 255:255:255 |  15
> > > > >
> > > > > $ d.vect mapa -a
> > > > > WARNING: Category <2>: Area fill color and background color are the same!
> > > > > WARNING: Category <2>: Line color and background color are the same!
> > > > >
> > > > > > While all types of vector are well displayed with color now
> > > > > > (no more error!), there is a small bug remaining:
> > > > > >
> > > > > > #spearfish
> > > > > > d.vect fields disp=attr attrcol=label
> > > > > >
> > > > > > should only display the labels (and also centroids?) but not
> > > > > > the areas. Hopefully also easy to fix...
> > > > >
> > > > > Yes, I am wondering if it is possible to determine correctly all isles by:
> > > > >
> > > > >     /* initialize isles - needed? */
> > > > >     isles = Vect_new_list ();
> > > > >     for ( area = 1; area <= num; area++ ) {
> > > > >       n_isles = Vect_get_area_num_isles ( Map, area );
> > > > >       for ( i = 0; i < n_isles; i++) {
> > > > >        isle = Vect_get_area_isle ( Map, area, i );
> > > > >        if (isle > 0) {
> > > > >          Vect_list_append (isles, isle);
> > > > >        }
> > > > >       }
> > > > >     }
> > > > >
> > > > > when I try to build topology of map 'fields' I see in report 11
> > > > > isles!! I don't know why so many isles...
> > > > >
> > > > > Number of areas     :   65
> > > > > Number of isles     :   11
> > > > > Number of areas without centroid :   2
> > > > >
> > > > > Attached patch for d.vect behaves in "old way":
> > > > >
> > > > > * area without centroid is not displayed (as "isle").
> > > > >
> > > > > I am not sure how to solve it better ... but hope it works now...
> > > > >
> > > > > Best regards,
> > > > >
> > > > >  Martin
> > > > >
> > > > > > On Thu, Oct 27, 2005 at 06:36:06PM +0200, Martin Landa wrote:
> > > > > > > Hi Markus,
> > > > > > >
> > > > > > > there is the last patch for d.vect (against the current CVS). Sorry
> > > > > > > for this complication.
> > > > > > >
> > > > > > > Best regards, Martin
> > > > > > >
> > > > > > > 2005/10/27, Markus Neteler <neteler at itc.it>:
> > > > > > > > Hi Martin,
> > > > > > > >
> > > > > > > > I have already deleted all patch files to reduce (my) confusion.
> > > > > > > > Can you send the changes again to me? For me it's best to only
> > > > > > > > have it against current CVS.
> > > > > > > >
> > > > > > > > Thanks
> > > > > > > >
> > > > > > > >  Markus
> > > > > > > >
> > > > > > > >
> > > > > > > > Martin Landa wrote:
> > > > > > > >
> > > > > > > > >Hi Markus,
> > > > > > > > >
> > > > > > > > >it is my fault, a little bit confusing I think, sorry for that:
> > > > > > > > >
> > > > > > > > >d_vect_rgb_column-2005-10-23.diff.gz is against the current CVS,
> > > > > > > > >please use this patch.
> > > > > > > > >
> > > > > > > > >area.diff is against d_vect_rgb_column-2005-10-18.diff
> > > > > > > > >
> > > > > > > > >Martin
> > > > > > > > >
> > > > > > > > >2005/10/26, Markus Neteler <neteler at itc.it>:
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >>Martin,
> > > > > > > > >>
> > > > > > > > >>the patch doesn't work, apparently it's not against the
> > > > > > > > >>current CVS?
> > > > > > > > >>
> > > > > > > > >>patch -p0 < ~/area.diff
> > > > > > > > >>patching file d.vect/area.c
> > > > > > > > >>Hunk #1 succeeded at 44 with fuzz 2 (offset 24 lines).
> > > > > > > > >>Hunk #2 succeeded at 54 (offset -19 lines).
> > > > > > > > >>Hunk #3 succeeded at 173 with fuzz 2 (offset 24 lines).
> > > > > > > > >>Hunk #4 FAILED at 233.
> > > > > > > > >>Hunk #5 succeeded at 205 with fuzz 1 (offset -42 lines).
> > > > > > > > >>1 out of 5 hunks FAILED -- saving rejects to file d.vect/area.c.rej
> > > > > > > > >>
> > > > > > > > >>Can you please recreate it against CVS?
> > > > > > > > >>
> > > > > > > > >>Thanks
> > > > > > > > >>
> > > > > > > > >> Markus
> > > > > > > > >>
> > > > > > > > >>On Mon, Oct 24, 2005 at 12:27:12AM +0200, Martin Landa wrote:
> > > > > > > > >>
> > > > > > > > >>
> > > > > > > > >>>Hi,
> > > > > > > > >>>
> > > > > > > > >>>I have tried to solve this problem - I am really not sure, maybe I
> > > > > > > > >>>don't understand correctly areas and isles...
> > > > > > > > >>>
> > > > > > > > >>>There is a new patch for d.vect... I hope without any huge bugs;-)
> > > > > > > > >>>Please test it ... I am ready for your comments.
> > > > > > > > >>>
> > > > > > > > >>>Best regards,
> > > > > > > > >>>
> > > > > > > > >>>Martin
> > > > > > > > >>>
> > > > > > > > >>>2005/10/20, Markus Neteler <neteler at itc.it>:
> > > > > > > > >>>
> > > > > > > > >>>
> > > > > > > > >>>>On Tue, Oct 18, 2005 at 07:12:38PM +0200, Markus Neteler wrote:
> > > > > > > > >>>>
> > > > > > > > >>>>
> > > > > > > > >>>>>On Thu, Oct 06, 2005 at 09:18:33AM +0000, Martin Landa wrote:
> > > > > > > > >>>>>
> > > > > > > > >>>>>
> > > > > > > > >>>>>>Hi all,
> > > > > > > > >>>>>>
> > > > > > > > >>>>>>I have rewritten the patch for d.vect which enables to use flags -a
> > > > > > > > >>>>>>and -c for all vector types (not only for areas). I hope I did it
> > > > > > > > >>>>>>better this time (for previous patch see
> > > > > > > > >>>>>>http://grass.itc.it/pipermail/grass5/2005-September/019563.html).
> > > > > > > > >>>>>>
> > > > > > > > >>>>>>
> > > > > > > > >>>>Hi Martin,
> > > > > > > > >>>>
> > > > > > > > >>>>I tested the new d.vect code (the Vlib/area.c fix is in CVS),
> > > > > > > > >>>>but there is a bug in d.vect/area.c:
> > > > > > > > >>>>
> > > > > > > > >>>>d.vect delauney
> > > > > > > > >>>>ERROR: Attempt to read topo for dead isle (2)
> > > > > > > > >>>>
> > > > > > > > >>>>The problem is the line:
> > > > > > > > >>>>
> > > > > > > > >>>>  if (Vect_get_isle_area(Map, area))
> > > > > > > > >>>>
> > > > > > > > >>>>Since this function ends with a fatal error for non-island
> > > > > > > > >>>>areas, it must be used in a different way.
> > > > > > > > >>>>However, for details better ask Radim...
> > > > > > > > >>>>
> > > > > > > > >>>>I am sure that you'll iron out this missing piece!
> > > > > > > > >>>>
> > > > > > > > >>>>Markus
> > > > > > > > >>>>
> > > > > > > > >>>>
> > > > > > > > >>>>
> > > > > > > > >>>>
> > > > > > > > >>
> > > > > > > > >>
> > > > > > > > >>>--- d.vect.18/area.c  2005-10-24 00:03:10.000000000 +0200
> > > > > > > > >>>+++ d.vect/area.c     2005-10-24 00:18:39.000000000 +0200
> > > > > > > > >>>@@ -20,8 +20,9 @@
> > > > > > > > >>>     struct line_cats *Cats;
> > > > > > > > >>>     int cat, centroid = 0;
> > > > > > > > >>>     int red, grn, blu;
> > > > > > > > >>>+    struct ilist *isles = NULL;
> > > > > > > > >>>
> > > > > > > > >>>-    struct field_info *fi=NULL;
> > > > > > > > >>>+    struct field_info *fi = NULL;
> > > > > > > > >>>     dbDriver *driver = NULL;
> > > > > > > > >>>     dbCatValArray cvarr;
> > > > > > > > >>>     dbCatVal *cv_rgb = NULL;
> > > > > > > > >>>@@ -72,14 +73,26 @@
> > > > > > > > >>>
> > > > > > > > >>>     num = Vect_get_num_areas(Map);
> > > > > > > > >>>     G_debug (2, "n_areas = %d", num);
> > > > > > > > >>>-
> > > > > > > > >>>+
> > > > > > > > >>>+    /* initialize isles - needed? */
> > > > > > > > >>>+    isles = Vect_new_list ();
> > > > > > > > >>>+    for ( area = 1; area <= num; area++ ) {
> > > > > > > > >>>+      n_isles = Vect_get_area_num_isles ( Map, area );
> > > > > > > > >>>+      for ( i = 0; i < n_isles; i++) {
> > > > > > > > >>>+     isle = Vect_get_area_isle ( Map, area, i );
> > > > > > > > >>>+     if (isle > 0) {
> > > > > > > > >>>+       Vect_list_append (isles, isle);
> > > > > > > > >>>+     }
> > > > > > > > >>>+      }
> > > > > > > > >>>+    }
> > > > > > > > >>>+
> > > > > > > > >>>     for ( area = 1; area <= num; area++ ) {
> > > > > > > > >>>      int i;
> > > > > > > > >>>      BOUND_BOX box;
> > > > > > > > >>>         G_debug (3, "area = %d", area);
> > > > > > > > >>>
> > > > > > > > >>>-     if ( !Vect_area_alive (Map, area) ) continue;
> > > > > > > > >>>-
> > > > > > > > >>>+     if ( !Vect_area_alive (Map, area) || Vect_val_in_list(isles, area)) continue;
> > > > > > > > >>>+
> > > > > > > > >>>      /* Check box */
> > > > > > > > >>>      Vect_get_area_box (Map, area, &box);
> > > > > > > > >>>      if ( box.N < window->south || box.S > window->north ||
> > > > > > > > >>>@@ -136,7 +149,7 @@
> > > > > > > > >>>          Vect_append_points ( Points, IPoints, GV_FORWARD);
> > > > > > > > >>>          Vect_append_point ( Points, xl, yl, 0.0 ); /* ??? */
> > > > > > > > >>>      }
> > > > > > > > >>>-
> > > > > > > > >>>+
> > > > > > > > >>>      if( table_colors_flag ) {
> > > > > > > > >>>        cat=Vect_get_area_cat ( Map, area , Clist -> field );
> > > > > > > > >>>        centroid = Vect_get_area_centroid ( Map, area );
> > > > > > > > >>>@@ -196,20 +209,15 @@
> > > > > > > > >>>      }
> > > > > > > > >>>
> > > > > > > > >>>      if ( fcolor > -1 ) {
> > > > > > > > >>>-       if (Vect_get_isle_area (Map, area)) { /* isle ? */
> > > > > > > > >>>-         R_RGB_color (255, 255, 255);
> > > > > > > > >>>-         }
> > > > > > > > >>>+       if (!table_colors_flag && !cats_color_flag) {
> > > > > > > > >>>+         R_color(fcolor) ;
> > > > > > > > >>>+       }
> > > > > > > > >>>        else {
> > > > > > > > >>>-         if (!table_colors_flag && !cats_color_flag) {
> > > > > > > > >>>-           R_color(fcolor) ;
> > > > > > > > >>>+         if (rgb) {
> > > > > > > > >>>+           R_RGB_color ((unsigned char) red, (unsigned char) grn, (unsigned char) blu);
> > > > > > > > >>>          }
> > > > > > > > >>>          else {
> > > > > > > > >>>-           if (rgb) {
> > > > > > > > >>>-             R_RGB_color ((unsigned char) red, (unsigned char) grn, (unsigned char) blu);
> > > > > > > > >>>-           }
> > > > > > > > >>>-           else {
> > > > > > > > >>>            R_color (fcolor);
> > > > > > > > >>>-           }
> > > > > > > > >>>          }
> > > > > > > > >>>        }
> > > > > > > > >>>        G_plot_polygon ( Points->x, Points->y, Points->n_points);
> > > > > > > > >>>@@ -239,8 +247,10 @@
> > > > > > > > >>>     } /* end for */
> > > > > > > > >>>
> > > > > > > > >>>     Vect_destroy_line_struct (Points);
> > > > > > > > >>>+    Vect_destroy_line_struct (IPoints);
> > > > > > > > >>>     Vect_destroy_cats_struct (Cats);
> > > > > > > > >>>-
> > > > > > > > >>>+    Vect_destroy_list (isles);
> > > > > > > > >>>+
> > > > > > > > >>>     return 0;
> > > > > > > > >>> }
> > > > > > > > >>>




More information about the grass-dev mailing list