c_sum.c 791 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include <grass/gis.h>
  2. #include <grass/raster.h>
  3. void c_sum(DCELL * result, DCELL * values, int n, const void *closure)
  4. {
  5. DCELL sum;
  6. int count;
  7. int i;
  8. sum = 0.0;
  9. count = 0;
  10. for (i = 0; i < n; i++) {
  11. if (Rast_is_d_null_value(&values[i]))
  12. continue;
  13. sum += values[i];
  14. count++;
  15. }
  16. if (count == 0)
  17. Rast_set_d_null_value(result, 1);
  18. else
  19. *result = sum;
  20. }
  21. void w_sum(DCELL * result, DCELL(*values)[2], int n, const void *closure)
  22. {
  23. DCELL sum;
  24. DCELL count;
  25. int i;
  26. sum = 0.0;
  27. count = 0.0;
  28. for (i = 0; i < n; i++) {
  29. if (Rast_is_d_null_value(&values[i][0]))
  30. continue;
  31. sum += values[i][0] * values[i][1];
  32. count += values[i][1];
  33. }
  34. if (count == 0)
  35. Rast_set_d_null_value(result, 1);
  36. else
  37. *result = sum;
  38. }