12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #include <stdlib.h>
- #include <unistd.h>
- #include <grass/gis.h>
- #include <grass/raster.h>
- #include "method.h"
- int o_divr(const char *basemap, const char *covermap, const char *outputmap,
- int usecats, struct Categories *cats)
- {
- struct Popen stats_child, reclass_child;
- FILE *stats_fp, *reclass_fp;
- int first;
- long basecat, covercat, catb, catc;
- double area;
- stats_fp = run_stats(&stats_child, basemap, covermap, "-an");
- reclass_fp = run_reclass(&reclass_child, basemap, outputmap);
- first = 1;
- while (read_stats(stats_fp, &basecat, &covercat, &area)) {
- if (first) {
- first = 0;
- catb = basecat;
- catc = 0;
- }
- if (basecat != catb) {
- write_reclass(reclass_fp, catb, catc, Rast_get_c_cat((CELL *) &catc, cats),
- usecats);
- catb = basecat;
- catc = 0;
- }
- catc++;
- }
- if (!first)
- write_reclass(reclass_fp, catb, catc, Rast_get_c_cat((CELL *) &catc, cats), usecats);
- G_popen_close(&stats_child);
- G_popen_close(&reclass_child);
- return 0;
- }
|