48 double zminac,
double zmaxac,
49 double c1min,
double c1max,
double c2min,
double c2max,
50 double gmin G_UNUSED,
double gmax G_UNUSED,
53 double *dnorm,
struct Cell_head *outhd,
54 struct Cell_head *winhd,
55 char *smooth,
int n_points)
62 int cf1 = 0, cf2 = 0, cf3 = 0, cf4 = 0, cf5 = 0,
68 struct Colors colors, colors2;
69 double value1, value2;
71 struct _Color_Rule_ *rule;
82 _(
"Temporarily changing the region to desired resolution..."));
83 Rast_set_output_window(outhd);
86 cell1 = Rast_allocate_f_output_buf();
89 cf1 = Rast_open_fp_new(params->
elev);
92 cf2 = Rast_open_fp_new(params->
slope);
95 cf3 = Rast_open_fp_new(params->
aspect);
98 cf4 = Rast_open_fp_new(params->
pcurv);
101 cf5 = Rast_open_fp_new(params->
tcurv);
104 cf6 = Rast_open_fp_new(params->
mcurv);
107 if (nrows != params->
nsizr) {
108 G_warning(_(
"First change your rows number(%d) to %d"), nrows,
114 if (ncols != params->
nsizc) {
115 G_warning(_(
"First change your columns number(%d) to %d"), ncols,
122 for (i = 0; i < params->
nsizr; i++) {
125 (off_t)(params->
nsizr - 1 - i) * params->
nsizc *
128 if (fread(cell1,
sizeof(FCELL), params->
nsizc, params->
Tmp_fd_z) !=
129 (
size_t)params->
nsizc)
130 G_fatal_error(_(
"RST library temporary file reading error: %s"),
132 Rast_put_f_row(cf1, cell1);
138 for (i = 0; i < params->
nsizr; i++) {
141 (off_t)(params->
nsizr - 1 - i) * params->
nsizc *
144 if (fread(cell1,
sizeof(FCELL), params->
nsizc, params->
Tmp_fd_dx) !=
145 (
size_t)params->
nsizc)
146 G_fatal_error(_(
"RST library temporary file reading error: %s"),
148 Rast_put_f_row(cf2, cell1);
154 for (i = 0; i < params->
nsizr; i++) {
157 (off_t)(params->
nsizr - 1 - i) * params->
nsizc *
160 if (fread(cell1,
sizeof(FCELL), params->
nsizc, params->
Tmp_fd_dy) !=
161 (
size_t)params->
nsizc)
162 G_fatal_error(_(
"RST library temporary file reading error: %s"),
164 Rast_put_f_row(cf3, cell1);
170 for (i = 0; i < params->
nsizr; i++) {
173 (off_t)(params->
nsizr - 1 - i) * params->
nsizc *
176 if (fread(cell1,
sizeof(FCELL), params->
nsizc, params->
Tmp_fd_xx) !=
177 (
size_t)params->
nsizc)
178 G_fatal_error(_(
"RST library temporary file reading error: %s"),
180 Rast_put_f_row(cf4, cell1);
186 for (i = 0; i < params->
nsizr; i++) {
189 (off_t)(params->
nsizr - 1 - i) * params->
nsizc *
192 if (fread(cell1,
sizeof(FCELL), params->
nsizc, params->
Tmp_fd_yy) !=
193 (
size_t)params->
nsizc)
194 G_fatal_error(_(
"RST library temporary file reading error: %s"),
196 Rast_put_f_row(cf5, cell1);
202 for (i = 0; i < params->
nsizr; i++) {
205 (off_t)(params->
nsizr - 1 - i) * params->
nsizc *
208 if (fread(cell1,
sizeof(FCELL), params->
nsizc, params->
Tmp_fd_xy) !=
209 (
size_t)params->
nsizc)
210 G_fatal_error(_(
"RST library temporary file reading error: %s"),
212 Rast_put_f_row(cf6, cell1);
235 G_warning(_(
"Raster map <%s> not found"), input);
238 Rast_init_colors(&colors2);
243 if (Rast_read_colors(input, maps, &colors) >= 0) {
244 if (colors.modular.rules) {
245 rule = colors.modular.rules;
250 for (; rule; rule = rule->prev) {
251 value1 = rule->low.value * params->
zmult;
252 value2 = rule->high.value * params->
zmult;
253 Rast_add_modular_d_color_rule(
254 &value1, rule->low.red, rule->low.grn, rule->low.blu,
255 &value2, rule->high.red, rule->high.grn, rule->high.blu,
260 if (colors.fixed.rules) {
261 rule = colors.fixed.rules;
266 for (; rule; rule = rule->prev) {
267 value1 = rule->low.value * params->
zmult;
268 value2 = rule->high.value * params->
zmult;
269 Rast_add_d_color_rule(&value1, rule->low.red, rule->low.grn,
270 rule->low.blu, &value2,
271 rule->high.red, rule->high.grn,
272 rule->high.blu, &colors2);
283 Rast_write_colors(params->
elev, maps, &colors2);
284 Rast_quantize_fp_map_range(params->
elev, mapset, zminac - 0.5,
285 zmaxac + 0.5, (CELL)(zminac - 0.5),
286 (CELL)(zmaxac + 0.5));
289 G_warning(_(
"No color table for input raster map -- will not "
290 "create color table"));
294 if (cond1 & (!params->
deriv)) {
295 Rast_init_colors(&colors);
298 Rast_add_c_color_rule(&val1, 255, 255, 255, &val2, 255, 255, 0,
302 Rast_add_c_color_rule(&val1, 255, 255, 0, &val2, 0, 255, 0, &colors);
305 Rast_add_c_color_rule(&val1, 0, 255, 0, &val2, 0, 255, 255, &colors);
308 Rast_add_c_color_rule(&val1, 0, 255, 255, &val2, 0, 0, 255, &colors);
311 Rast_add_c_color_rule(&val1, 0, 0, 255, &val2, 255, 0, 255, &colors);
314 Rast_add_c_color_rule(&val1, 255, 0, 255, &val2, 255, 0, 0, &colors);
317 Rast_add_c_color_rule(&val1, 255, 0, 0, &val2, 0, 0, 0, &colors);
326 Rast_write_colors(params->
slope, maps, &colors);
327 Rast_quantize_fp_map_range(params->
slope, mapset, 0., 90., 0, 90);
329 do_history(params->
slope, input, params);
333 Rast_init_colors(&colors);
336 Rast_add_c_color_rule(&val1, 255, 255, 255, &val2, 255, 255, 255,
340 Rast_add_c_color_rule(&val1, 255, 255, 0, &val2, 0, 255, 0, &colors);
343 Rast_add_c_color_rule(&val1, 0, 255, 0, &val2, 0, 255, 255, &colors);
346 Rast_add_c_color_rule(&val1, 0, 255, 255, &val2, 255, 0, 0, &colors);
349 Rast_add_c_color_rule(&val1, 255, 0, 0, &val2, 255, 255, 0, &colors);
358 Rast_write_colors(params->
aspect, maps, &colors);
359 Rast_quantize_fp_map_range(params->
aspect, mapset, 0., 360., 0,
362 do_history(params->
aspect, input, params);
367 Rast_init_colors(&colors);
369 dat1 = (FCELL)
amin1(c1min, c2min);
372 Rast_add_f_color_rule(&dat1, 50, 0, 155, &dat2, 0, 0, 255, &colors);
374 dat2 = (FCELL)-0.001;
375 Rast_add_f_color_rule(&dat1, 0, 0, 255, &dat2, 0, 127, 255,
378 dat2 = (FCELL)-0.00001;
379 Rast_add_f_color_rule(&dat1, 0, 127, 255, &dat2, 0, 255, 255,
383 Rast_add_f_color_rule(&dat1, 0, 255, 255, &dat2, 200, 255, 200,
386 dat2 = (FCELL)0.00001;
387 Rast_add_f_color_rule(&dat1, 200, 255, 200, &dat2, 255, 255, 0,
391 Rast_add_f_color_rule(&dat1, 255, 255, 0, &dat2, 255, 127, 0,
395 Rast_add_f_color_rule(&dat1, 255, 127, 0, &dat2, 255, 0, 0,
398 dat2 = (FCELL)
amax1(c1max, c2max);
399 Rast_add_f_color_rule(&dat1, 255, 0, 0, &dat2, 155, 0, 20, &colors);
407 Rast_write_colors(params->
pcurv, maps, &colors);
409 fprintf(stderr,
"color map written\n");
411 Rast_quantize_fp_map_range(params->
pcurv, mapset, dat1, dat2,
413 (CELL)(dat2 *
MULT));
414 do_history(params->
pcurv, input, params);
424 Rast_write_colors(params->
tcurv, maps, &colors);
425 Rast_quantize_fp_map_range(params->
tcurv, mapset, dat1, dat2,
427 (CELL)(dat2 *
MULT));
429 do_history(params->
tcurv, input, params);
439 Rast_write_colors(params->
mcurv, maps, &colors);
440 Rast_quantize_fp_map_range(params->
mcurv, mapset, dat1, dat2,
442 (CELL)(dat2 *
MULT));
444 do_history(params->
mcurv, input, params);
455 Rast_short_history(params->
elev,
"raster", &hist);
458 Rast_append_format_history(&hist,
"tension=%f, smoothing=%s",
459 params->
fi * 1000. / (*dnorm), smooth);
461 Rast_append_format_history(&hist,
"tension=%f",
462 params->
fi * 1000. / (*dnorm));
464 Rast_append_format_history(&hist,
"dnorm=%f, zmult=%f", *dnorm,
466 Rast_append_format_history(&hist,
"KMAX=%d, KMIN=%d, errtotal=%f",
468 sqrt(ertot / n_points));
469 Rast_append_format_history(&hist,
"zmin_data=%f, zmax_data=%f", zmin,
471 Rast_append_format_history(&hist,
"zmin_int=%f, zmax_int=%f", zminac,
474 Rast_format_history(&hist, HIST_DATSRC_1,
"raster map %s", input);
476 Rast_write_history(params->
elev, &hist);
478 Rast_free_history(&hist);
483 Rast_set_output_window(winhd);