run_cmd.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <sys/types.h>
  4. #include <sys/stat.h>
  5. #include <fcntl.h>
  6. #include <grass/gis.h>
  7. #include "method.h"
  8. FILE *run_stats(struct Popen *child,
  9. const char *basemap, const char *covermap, const char *mode)
  10. {
  11. char input[6 + GNAME_MAX + 1 + GMAPSET_MAX + 1 + GNAME_MAX + 1 + GMAPSET_MAX + 1];
  12. const char *argv[5];
  13. FILE *fp;
  14. sprintf(input, "input=%s,%s", basemap, covermap);
  15. argv[0] = "r.stats";
  16. argv[1] = mode;
  17. argv[2] = input;
  18. argv[3] = "separator=space";
  19. argv[4] = NULL;
  20. /* maybe use r.stats's output= option instead of reading from stdout here, whatever's easier. */
  21. fp = G_popen_read(child, argv[0], argv);
  22. if (!fp)
  23. G_fatal_error("error running r.stats");
  24. return fp;
  25. }
  26. FILE *run_reclass(struct Popen *child, const char *basemap, const char *outputmap)
  27. {
  28. char input[6 + GNAME_MAX + 1 + GMAPSET_MAX + 1];
  29. char output[7 + GNAME_MAX + 1];
  30. const char *argv[5];
  31. FILE *fp;
  32. sprintf(input, "input=%s", basemap);
  33. sprintf(output, "output=%s", outputmap);
  34. argv[0] = "r.reclass";
  35. argv[1] = input;
  36. argv[2] = output;
  37. argv[3] = "rules=-";
  38. argv[4] = NULL;
  39. fp = G_popen_write(child, argv[0], argv);
  40. if (!fp)
  41. G_fatal_error("error running r.stats");
  42. return fp;
  43. }