GRASS Programmer's Manual
6.4.2(2012)
|
00001 #include <grass/gis.h> 00002 #include <grass/stats.h> 00003 00004 void c_intr(DCELL * result, DCELL * values, int n, const void *closure) 00005 { 00006 DCELL center; 00007 int count; 00008 int diff; 00009 int i; 00010 00011 if (G_is_d_null_value(&values[n / 2])) { 00012 G_set_d_null_value(result, 1); 00013 return; 00014 } 00015 00016 center = values[n / 2]; 00017 count = 0; 00018 diff = 0; 00019 00020 for (i = 0; i < n; i++) { 00021 if (G_is_d_null_value(&values[i])) 00022 continue; 00023 00024 count++; 00025 if (values[i] != center) 00026 diff++; 00027 } 00028 00029 count--; 00030 00031 if (count <= 0) 00032 *result = 0; 00033 else 00034 *result = (diff * 100.0 + (count / 2)) / count + 1; 00035 }