GRASS GIS 8 Programmer's Manual  8.5.0dev(2024)-77aab223bc
interpf.h File Reference
#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>
Include dependency graph for interpf.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 BMIL_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_pntsPnts
 
struct line_catsCats2
 
dbDriverdriver2
 
dbString sql2
 
struct Map_info Map2
 
struct field_infoff
 
int count
 

Typedef Documentation

◆ check_points_fn

typedef int check_points_fn(struct interp_params *, struct quaddata *, double *, double *, double, double, struct triple *)

Definition at line 52 of file interpf.h.

◆ grid_calc_fn

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)

Definition at line 44 of file interpf.h.

◆ interp_fn

typedef double interp_fn(double, double)

Definition at line 59 of file interpf.h.

◆ interpder_fn

typedef int interpder_fn(double, double, double *, double *)

Definition at line 61 of file interpf.h.

◆ matrix_create_fn

typedef int matrix_create_fn(struct interp_params *, struct triple *, int, double **, int *)

Definition at line 49 of file interpf.h.

◆ secpar_fn

typedef int secpar_fn(struct interp_params *, int, int, int, struct BM *, double *, double *, double *, double *, double *, double *, int, int)

Definition at line 55 of file interpf.h.

◆ wr_temp_fn

typedef int wr_temp_fn(struct interp_params *, int, int, off_t)

Definition at line 63 of file interpf.h.

Function Documentation

◆ amax1()

double amax1 ( double  arg1,
double  arg2 
)

Definition at line 52 of file minmax.c.

Referenced by IL_secpar_loop_2d().

◆ amin1()

double amin1 ( double  arg1,
double  arg2 
)

Definition at line 65 of file minmax.c.

Referenced by IL_secpar_loop_2d().

◆ IL_check_at_points_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.

Todo:
Alternative description: ...calculate the maximum and RMS deviation caused by smoothing.
Parameters
datacurrent region
bsolution of linear equations
ertottotal error
zminmin z-value

Definition at line 52 of file point2d.c.

◆ IL_check_at_points_2d_cvdev()

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.

Parameters
paramsinterpolation parameters
datadata in the segment for computing, NULL for writing out
bsolution of linear equations for computing, NULL for writing out
ertottotal error for computing, point at single point for writing out
zminmin z-value for computing
dnormnormalization factor for computing
target_pointpoint for computing or writing out
Returns
1
Todo:
Alternative description: ...calculate the maximum and RMS deviation caused by smoothing.
Parameters
datacurrent region
bsolution of linear equations
ertottotal error
zminmin z-value

Definition at line 61 of file point2d_parallel.c.

◆ IL_create_bitmask()

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().

◆ IL_crst()

double IL_crst ( double  r,
double  fi 
)

Radial basis function

Radial basis function - completely regularized spline with tension (d=2)

Parameters
rdistance squared
fitension

Definition at line 46 of file func2d.c.

References r.

◆ IL_crstg()

int IL_crstg ( double  r,
double  fi,
double *  gd1,
double *  gd2 
)

Function for calculating derivatives (d=2)

Derivatives of radial basis function - regularized spline with tension(d=2)

Parameters
rdistance squared
fitension
gd1G1(r)
gd2G2(r)

Definition at line 106 of file func2d.c.

References r, and x.

◆ IL_dist_square()

double IL_dist_square ( double *  pt1,
double *  pt2,
int  dim 
)

Definition at line 18 of file rst/interp_float/distance.c.

◆ IL_grid_calc_2d()

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   
)

◆ IL_init_func_2d()

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

Parameters
grid_fcalculates grid for given segment
matr_fcreates matrix for a given segment
point_fchecks interpolation function at points
secp_fcalculates aspect, slope, curvature
interp_fradial basis function
interpder_fderivatives of radial basis function
temp_fwrites 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.

◆ IL_init_params_2d()

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

Parameters
inpinput stream
elattwhich fp att in sites file? 1 = first
smattwhich fp att in sites file to use for smoothing? (if zero use sm) 1 = first
zmmultiplier for z-values
k1min number of points per segment for interpolation
k2max number of points per segment
mskname of mask
colsnumber of rows and columns
ar6arrays for interpolated values (ar1-ar6)
tensiontension
k3max number of points for interpolation
sc3multipliers for interpolation values
smsmoothing
f6output files (f1-f6)
dmmin distance between points
x_orx of origin
y_ory of origin
der1 if compute partial derivatives
tetanisotropy angle (0 is East, counter-clockwise)
sclanisotropy scaling factor
t6temp files for writing interp. values (t1-t6)
create_devicreate deviations file?
ccross validation
wheresqlSQL WHERE statement

Definition at line 29 of file init2d.c.

◆ IL_input_data_2d()

int IL_input_data_2d ( struct interp_params ,
struct tree_info ,
double *  ,
double *  ,
double *  ,
double *  ,
double *  ,
double *  ,
int *   
)

◆ IL_interp_segments_2d()

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:

  • finding points from neighbouring segments so that the total number of points is between KMIN and KMAX2 by calling tree function MT_get_region().
  • creating and solving the system of linear equations using these points and interp() by calling matrix_create() and G_ludcmp().
  • checking the interpolating function values at points by calling check_points().
  • computing grid for this segment using points and interp() by calling grid_calc().
Todo:
Isn't this in fact the updated version of the function (IL_interp_segments_new_2d)? The function IL_interp_segments_new_2d has the following, better behavior: The difference between this function and IL_interp_segments_2d() is making sure that additional points are taken from all directions, i.e. it finds equal number of points from neighboring segments in each of 8 neighborhoods.
Parameters
infoinfo for the quad tree
treecurrent leaf of the quad tree
bitmaskbitmask
zmaxmin and max input z-values
zmaxacmin and max interp. z-values
gmaxmin and max inperp. slope val.
c1maxmin and max interp. curv. val.
c2maxmin and max interp. curv. val.
ertottotal interplating func. error
totsegmtotal number of segments
offset1offset for temp file writing

Definition at line 46 of file segmen2d.c.

◆ IL_interp_segments_2d_parallel()

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.

Parameters
infoinfo for the quad tree
treecurrent leaf of the quad tree
bitmaskbitmask
zmaxmin and max input z-values
zmaxacmin and max interp. z-values
gmaxmin and max inperp. slope val.
c1maxmin and max interp. curv. val.
c2maxmin and max interp. curv. val.
ertottotal interplating func. error
totsegmtotal number of segments
offset1offset for temp file writing

Definition at line 36 of file segmen2d_parallel.c.

References b, and NULL.

◆ IL_interp_segments_new_2d()

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   
)

◆ IL_matrix_create()

int IL_matrix_create ( struct interp_params params,
struct triple points,
int  n_points,
double **  matrix,
int *  indx 
)
Author
Lubos Mitas (original program and various modifications)
H. Mitasova, I. Kosinovsky, D. Gerdes, D. McCauley (GRASS4.1 version of the program and GRASS4.2 modifications)
L. Mitas, H. Mitasova, I. Kosinovsky, D.Gerdes, D. McCauley (1993, 1995)
modified by McCauley in August 1995
modified by Mitasova in August 1995, Nov. 1996

Definition at line 37 of file matrix.c.

◆ IL_matrix_create_alloc()

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()

Parameters
paramsstruct interp_params *
pointspoints for interpolation as struct triple
n_pointsnumber of points
[out]matrixthe matrix
indx
Returns
-1 on failure, 1 on success

Definition at line 69 of file matrix.c.

◆ IL_output_2d()

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   
)

◆ IL_resample_interp_segments_2d()

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.

◆ IL_resample_output_2d()

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   
)

◆ IL_secpar_loop_2d()

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.

Parameters
ngstcstarting column
nszcending column
kcurrent row
c2maxmin,max interp. values
cond2determine 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.

◆ IL_vector_input_data_2d()

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):

  • z coordinates in 3D file -> field = 0
  • categories -> field > 0, zcol = NULL
  • attributes -> field > 0, zcol != NULL
Parameters
paramsinterpolation parameters
Mapinput vector map
fieldcategory field number
zcolname of the column containing z values
scolname of the column containing smooth values
infoquadtree info
n_pointsnumber of points used for interpolation
dmaxmax distance between points

Definition at line 50 of file vinput2d.c.

◆ IL_write_point_2d()

int IL_write_point_2d ( struct triple  point,
double  err 
)

A function to write out point and deviation at point to database.

Parameters
pointpoint to write out
errordeviation at point
Returns
1

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.

◆ IL_write_temp_2d()

int IL_write_temp_2d ( struct interp_params params,
int  ngstc,
int  nszc,
off_t  offset2 
)

◆ max1()

int max1 ( int  arg1,
int  arg2 
)

Definition at line 30 of file minmax.c.

◆ min1()

int min1 ( int  arg1,
int  arg2 
)

Definition at line 17 of file minmax.c.

◆ process_point()

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.

◆ smallest_segment()

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().

◆ translate_quad()

int translate_quad ( struct multtree tree,
double  numberx,
double  numbery,
double  numberz,
int  n_leafs 
)

Variable Documentation

◆ Cats2

struct line_cats* Cats2
extern

Referenced by IL_write_point_2d().

◆ count

int count
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_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().

◆ driver2

dbDriver* driver2
extern

Referenced by IL_write_point_2d().

◆ ff

struct field_info* ff
extern

Referenced by IL_write_point_2d().

◆ Map2

struct Map_info Map2
extern

Referenced by IL_write_point_2d().

◆ Pnts

struct line_pnts* Pnts
extern

Referenced by IL_write_point_2d().

◆ sql2

dbString sql2
extern

Referenced by IL_write_point_2d().