48 double zminac,
double zmaxac,
49 double c1min,
double c1max,
double c2min,
double c2max,
double gmin UNUSED,
50 double gmax UNUSED,
double ertot,
52 double *dnorm,
struct Cell_head *outhd,
53 struct Cell_head *winhd,
54 char *smooth,
int n_points)
61 int cf1 = 0, cf2 = 0, cf3 = 0, cf4 = 0, cf5 = 0,
67 struct Colors colors, colors2;
68 double value1, value2;
70 struct _Color_Rule_ *rule;
81 _(
"Temporarily changing the region to desired resolution..."));
82 Rast_set_output_window(outhd);
85 cell1 = Rast_allocate_f_output_buf();
88 cf1 = Rast_open_fp_new(params->
elev);
91 cf2 = Rast_open_fp_new(params->
slope);
94 cf3 = Rast_open_fp_new(params->
aspect);
97 cf4 = Rast_open_fp_new(params->
pcurv);
100 cf5 = Rast_open_fp_new(params->
tcurv);
103 cf6 = Rast_open_fp_new(params->
mcurv);
106 if (nrows != params->
nsizr) {
107 G_warning(_(
"First change your rows number(%d) to %d"), nrows,
113 if (ncols != params->
nsizc) {
114 G_warning(_(
"First change your columns number(%d) to %d"), ncols,
121 for (i = 0; i < params->
nsizr; i++) {
124 (off_t)(params->
nsizr - 1 - i) * params->
nsizc *
127 if (fread(cell1,
sizeof(FCELL), params->
nsizc, params->
Tmp_fd_z) !=
128 (
size_t)params->
nsizc)
129 G_fatal_error(_(
"RST library temporary file reading error: %s"),
131 Rast_put_f_row(cf1, cell1);
137 for (i = 0; i < params->
nsizr; i++) {
140 (off_t)(params->
nsizr - 1 - i) * params->
nsizc *
143 if (fread(cell1,
sizeof(FCELL), params->
nsizc, params->
Tmp_fd_dx) !=
144 (
size_t)params->
nsizc)
145 G_fatal_error(_(
"RST library temporary file reading error: %s"),
147 Rast_put_f_row(cf2, cell1);
153 for (i = 0; i < params->
nsizr; i++) {
156 (off_t)(params->
nsizr - 1 - i) * params->
nsizc *
159 if (fread(cell1,
sizeof(FCELL), params->
nsizc, params->
Tmp_fd_dy) !=
160 (
size_t)params->
nsizc)
161 G_fatal_error(_(
"RST library temporary file reading error: %s"),
163 Rast_put_f_row(cf3, cell1);
169 for (i = 0; i < params->
nsizr; i++) {
172 (off_t)(params->
nsizr - 1 - i) * params->
nsizc *
175 if (fread(cell1,
sizeof(FCELL), params->
nsizc, params->
Tmp_fd_xx) !=
176 (
size_t)params->
nsizc)
177 G_fatal_error(_(
"RST library temporary file reading error: %s"),
179 Rast_put_f_row(cf4, cell1);
185 for (i = 0; i < params->
nsizr; i++) {
188 (off_t)(params->
nsizr - 1 - i) * params->
nsizc *
191 if (fread(cell1,
sizeof(FCELL), params->
nsizc, params->
Tmp_fd_yy) !=
192 (
size_t)params->
nsizc)
193 G_fatal_error(_(
"RST library temporary file reading error: %s"),
195 Rast_put_f_row(cf5, cell1);
201 for (i = 0; i < params->
nsizr; i++) {
204 (off_t)(params->
nsizr - 1 - i) * params->
nsizc *
207 if (fread(cell1,
sizeof(FCELL), params->
nsizc, params->
Tmp_fd_xy) !=
208 (
size_t)params->
nsizc)
209 G_fatal_error(_(
"RST library temporary file reading error: %s"),
211 Rast_put_f_row(cf6, cell1);
234 G_warning(_(
"Raster map <%s> not found"), input);
237 Rast_init_colors(&colors2);
242 if (Rast_read_colors(input, maps, &colors) >= 0) {
243 if (colors.modular.rules) {
244 rule = colors.modular.rules;
249 for (; rule; rule = rule->prev) {
250 value1 = rule->low.value * params->
zmult;
251 value2 = rule->high.value * params->
zmult;
252 Rast_add_modular_d_color_rule(
253 &value1, rule->low.red, rule->low.grn, rule->low.blu,
254 &value2, rule->high.red, rule->high.grn, rule->high.blu,
259 if (colors.fixed.rules) {
260 rule = colors.fixed.rules;
265 for (; rule; rule = rule->prev) {
266 value1 = rule->low.value * params->
zmult;
267 value2 = rule->high.value * params->
zmult;
268 Rast_add_d_color_rule(&value1, rule->low.red, rule->low.grn,
269 rule->low.blu, &value2,
270 rule->high.red, rule->high.grn,
271 rule->high.blu, &colors2);
282 Rast_write_colors(params->
elev, maps, &colors2);
283 Rast_quantize_fp_map_range(params->
elev, mapset, zminac - 0.5,
284 zmaxac + 0.5, (CELL)(zminac - 0.5),
285 (CELL)(zmaxac + 0.5));
288 G_warning(_(
"No color table for input raster map -- will not "
289 "create color table"));
293 if (cond1 & (!params->
deriv)) {
294 Rast_init_colors(&colors);
297 Rast_add_c_color_rule(&val1, 255, 255, 255, &val2, 255, 255, 0,
301 Rast_add_c_color_rule(&val1, 255, 255, 0, &val2, 0, 255, 0, &colors);
304 Rast_add_c_color_rule(&val1, 0, 255, 0, &val2, 0, 255, 255, &colors);
307 Rast_add_c_color_rule(&val1, 0, 255, 255, &val2, 0, 0, 255, &colors);
310 Rast_add_c_color_rule(&val1, 0, 0, 255, &val2, 255, 0, 255, &colors);
313 Rast_add_c_color_rule(&val1, 255, 0, 255, &val2, 255, 0, 0, &colors);
316 Rast_add_c_color_rule(&val1, 255, 0, 0, &val2, 0, 0, 0, &colors);
325 Rast_write_colors(params->
slope, maps, &colors);
326 Rast_quantize_fp_map_range(params->
slope, mapset, 0., 90., 0, 90);
328 do_history(params->
slope, input, params);
332 Rast_init_colors(&colors);
335 Rast_add_c_color_rule(&val1, 255, 255, 255, &val2, 255, 255, 255,
339 Rast_add_c_color_rule(&val1, 255, 255, 0, &val2, 0, 255, 0, &colors);
342 Rast_add_c_color_rule(&val1, 0, 255, 0, &val2, 0, 255, 255, &colors);
345 Rast_add_c_color_rule(&val1, 0, 255, 255, &val2, 255, 0, 0, &colors);
348 Rast_add_c_color_rule(&val1, 255, 0, 0, &val2, 255, 255, 0, &colors);
357 Rast_write_colors(params->
aspect, maps, &colors);
358 Rast_quantize_fp_map_range(params->
aspect, mapset, 0., 360., 0,
361 do_history(params->
aspect, input, params);
366 Rast_init_colors(&colors);
368 dat1 = (FCELL)
amin1(c1min, c2min);
371 Rast_add_f_color_rule(&dat1, 50, 0, 155, &dat2, 0, 0, 255, &colors);
373 dat2 = (FCELL)-0.001;
374 Rast_add_f_color_rule(&dat1, 0, 0, 255, &dat2, 0, 127, 255,
377 dat2 = (FCELL)-0.00001;
378 Rast_add_f_color_rule(&dat1, 0, 127, 255, &dat2, 0, 255, 255,
382 Rast_add_f_color_rule(&dat1, 0, 255, 255, &dat2, 200, 255, 200,
385 dat2 = (FCELL)0.00001;
386 Rast_add_f_color_rule(&dat1, 200, 255, 200, &dat2, 255, 255, 0,
390 Rast_add_f_color_rule(&dat1, 255, 255, 0, &dat2, 255, 127, 0,
394 Rast_add_f_color_rule(&dat1, 255, 127, 0, &dat2, 255, 0, 0,
397 dat2 = (FCELL)
amax1(c1max, c2max);
398 Rast_add_f_color_rule(&dat1, 255, 0, 0, &dat2, 155, 0, 20, &colors);
406 Rast_write_colors(params->
pcurv, maps, &colors);
408 fprintf(stderr,
"color map written\n");
410 Rast_quantize_fp_map_range(params->
pcurv, mapset, dat1, dat2,
412 (CELL)(dat2 *
MULT));
413 do_history(params->
pcurv, input, params);
423 Rast_write_colors(params->
tcurv, maps, &colors);
424 Rast_quantize_fp_map_range(params->
tcurv, mapset, dat1, dat2,
426 (CELL)(dat2 *
MULT));
428 do_history(params->
tcurv, input, params);
438 Rast_write_colors(params->
mcurv, maps, &colors);
439 Rast_quantize_fp_map_range(params->
mcurv, mapset, dat1, dat2,
441 (CELL)(dat2 *
MULT));
443 do_history(params->
mcurv, input, params);
454 Rast_short_history(params->
elev,
"raster", &hist);
457 Rast_append_format_history(&hist,
"tension=%f, smoothing=%s",
458 params->
fi * 1000. / (*dnorm), smooth);
460 Rast_append_format_history(&hist,
"tension=%f",
461 params->
fi * 1000. / (*dnorm));
463 Rast_append_format_history(&hist,
"dnorm=%f, zmult=%f", *dnorm,
465 Rast_append_format_history(&hist,
"KMAX=%d, KMIN=%d, errtotal=%f",
467 sqrt(ertot / n_points));
468 Rast_append_format_history(&hist,
"zmin_data=%f, zmax_data=%f", zmin,
470 Rast_append_format_history(&hist,
"zmin_int=%f, zmax_int=%f", zminac,
473 Rast_format_history(&hist, HIST_DATSRC_1,
"raster map %s", input);
475 Rast_write_history(params->
elev, &hist);
477 Rast_free_history(&hist);
482 Rast_set_output_window(winhd);