xarea.c 768 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include <grass/gis.h>
  2. #include <grass/raster.h>
  3. #include "globals.h"
  4. #include "expression.h"
  5. #include "func_proto.h"
  6. /**********************************************************************
  7. area() area of a cell in square meters
  8. **********************************************************************/
  9. int f_area(int argc, const int *argt, void **args)
  10. {
  11. DCELL *res = args[0];
  12. int i;
  13. static int row = -1;
  14. static double cell_area = 0;
  15. if (argc > 0)
  16. return E_ARG_HI;
  17. if (argt[0] != DCELL_TYPE)
  18. return E_RES_TYPE;
  19. if (row != current_row) {
  20. if (row == -1)
  21. G_begin_cell_area_calculations();
  22. row = current_row;
  23. cell_area = G_area_of_cell_at_row(row);
  24. }
  25. for (i = 0; i < columns; i++)
  26. res[i] = cell_area;
  27. return 0;
  28. }