GRASS Programmer's Manual
6.4.2(2012)
|
00001 #include <grass/gis.h> 00002 00003 void c_sum(DCELL * result, DCELL * values, int n, const void *closure) 00004 { 00005 DCELL sum; 00006 int count; 00007 int i; 00008 00009 sum = 0.0; 00010 count = 0; 00011 00012 for (i = 0; i < n; i++) { 00013 if (G_is_d_null_value(&values[i])) 00014 continue; 00015 00016 sum += values[i]; 00017 count++; 00018 } 00019 00020 if (count == 0) 00021 G_set_d_null_value(result, 1); 00022 else 00023 *result = sum; 00024 } 00025 00026 void w_sum(DCELL * result, DCELL(*values)[2], int n, const void *closure) 00027 { 00028 DCELL sum; 00029 DCELL count; 00030 int i; 00031 00032 sum = 0.0; 00033 count = 0.0; 00034 00035 for (i = 0; i < n; i++) { 00036 if (G_is_d_null_value(&values[i][0])) 00037 continue; 00038 00039 sum += values[i][0] * values[i][1]; 00040 count += values[i][1]; 00041 } 00042 00043 if (count == 0) 00044 G_set_d_null_value(result, 1); 00045 else 00046 *result = sum; 00047 }