GRASS GIS 8 Programmer's Manual
8.5.0dev(2024)-36359e2344
|
#include <grass/config.h>
#include <stdio.h>
#include <grass/gis.h>
#include <grass/raster.h>
#include <grass/vector.h>
#include <grass/bitmap.h>
#include <grass/dataquad.h>
#include <grass/qtree.h>
#include <grass/dbmi.h>
Go to the source code of this file.
Data Structures | |
struct | fcell_triple |
struct | interp_params |
Typedefs | |
typedef int | grid_calc_fn(struct interp_params *, struct quaddata *, struct BM *, double, double, double *, double *, double *, double *, double *, double *, double *, double *, double *, double *, off_t, double) |
typedef int | matrix_create_fn(struct interp_params *, struct triple *, int, double **, int *) |
typedef int | check_points_fn(struct interp_params *, struct quaddata *, double *, double *, double, double, struct triple *) |
typedef int | secpar_fn(struct interp_params *, int, int, int, struct BM *, double *, double *, double *, double *, double *, double *, int, int) |
typedef double | interp_fn(double, double) |
typedef int | interpder_fn(double, double, double *, double *) |
typedef int | wr_temp_fn(struct interp_params *, int, int, off_t) |
Functions | |
double | IL_dist_square (double *, double *, int) |
double | IL_crst (double, double) |
int | IL_crstg (double, double, double *, double *) |
void | IL_init_params_2d (struct interp_params *, FILE *, int, int, double, int, int, char *, int, int, DCELL *, DCELL *, DCELL *, DCELL *, DCELL *, DCELL *, double, int, int, int, int, double, char *, char *, char *, char *, char *, char *, double, double, double, int, double, double, FILE *, FILE *, FILE *, FILE *, FILE *, FILE *, bool, struct TimeStamp *, int, const char *) |
void | IL_init_func_2d (struct interp_params *, grid_calc_fn *, matrix_create_fn *, check_points_fn *, secpar_fn *, interp_fn *, interpder_fn *, wr_temp_fn *) |
int | IL_input_data_2d (struct interp_params *, struct tree_info *, double *, double *, double *, double *, double *, double *, int *) |
struct BM * | IL_create_bitmask (struct interp_params *) |
int | translate_quad (struct multtree *, double, double, double, int) |
int | IL_grid_calc_2d (struct interp_params *, struct quaddata *, struct BM *, double, double, double *, double *, double *, double *, double *, double *, double *, double *, double *, double *, off_t, double) |
int | IL_matrix_create (struct interp_params *, struct triple *, int, double **, int *) |
int | IL_matrix_create_alloc (struct interp_params *, struct triple *, int, double **, int *, double *) |
Creates system of linear equations from interpolated points. More... | |
int | min1 (int, int) |
int | max1 (int, int) |
double | amax1 (double, double) |
double | amin1 (double, double) |
int | IL_interp_segments_new_2d (struct interp_params *, struct tree_info *, struct multtree *, struct BM *, double, double, double *, double *, double *, double *, double *, double *, double *, double *, double *, int, int, double) |
int | IL_output_2d (struct interp_params *, struct Cell_head *, double, double, double, double, double, double, double, double, double, double, double, char *, double, int, int, int) |
int | IL_check_at_points_2d (struct interp_params *, struct quaddata *, double *, double *, double, double, struct triple *) |
int | IL_write_point_2d (struct triple, double) |
A function to write out point and deviation at point to database. More... | |
int | IL_check_at_points_2d_cvdev (struct interp_params *, struct quaddata *, double *, double *, double, double, struct triple *) |
A parallel version of IL_check_at_points_2d. Sperate the cross-validation/deviation computing part and the database writing part. More... | |
int | IL_resample_output_2d (struct interp_params *, double, double, double, double, double, double, double, double, double, double, double, char *, double *, struct Cell_head *, struct Cell_head *, char *, int) |
int | IL_resample_interp_segments_2d (struct interp_params *, struct BM *, double, double, double *, double *, double *, double *, double *, double *, double *, double *, double *, off_t, double *, int, int, int, int, int, double, double, double, double, int) |
int | IL_secpar_loop_2d (struct interp_params *, int, int, int, struct BM *, double *, double *, double *, double *, double *, double *, int, int) |
double | smallest_segment (struct multtree *, int) |
int | IL_interp_segments_2d (struct interp_params *, struct tree_info *, struct multtree *, struct BM *, double, double, double *, double *, double *, double *, double *, double *, double *, double *, double *, int, off_t, double) |
int | IL_interp_segments_2d_parallel (struct interp_params *, struct tree_info *, struct multtree *, struct BM *, double, double, double *, double *, double *, double *, double *, double *, double *, double *, double *, int, off_t, double, int) |
int | IL_vector_input_data_2d (struct interp_params *, struct Map_info *, int, char *, char *, struct tree_info *, double *, double *, double *, double *, double *, double *, int *, double *) |
int | process_point (double, double, double, double, struct tree_info *, double, double *, double *, double *, double *, double *, double *, int *, int *, int *) |
int | IL_write_temp_2d (struct interp_params *, int, int, off_t) |
Variables | |
struct line_pnts * | Pnts |
struct line_cats * | Cats2 |
dbDriver * | driver2 |
dbString | sql2 |
struct Map_info | Map2 |
struct field_info * | ff |
int | count |
typedef int check_points_fn(struct interp_params *, struct quaddata *, double *, double *, double, double, struct triple *) |
typedef int grid_calc_fn(struct interp_params *, struct quaddata *, struct BM *, double, double, double *, double *, double *, double *, double *, double *, double *, double *, double *, double *, off_t, double) |
typedef int interpder_fn(double, double, double *, double *) |
typedef int matrix_create_fn(struct interp_params *, struct triple *, int, double **, int *) |
typedef int secpar_fn(struct interp_params *, int, int, int, struct BM *, double *, double *, double *, double *, double *, double *, int, int) |
typedef int wr_temp_fn(struct interp_params *, int, int, off_t) |
double amax1 | ( | double | arg1, |
double | arg2 | ||
) |
Definition at line 52 of file minmax.c.
Referenced by IL_secpar_loop_2d().
double amin1 | ( | double | arg1, |
double | arg2 | ||
) |
Definition at line 65 of file minmax.c.
Referenced by IL_secpar_loop_2d().
int IL_check_at_points_2d | ( | struct interp_params * | params, |
struct quaddata * | data, | ||
double * | b, | ||
double * | ertot, | ||
double | zmin, | ||
double | dnorm, | ||
struct triple * | skip_point | ||
) |
Checks if interpolating function interp() evaluates correct z-values at given points. If smoothing is used calculate the maximum error caused by smoothing.
ertot is a RMS deviation of the interpolated surface.
data | current region |
b | solution of linear equations |
ertot | total error |
zmin | min z-value |
int IL_check_at_points_2d_cvdev | ( | struct interp_params * | params, |
struct quaddata * | data, | ||
double * | b, | ||
double * | ertot, | ||
double | zmin, | ||
double | dnorm, | ||
struct triple * | target_point | ||
) |
A parallel version of IL_check_at_points_2d. Sperate the cross-validation/deviation computing part and the database writing part.
params | interpolation parameters |
data | data in the segment for computing, NULL for writing out |
b | solution of linear equations for computing, NULL for writing out |
ertot | total error for computing, point at single point for writing out |
zmin | min z-value for computing |
dnorm | normalization factor for computing |
target_point | point for computing or writing out |
data | current region |
b | solution of linear equations |
ertot | total error |
zmin | min z-value |
Definition at line 61 of file point2d_parallel.c.
struct BM* IL_create_bitmask | ( | struct interp_params * | params | ) |
Creates a bitmap mask from given raster map
Creates a bitmap mask from maskmap raster file and/or current MASK if present and returns a pointer to the bitmask. If no mask is in force returns NULL.
Definition at line 37 of file input2d.c.
References _, BM_create(), BM_set(), G_fatal_error(), G_find_raster2(), G_message(), interp_params::maskmap, interp_params::nsizc, interp_params::nsizr, NULL, Rast_allocate_c_buf(), Rast_close(), Rast_get_c_row(), Rast_is_c_null_value, Rast_maskfd(), and Rast_open_old().
double IL_crst | ( | double | r, |
double | fi | ||
) |
int IL_crstg | ( | double | r, |
double | fi, | ||
double * | gd1, | ||
double * | gd2 | ||
) |
double IL_dist_square | ( | double * | pt1, |
double * | pt2, | ||
int | dim | ||
) |
Definition at line 18 of file rst/interp_float/distance.c.
int IL_grid_calc_2d | ( | struct interp_params * | , |
struct quaddata * | , | ||
struct BM * | , | ||
double | , | ||
double | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
off_t | , | ||
double | |||
) |
void IL_init_func_2d | ( | struct interp_params * | params, |
grid_calc_fn * | grid_f, | ||
matrix_create_fn * | matr_f, | ||
check_points_fn * | point_f, | ||
secpar_fn * | secp_f, | ||
interp_fn * | interp_f, | ||
interpder_fn * | interpder_f, | ||
wr_temp_fn * | temp_f | ||
) |
Initializes functions used by the library
grid_f | calculates grid for given segment |
matr_f | creates matrix for a given segment |
point_f | checks interpolation function at points |
secp_f | calculates aspect, slope, curvature |
interp_f | radial basis function |
interpder_f | derivatives of radial basis function |
temp_f | writes temp files |
Definition at line 106 of file init2d.c.
References interp_params::check_points, interp_params::grid_calc, interp_params::interp, interp_params::interpder, interp_params::matrix_create, interp_params::secpar, and interp_params::wr_temp.
void IL_init_params_2d | ( | struct interp_params * | params, |
FILE * | inp, | ||
int | elatt, | ||
int | smatt, | ||
double | zm, | ||
int | k1, | ||
int | k2, | ||
char * | msk, | ||
int | rows, | ||
int | cols, | ||
DCELL * | ar1, | ||
DCELL * | ar2, | ||
DCELL * | ar3, | ||
DCELL * | ar4, | ||
DCELL * | ar5, | ||
DCELL * | ar6, | ||
double | tension, | ||
int | k3, | ||
int | sc1, | ||
int | sc2, | ||
int | sc3, | ||
double | sm, | ||
char * | f1, | ||
char * | f2, | ||
char * | f3, | ||
char * | f4, | ||
char * | f5, | ||
char * | f6, | ||
double | dm, | ||
double | x_or, | ||
double | y_or, | ||
int | der, | ||
double | tet, | ||
double | scl, | ||
FILE * | t1, | ||
FILE * | t2, | ||
FILE * | t3, | ||
FILE * | t4, | ||
FILE * | t5, | ||
FILE * | t6, | ||
bool | create_devi, | ||
struct TimeStamp * | ts, | ||
int | c, | ||
const char * | wheresql | ||
) |
Initializes parameters used by the library
inp | input stream |
elatt | which fp att in sites file? 1 = first |
smatt | which fp att in sites file to use for smoothing? (if zero use sm) 1 = first |
zm | multiplier for z-values |
k1 | min number of points per segment for interpolation |
k2 | max number of points per segment |
msk | name of mask |
cols | number of rows and columns |
ar6 | arrays for interpolated values (ar1-ar6) |
tension | tension |
k3 | max number of points for interpolation |
sc3 | multipliers for interpolation values |
sm | smoothing |
f6 | output files (f1-f6) |
dm | min distance between points |
x_or | x of origin |
y_or | y of origin |
der | 1 if compute partial derivatives |
tet | anisotropy angle (0 is East, counter-clockwise) |
scl | anisotropy scaling factor |
t6 | temp files for writing interp. values (t1-t6) |
create_devi | create deviations file? |
c | cross validation |
wheresql | SQL WHERE statement |
int IL_input_data_2d | ( | struct interp_params * | , |
struct tree_info * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
int * | |||
) |
int IL_interp_segments_2d | ( | struct interp_params * | params, |
struct tree_info * | info, | ||
struct multtree * | tree, | ||
struct BM * | bitmask, | ||
double | zmin, | ||
double | zmax, | ||
double * | zminac, | ||
double * | zmaxac, | ||
double * | gmin, | ||
double * | gmax, | ||
double * | c1min, | ||
double * | c1max, | ||
double * | c2min, | ||
double * | c2max, | ||
double * | ertot, | ||
int | totsegm, | ||
off_t | offset1, | ||
double | dnorm | ||
) |
Interpolate recursively a tree of segments
Recursively processes each segment in a tree by:
info | info for the quad tree |
tree | current leaf of the quad tree |
bitmask | bitmask |
zmax | min and max input z-values |
zmaxac | min and max interp. z-values |
gmax | min and max inperp. slope val. |
c1max | min and max interp. curv. val. |
c2max | min and max interp. curv. val. |
ertot | total interplating func. error |
totsegm | total number of segments |
offset1 | offset for temp file writing |
Definition at line 46 of file segmen2d.c.
int IL_interp_segments_2d_parallel | ( | struct interp_params * | params, |
struct tree_info * | info, | ||
struct multtree * | tree, | ||
struct BM * | bitmask, | ||
double | zmin, | ||
double | zmax, | ||
double * | zminac, | ||
double * | zmaxac, | ||
double * | gmin, | ||
double * | gmax, | ||
double * | c1min, | ||
double * | c1max, | ||
double * | c2min, | ||
double * | c2max, | ||
double * | ertot, | ||
int | totsegm, | ||
off_t | offset1, | ||
double | dnorm, | ||
int | threads | ||
) |
See documentation for IL_interp_segments_2d. This is a parallel processing implementation.
info | info for the quad tree |
tree | current leaf of the quad tree |
bitmask | bitmask |
zmax | min and max input z-values |
zmaxac | min and max interp. z-values |
gmax | min and max inperp. slope val. |
c1max | min and max interp. curv. val. |
c2max | min and max interp. curv. val. |
ertot | total interplating func. error |
totsegm | total number of segments |
offset1 | offset for temp file writing |
Definition at line 36 of file segmen2d_parallel.c.
int IL_interp_segments_new_2d | ( | struct interp_params * | , |
struct tree_info * | , | ||
struct multtree * | , | ||
struct BM * | , | ||
double | , | ||
double | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
double * | , | ||
int | , | ||
int | , | ||
double | |||
) |
int IL_matrix_create | ( | struct interp_params * | params, |
struct triple * | points, | ||
int | n_points, | ||
double ** | matrix, | ||
int * | indx | ||
) |
int IL_matrix_create_alloc | ( | struct interp_params * | params, |
struct triple * | points, | ||
int | n_points, | ||
double ** | matrix, | ||
int * | indx, | ||
double * | A | ||
) |
Creates system of linear equations from interpolated points.
Creates system of linear equations represented by matrix using given points and interpolating function interp()
params | struct interp_params * | |
points | points for interpolation as struct triple | |
n_points | number of points | |
[out] | matrix | the matrix |
indx |
int IL_output_2d | ( | struct interp_params * | , |
struct Cell_head * | , | ||
double | , | ||
double | , | ||
double | , | ||
double | , | ||
double | , | ||
double | , | ||
double | , | ||
double | , | ||
double | , | ||
double | , | ||
double | , | ||
char * | , | ||
double | , | ||
int | , | ||
int | , | ||
int | |||
) |
int IL_resample_interp_segments_2d | ( | struct interp_params * | params, |
struct BM * | bitmask, | ||
double | zmin, | ||
double | zmax, | ||
double * | zminac, | ||
double * | zmaxac, | ||
double * | gmin, | ||
double * | gmax, | ||
double * | c1min, | ||
double * | c1max, | ||
double * | c2min, | ||
double * | c2max, | ||
double * | ertot, | ||
off_t | offset1, | ||
double * | dnorm, | ||
int | overlap, | ||
int | inp_rows, | ||
int | inp_cols, | ||
int | fdsmooth, | ||
int | fdinp, | ||
double | ns_res, | ||
double | ew_res, | ||
double | inp_ns_res, | ||
double | inp_ew_res, | ||
int | dtens | ||
) |
Definition at line 33 of file ressegm2d.c.
References l.
int IL_resample_output_2d | ( | struct interp_params * | , |
double | , | ||
double | , | ||
double | , | ||
double | , | ||
double | , | ||
double | , | ||
double | , | ||
double | , | ||
double | , | ||
double | , | ||
double | , | ||
char * | , | ||
double * | , | ||
struct Cell_head * | , | ||
struct Cell_head * | , | ||
char * | , | ||
int | |||
) |
int IL_secpar_loop_2d | ( | struct interp_params * | params, |
int | ngstc, | ||
int | nszc, | ||
int | k, | ||
struct BM * | bitmask, | ||
double * | gmin, | ||
double * | gmax, | ||
double * | c1min, | ||
double * | c1max, | ||
double * | c2min, | ||
double * | c2max, | ||
int | cond1, | ||
int | cond2 | ||
) |
Compute slope aspect and curvatures
Computes slope, aspect and curvatures (depending on cond1, cond2) for derivative arrays adx,...,adxy between columns ngstc and nszc.
ngstc | starting column |
nszc | ending column |
k | current row |
c2max | min,max interp. values |
cond2 | determine if particular values need to be computed |
Definition at line 34 of file secpar2d.c.
References interp_params::adx, interp_params::adxx, interp_params::adxy, interp_params::ady, interp_params::adyy, amax1(), amin1(), BM_get(), M_R2D, and NULL.
int IL_vector_input_data_2d | ( | struct interp_params * | params, |
struct Map_info * | Map, | ||
int | field, | ||
char * | zcol, | ||
char * | scol, | ||
struct tree_info * | info, | ||
double * | xmin, | ||
double * | xmax, | ||
double * | ymin, | ||
double * | ymax, | ||
double * | zmin, | ||
double * | zmax, | ||
int * | n_points, | ||
double * | dmax | ||
) |
Insert into a quad tree
Inserts input data inside the region into a quad tree. Also translates data. Returns number of segments in the quad tree.
As z values may be used (in Map):
params | interpolation parameters |
Map | input vector map |
field | category field number |
zcol | name of the column containing z values |
scol | name of the column containing smooth values |
info | quadtree info |
n_points | number of points used for interpolation |
dmax | max distance between points |
Definition at line 50 of file vinput2d.c.
int IL_write_point_2d | ( | struct triple | point, |
double | err | ||
) |
A function to write out point and deviation at point to database.
point | point to write out |
error | deviation at point |
Definition at line 164 of file point2d.c.
References Cats2, count, db_append_string(), db_close_database(), db_execute_immediate(), db_get_string(), DB_OK, db_shutdown_driver(), db_zero_string(), driver2, err(), ff, G_debug(), G_fatal_error(), GV_POINT, Map2, Pnts, sql2, field_info::table, Vect_append_point(), Vect_cat_set(), Vect_reset_cats(), Vect_reset_line(), Vect_write_line(), triple::x, triple::y, and triple::z.
int IL_write_temp_2d | ( | struct interp_params * | params, |
int | ngstc, | ||
int | nszc, | ||
off_t | offset2 | ||
) |
Writes az,adx,...,adxy into appropriate place (depending on ngstc, nszc and offset) in corresponding temp file
ngstc | begin. column |
nszc | end. column |
offset2 | offset |
Definition at line 34 of file write2d.c.
References _, interp_params::adx, interp_params::adxx, interp_params::adxy, interp_params::ady, interp_params::adyy, interp_params::az, interp_params::deriv, G_fatal_error(), G_fseek(), G_malloc, interp_params::nsizc, NULL, interp_params::scik1, interp_params::scik2, interp_params::scik3, interp_params::Tmp_fd_dx, interp_params::Tmp_fd_dy, interp_params::Tmp_fd_xx, interp_params::Tmp_fd_xy, interp_params::Tmp_fd_yy, and interp_params::Tmp_fd_z.
int process_point | ( | double | x, |
double | y, | ||
double | z, | ||
double | sm, | ||
struct tree_info * | info, | ||
double | zmult, | ||
double * | xmin, | ||
double * | xmax, | ||
double * | ymin, | ||
double * | ymax, | ||
double * | zmin, | ||
double * | zmax, | ||
int * | npoint, | ||
int * | OUTRANGE, | ||
int * | total | ||
) |
Definition at line 306 of file vinput2d.c.
double smallest_segment | ( | struct multtree * | tree, |
int | n_leafs | ||
) |
Definition at line 338 of file segmen2d.c.
References multtree::data, multtree::leafs, NULL, smallest_segment(), and quaddata::xmax.
Referenced by smallest_segment().
int translate_quad | ( | struct multtree * | tree, |
double | numberx, | ||
double | numbery, | ||
double | numberz, | ||
int | n_leafs | ||
) |
Definition at line 90 of file input2d.c.
References multtree::data, multtree::leafs, quaddata::n_points, NULL, quaddata::points, x, quaddata::x_orig, quaddata::xmax, quaddata::y_orig, and quaddata::ymax.
|
extern |
Referenced by IL_write_point_2d().
|
extern |
Referenced by BM_create_sparse(), c_ave(), c_count(), c_divr(), c_intr(), c_kurt(), c_skew(), c_sum(), c_var(), D_font_info(), D_font_list(), db__recv_double_array(), db__recv_float_array(), db__recv_index_array(), db__recv_int_array(), db__recv_short_array(), db__send_index_array(), db_alloc_dirent_array(), db_alloc_handle_array(), db_alloc_index_array(), db_d_append_error(), db_d_list_indexes(), db_d_list_tables(), db_dirent(), db_drop_token(), db_find_token(), db_free_dirent_array(), db_free_handle_array(), db_free_index_array(), db_list_indexes(), db_list_tables(), db_new_token(), db_table_exists(), G__read_Cell_head(), G_asprintf(), G_list(), G_rasprintf(), G_snprintf(), G_str_to_sql(), G_switch_search_path(), G_vasprintf(), GPJ_get_default_datum_params_by_name(), I_free_signatures_list(), I_SigSetNClasses(), IL_write_point_2d(), mm_register_init::mm_register_init(), N_les_integrate_dirichlet_2d(), N_les_integrate_dirichlet_3d(), NetA_betweenness_closeness(), NetA_init_distinct(), Rast__convert_01_flags(), Rast__convert_flags_01(), Rast_add_histogram(), Rast_extend_histogram(), Rast_get_next_marked_c_cat(), Rast_get_next_marked_cat(), Rast_get_next_marked_d_cat(), Rast_get_next_marked_f_cat(), Rast_histogram_eq(), Rast_histogram_eq_colors(), Rast_make_histogram_cs(), Rast_read_histogram(), Rast_read_range(), Rast_read_rstats(), Rast_row_repeat_nomask(), Rast_set_histogram(), Rast_write_histogram_cs(), Rast_write_rstats(), w_ave(), w_count(), w_kurt(), w_skew(), w_sum(), w_var(), and mm_register_init::~mm_register_init().
|
extern |
Referenced by IL_write_point_2d().
|
extern |
Referenced by IL_write_point_2d().
|
extern |
Referenced by IL_write_point_2d().
|
extern |
Referenced by IL_write_point_2d().
|
extern |
Referenced by IL_write_point_2d().