19 #include <grass/gis.h>
20 #include <grass/raster.h>
21 #include <grass/bitmap.h>
22 #include <grass/linkm.h>
23 #include <grass/interpf.h>
24 #include <grass/glocale.h>
28 static void do_history(
const char *
name,
const char *input,
33 Rast_short_history(
name,
"raster", &hist);
35 Rast_append_format_history(&hist,
"The elevation map is %s",
38 Rast_format_history(&hist, HIST_DATSRC_1,
"raster map %s", input);
40 Rast_write_history(
name, &hist);
42 Rast_free_history(&hist);
46 double zminac,
double zmaxac,
47 double c1min,
double c1max,
double c2min,
double c2max,
double gmin,
double gmax,
double ertot,
49 double *dnorm,
struct Cell_head *outhd,
50 struct Cell_head *winhd,
51 char *smooth,
int n_points)
59 int cf1 = 0, cf2 = 0, cf3 = 0, cf4 = 0, cf5 = 0, cf6 = 0;
64 struct Colors colors, colors2;
65 double value1, value2;
67 struct _Color_Rule_ *rule;
78 Rast_set_output_window(outhd);
81 cell1 = Rast_allocate_f_output_buf();
84 cf1 = Rast_open_fp_new(params->
elev);
87 cf2 = Rast_open_fp_new(params->
slope);
90 cf3 = Rast_open_fp_new(params->
aspect);
93 cf4 = Rast_open_fp_new(params->
pcurv);
96 cf5 = Rast_open_fp_new(params->
tcurv);
99 cf6 = Rast_open_fp_new(params->
mcurv);
102 if (nrows != params->
nsizr) {
103 G_warning(_(
"First change your rows number(%d) to %d"),
104 nrows, params->
nsizr);
109 if (ncols != params->
nsizc) {
110 G_warning(_(
"First change your columns number(%d) to %d"),
111 ncols, params->
nsizr);
117 for (i = 0; i < params->
nsizr; i++) {
120 params->
nsizc *
sizeof(FCELL), 0);
121 fread(cell1,
sizeof(FCELL), params->
nsizc, params->
Tmp_fd_z);
122 Rast_put_f_row(cf1, cell1);
128 for (i = 0; i < params->
nsizr; i++) {
131 params->
nsizc *
sizeof(FCELL), 0);
138 Rast_put_f_row(cf2, cell1);
144 for (i = 0; i < params->
nsizr; i++) {
147 params->
nsizc *
sizeof(FCELL), 0);
149 Rast_put_f_row(cf3, cell1);
155 for (i = 0; i < params->
nsizr; i++) {
158 params->
nsizc *
sizeof(FCELL), 0);
160 Rast_put_f_row(cf4, cell1);
166 for (i = 0; i < params->
nsizr; i++) {
169 params->
nsizc *
sizeof(FCELL), 0);
171 Rast_put_f_row(cf5, cell1);
177 for (i = 0; i < params->
nsizr; i++) {
180 params->
nsizc *
sizeof(FCELL), 0);
182 Rast_put_f_row(cf6, cell1);
205 G_warning(_(
"Raster map <%s> not found"), input);
208 Rast_init_colors(&colors2);
213 if (Rast_read_colors(input, maps, &colors) >= 0) {
214 if (colors.modular.rules) {
215 rule = colors.modular.rules;
220 for (; rule; rule = rule->prev) {
221 value1 = rule->low.value * params->
zmult;
222 value2 = rule->high.value * params->
zmult;
223 Rast_add_modular_d_color_rule(&value1, rule->low.red,
225 rule->low.blu, &value2,
233 if (colors.fixed.rules) {
234 rule = colors.fixed.rules;
239 for (; rule; rule = rule->prev) {
240 value1 = rule->low.value * params->
zmult;
241 value2 = rule->high.value * params->
zmult;
242 Rast_add_d_color_rule(&value1, rule->low.red,
243 rule->low.grn, rule->low.blu,
244 &value2, rule->high.red,
245 rule->high.grn, rule->high.blu,
257 Rast_write_colors(params->
elev, maps, &colors2);
258 Rast_quantize_fp_map_range(params->
elev, mapset,
259 zminac - 0.5, zmaxac + 0.5,
260 (CELL) (zminac - 0.5),
261 (CELL) (zmaxac + 0.5));
264 G_warning(_(
"No color table for input raster map -- will not create color table"));
268 if (cond1 & (!params->
deriv)) {
269 Rast_init_colors(&colors);
272 Rast_add_c_color_rule(&val1, 255, 255, 255, &val2, 255, 255, 0, &colors);
275 Rast_add_c_color_rule(&val1, 255, 255, 0, &val2, 0, 255, 0, &colors);
278 Rast_add_c_color_rule(&val1, 0, 255, 0, &val2, 0, 255, 255, &colors);
281 Rast_add_c_color_rule(&val1, 0, 255, 255, &val2, 0, 0, 255, &colors);
284 Rast_add_c_color_rule(&val1, 0, 0, 255, &val2, 255, 0, 255, &colors);
287 Rast_add_c_color_rule(&val1, 255, 0, 255, &val2, 255, 0, 0, &colors);
290 Rast_add_c_color_rule(&val1, 255, 0, 0, &val2, 0, 0, 0, &colors);
299 Rast_write_colors(params->
slope, maps, &colors);
300 Rast_quantize_fp_map_range(params->
slope, mapset, 0., 90., 0, 90);
302 do_history(params->
slope, input, params);
306 Rast_init_colors(&colors);
309 Rast_add_c_color_rule(&val1, 255, 255, 255, &val2, 255, 255, 255, &colors);
312 Rast_add_c_color_rule(&val1, 255, 255, 0, &val2, 0, 255, 0, &colors);
315 Rast_add_c_color_rule(&val1, 0, 255, 0, &val2, 0, 255, 255, &colors);
318 Rast_add_c_color_rule(&val1, 0, 255, 255, &val2, 255, 0, 0, &colors);
321 Rast_add_c_color_rule(&val1, 255, 0, 0, &val2, 255, 255, 0, &colors);
330 Rast_write_colors(params->
aspect, maps, &colors);
331 Rast_quantize_fp_map_range(params->
aspect, mapset, 0., 360., 0, 360);
333 do_history(params->
aspect, input, params);
338 Rast_init_colors(&colors);
340 dat1 = (FCELL)
amin1(c1min, c2min);
341 dat2 = (FCELL) - 0.01;
343 Rast_add_f_color_rule(&dat1, 50, 0, 155,
344 &dat2, 0, 0, 255, &colors);
346 dat2 = (FCELL) - 0.001;
347 Rast_add_f_color_rule(&dat1, 0, 0, 255,
348 &dat2, 0, 127, 255, &colors);
350 dat2 = (FCELL) - 0.00001;
351 Rast_add_f_color_rule(&dat1, 0, 127, 255,
352 &dat2, 0, 255, 255, &colors);
355 Rast_add_f_color_rule(&dat1, 0, 255, 255,
356 &dat2, 200, 255, 200, &colors);
358 dat2 = (FCELL) 0.00001;
359 Rast_add_f_color_rule(&dat1, 200, 255, 200,
360 &dat2, 255, 255, 0, &colors);
362 dat2 = (FCELL) 0.001;
363 Rast_add_f_color_rule(&dat1, 255, 255, 0,
364 &dat2, 255, 127, 0, &colors);
367 Rast_add_f_color_rule(&dat1, 255, 127, 0,
368 &dat2, 255, 0, 0, &colors);
370 dat2 = (FCELL)
amax1(c1max, c2max);
371 Rast_add_f_color_rule(&dat1, 255, 0, 0,
372 &dat2, 155, 0, 20, &colors);
380 Rast_write_colors(params->
pcurv, maps, &colors);
382 fprintf(stderr,
"color map written\n");
384 Rast_quantize_fp_map_range(params->
pcurv, mapset,
386 (CELL) (dat1 *
MULT),
387 (CELL) (dat2 *
MULT));
388 do_history(params->
pcurv, input, params);
398 Rast_write_colors(params->
tcurv, maps, &colors);
399 Rast_quantize_fp_map_range(params->
tcurv, mapset,
400 dat1, dat2, (CELL) (dat1 *
MULT),
401 (CELL) (dat2 *
MULT));
403 do_history(params->
tcurv, input, params);
413 Rast_write_colors(params->
mcurv, maps, &colors);
414 Rast_quantize_fp_map_range(params->
mcurv, mapset,
416 (CELL) (dat1 *
MULT),
417 (CELL) (dat2 *
MULT));
419 do_history(params->
mcurv, input, params);
430 Rast_short_history(params->
elev,
"raster", &hist);
433 Rast_append_format_history(
434 &hist,
"tension=%f, smoothing=%s",
435 params->
fi * 1000. / (*dnorm), smooth);
437 Rast_append_format_history(
438 &hist,
"tension=%f", params->
fi * 1000. / (*dnorm));
440 Rast_append_format_history(
441 &hist,
"dnorm=%f, zmult=%f", *dnorm, params->
zmult);
442 Rast_append_format_history(
443 &hist,
"KMAX=%d, KMIN=%d, errtotal=%f", params->
kmax,
444 params->
kmin, sqrt(ertot / n_points));
445 Rast_append_format_history(
446 &hist,
"zmin_data=%f, zmax_data=%f", zmin, zmax);
447 Rast_append_format_history(
448 &hist,
"zmin_int=%f, zmax_int=%f", zminac, zmaxac);
450 Rast_format_history(&hist, HIST_DATSRC_1,
"raster map %s", input);
452 Rast_write_history(params->
elev, &hist);
454 Rast_free_history(&hist);
459 Rast_set_output_window(winhd);