[GRASS-SVN] r59119 - grass/trunk/vector/v.colors

svn_grass at osgeo.org svn_grass at osgeo.org
Fri Feb 21 13:58:08 PST 2014


Author: martinl
Date: 2014-02-21 13:58:07 -0800 (Fri, 21 Feb 2014)
New Revision: 59119

Added:
   grass/trunk/vector/v.colors/scan_z.c
Log:
v.colors: add missing file (fix broken r59113)


Added: grass/trunk/vector/v.colors/scan_z.c
===================================================================
--- grass/trunk/vector/v.colors/scan_z.c	                        (rev 0)
+++ grass/trunk/vector/v.colors/scan_z.c	2014-02-21 21:58:07 UTC (rev 59119)
@@ -0,0 +1,91 @@
+#include <grass/vector.h>
+#include <grass/raster.h>
+#include <grass/glocale.h>
+
+#include "local_proto.h"
+
+void scan_z(struct Map_info *Map, int field,
+            const char *style, const char *rules,
+            const struct FPRange *range, struct Colors *colors)
+{
+    int ltype, line, cat, i;
+    int items_alloc;
+    double zmin, zmax;
+    struct line_pnts *Points;
+    struct line_cats *Cats;
+    
+    struct Colors vcolors;
+    
+    dbCatValArray cvarr;
+
+    Points = Vect_new_line_struct();
+    Cats = Vect_new_cats_struct();
+    
+    items_alloc = 0;
+    db_CatValArray_init(&cvarr);
+    cvarr.ctype = DB_C_TYPE_DOUBLE;
+
+    Vect_set_constraint_field(Map, field);
+    Vect_set_constraint_type(Map, GV_POINTS); /* points, centroids or kernels only) */
+        
+    G_message(_("Reading features..."));
+    line = i = 0;
+    while(TRUE) {
+	ltype = Vect_read_next_line(Map, Points, Cats);
+	if (ltype == -1)
+	    G_fatal_error(_("Unable to read vector map"));
+	if (ltype == -2)
+	    break; /* EOF */
+
+	G_progress(++line, 1e4);
+        
+        if (Vect_cat_get(Cats, field, &cat) == -1)
+            continue; /* skip features without category */
+        
+        /* add item into cat-value array */
+        if (i >= items_alloc) {
+            items_alloc += 1000;
+            db_CatValArray_realloc(&cvarr, items_alloc);
+        }
+        cvarr.n_values++;
+        cvarr.value[i].cat = cat;
+        cvarr.value[i++].val.d = Points->z[0];
+
+	if (line == 1 || Points->z[0] < zmin)
+	    zmin = Points->z[0];
+	if (line == 1 || Points->z[0] > zmax)
+	    zmax = Points->z[0];
+    }
+    G_progress(1, 1);
+    
+    /* sort array by z-coordinate */
+    db_CatValArray_sort_by_value(&cvarr);
+    
+    if (range) {
+	if (range->min >= zmin && range->min <= zmax)
+	    zmin = range->min;
+	else
+	    G_warning(_("Min value (%f) is out of range %f,%f"),
+		      range->min, zmin, zmax);
+	
+	if (range->max <= zmax && range->max >= zmin)
+	    zmax = range->max;
+	else
+	    G_warning(_("Max value (%f) is out of range %f,%f"),
+		      range->max, zmin, zmax);
+    }
+
+    if (style)
+	make_colors(&vcolors, style, (DCELL) zmin, (DCELL) zmax, TRUE);
+    else if (rules) {
+	load_colors(&vcolors, rules, (DCELL) zmin, (DCELL) zmax, TRUE);
+    }
+
+    /* color table for categories */
+    color_rules_to_cats(&cvarr, TRUE, &vcolors, colors);
+
+    Vect_destroy_line_struct(Points);
+    Vect_destroy_cats_struct(Cats);
+    db_CatValArray_free(&cvarr);
+
+}


Property changes on: grass/trunk/vector/v.colors/scan_z.c
___________________________________________________________________
Added: svn:mime-type
   + text/x-csrc
Added: svn:eol-style
   + native



More information about the grass-commit mailing list