[GRASS5] Re: [GRASS-CVS] eric: grass/src/mapdev/v.out.shape extract.c,1.9,1.10

Markus Neteler neteler at itc.it
Mon Oct 7 11:02:54 EDT 2002


Thanks, Eric,

now my map looks much better. The GRASS no-data island is also a
no-data island in SHAPE/ArcExplorer-Linux.

One day maybe a v.in.shape/v.out.shape loop will work :-)

Thanks for the fix,

 Markus

On Sat, Oct 05, 2002 at 06:21:40AM +0200, grass at intevation.de wrote:
> Author: eric
> 
> Update of /grassrepository/grass/src/mapdev/v.out.shape
> In directory doto:/tmp/cvs-serv24527
> 
> Modified Files:
> 	extract.c 
> Log Message:
> Skip unlabelled areas, reverse direction of islands w/in areas (holes).
> Think this is right, but v.in.shape doesn't give me back what I started
> with...
> 
> 
> Index: extract.c
> ===================================================================
> RCS file: /grassrepository/grass/src/mapdev/v.out.shape/extract.c,v
> retrieving revision 1.9
> retrieving revision 1.10
> diff -u -d -r1.9 -r1.10
> --- extract.c	4 Oct 2002 05:34:03 -0000	1.9
> +++ extract.c	5 Oct 2002 04:21:37 -0000	1.10
> @@ -163,7 +163,16 @@
>    cindx = curr_indx + 1;
>    if( curr_indx >= Map->n_areas ) return 0;
>  
> -  
> +  if (!V2_area_att(Map, cindx)) {
> +    fprintf ( lfp, "Skipping unlabeled area (hole?) #%d\n", cindx);
> +    return -1;
> +  }
> +
> +  if( V2_get_area( Map, cindx, &Area ) != 0 ) {
> +    fprintf( lfp, "Area %d unassigned\n", cindx );
> +    return -1;
> +  }
> + 
>    logfile_name = (char *)malloc(128);
>  
>    proc_logfile( GET_VAL, logfile_name );
> @@ -177,12 +186,7 @@
>    Points->n_points = 0;
>    Points->x = NULL;
>    Points->y = NULL;
> -
> -  if( V2_get_area( Map, cindx, &Area ) != 0 ) {
> -    fprintf( lfp, "Area %d unassigned\n", cindx );
> -    return 1;
> -  }
> -  
> + 
>    /* fprintf(lfp, "\nArea %d has %d isles: \n", cindx, Area->n_isles ); */
>    
>    /* Determine initial information on shape */
> @@ -193,7 +197,6 @@
>      return 1;
>    }
>  
> -
>    partoffsets = (int *)malloc( numparts * sizeof(int) );
>  
>    /* Set first offset (of main ring) */
> @@ -237,10 +240,10 @@
>      listX = (double *)realloc( listX, totalvertices * sizeof(double) );
>      listY = (double *)realloc( listY, totalvertices * sizeof(double) );
>      
> -    k1 = 0;
> +    k1 = numvertices - 1;
>      for( k = startOffset; k <= endOffset; ++k ) {
>        listX[k] = Points->x[k1];
> -      listY[k] = Points->y[k1++];      
> +      listY[k] = Points->y[k1--];      
>      }
>    }
>  
> 
> 
> _______________________________________________
> grass-commit mailing list
> grass-commit at grass.itc.it
> http://grass.itc.it/mailman/listinfo/grass-commit




More information about the grass-dev mailing list