GRASS 8 Programmer's Manual 8.5.0(2026)-8d6ceba290
Loading...
Searching...
No Matches
lidar.h
Go to the documentation of this file.
1/***********************************************************************
2 *
3 * MODULE: lidarlib
4 *
5 * AUTHOR(S): Roberto Antolin
6 *
7 * PURPOSE: LIDAR library
8 *
9 * COPYRIGHT: (C) 2006 by Politecnico di Milano -
10 * Polo Regionale di Como
11 *
12 * This program is free software under the
13 * GNU General Public License (>=v2).
14 * Read the file COPYING that comes with GRASS
15 * for details.
16 *
17 **************************************************************************/
18
19#ifndef _POLIMIFUNCT_H_
20#define _POLIMIFUNCT_H_
21
22#include <grass/gis.h>
23#include <grass/gmath.h>
24#include <grass/vector.h>
25#include <grass/dbmi.h>
26#include <grass/raster.h>
27#include <grass/segment.h>
28#include <grass/glocale.h>
29
30/*----------------------------------------------------------------------------------------------------------*/
31/*CONSTANTS DECLARATION */
32
33#define NSPLX_MAX \
34 150 /* Maximum number of splines along East direction used in the \
35 subregions interpolation */
36#define NSPLY_MAX \
37 150 /* Maximum number of splines along North direction used in the \
38 subregions interpolation */
39#define OVERLAP_SIZE 10 /* Subregions overlapping size. */
40#define LATO 1000 /* Side's size for v.lidar.growing. */
41#define CONTOUR 15 /**/
42#define GENERAL_ROW 0
43#define GENERAL_COLUMN 1
44#define FIRST_ROW 2
45#define LAST_ROW 3
46#define FIRST_COLUMN 4
47#define LAST_COLUMN 5
48/* FIELDS ID */
49#define F_EDGE_DETECTION_CLASS 1
50#define F_CLASSIFICATION 2
51#define F_INTERPOLATION 3
52#define F_COUNTER_OBJ 4
53/* PRE-CLASSIFICATION */
54#define PRE_TERRAIN 1
55#define PRE_EDGE 2
56#define PRE_UNKNOWN 3
57/* FINAL CLASSIFICATION */
58#define TERRAIN_SINGLE 1
59#define TERRAIN_DOUBLE 2
60#define OBJECT_DOUBLE 3
61#define OBJECT_SINGLE 4
62/* SINGLE OR DOUBLE PULSE */
63#define SINGLE_PULSE 1
64#define DOUBLE_PULSE 2
65/* INTERPOLATOR */
66#define P_BILINEAR 1
67#define P_BICUBIC 0
68
69/*----------------------------------------------------------------------------------------------------------*/
70/*STRUCTS DECLARATION */
71struct Reg_dimens {
72 double edge_h; /*Horizontal tile edge */
73 double edge_v; /*Vertical tile edge */
74 double overlap; /*Tile's overlapping size */
75 double sn_size; /*South-North side size */
76 double ew_size; /*East-West side size */
77};
78
79struct Point {
80 double coordX;
81 double coordY;
82 double coordZ;
83 int lineID;
84 int cat;
85};
86
87struct element {
88 double value;
89 double residual;
90 int freq;
91};
92
93/*----------------------------------------------------------------------------------------------------------*/
94/*FUNCTIONS DECLARATION */
95/*zones */
96void P_zero_dim(struct Reg_dimens * /**/);
97int P_set_dim(struct Reg_dimens *, double, double, int *, int *);
98
99int P_set_regions(struct Cell_head *, /**/
100 struct bound_box *, /**/
101 struct bound_box *, /**/ struct Reg_dimens, /**/ int /**/);
102
103int P_get_edge(int, /**/ struct Reg_dimens *, /**/ double, /**/ double /**/);
104
105int P_get_BandWidth(int, /**/ int /**/);
106
107double P_estimate_splinestep(struct Map_info *, double *, double *);
108
109struct Point *P_Read_Vector_Region_Map(struct Map_info *, /**/
110 struct Cell_head *, /**/
111 int *, /**/ int, /**/ int /**/);
112
113struct Point *P_Read_Raster_Region_Map(SEGMENT *, /**/
114 struct Cell_head *, /**/
115 struct Cell_head *, /**/
116 int *, /**/ int /**/);
117
118double P_Mean_Calc(struct Cell_head *, /**/ struct Point *, /**/ int /**/);
119
120/*----------------------------------------------------------------------------------------------------------*/
121void P_Sparse_Points(struct Map_info *, /**/
122 struct Cell_head *, /**/
123 struct bound_box, /**/
124 struct bound_box, /**/
125 double **, /**/
126 double *, /**/
127 int *, /**/
128 double, /**/
129 double, /**/
130 double, /**/
131 int, /**/
132 int, /**/
133 int, /**/
134 int, /**/
135 struct line_cats *, /**/
136 dbDriver *, /**/ double, /**/ char * /**/);
137
138int P_Regular_Points(struct Cell_head *, /**/
139 struct Cell_head *, /**/
140 struct bound_box, /**/
141 struct bound_box, /**/
142 SEGMENT *, /**/
143 double *, /**/
144 double, /**/
145 double, /**/
146 double, /**/
147 double, /**/
148 int, /**/ int, /**/ int, /**/ int, /**/ int /**/);
149
150/*----------------------------------------------------------------------------------------------------------*/
151int P_Create_Aux2_Table(dbDriver *, /**/ char * /**/);
152
153int P_Create_Aux4_Table(dbDriver *, /**/ char * /**/);
154
155int P_Drop_Aux_Table(dbDriver *, /**/ char * /**/);
156
157/*----------------------------------------------------------------------------------------------------------*/
158void P_Aux_to_Raster(double **, /**/ int /**/);
159
160void P_Aux_to_Vector(struct Map_info *, /**/
161 struct Map_info *, /**/ dbDriver *, /**/ char * /**/);
162
163double **P_Null_Matrix(double ** /**/);
164
165/*---------------------------------------------------------------------------------------*/
166/*interpSpline */
167void normalDefBicubic(double **N, double *TN, double *Q, double **obsVect,
168 double deltaX, double deltaY, int xNum, int yNum,
169 double xMin, double yMin, int obsNum, int parNum, int BW);
170
171void normalDefBilin(double **N, double *TN, double *Q, double **obsVect,
172 double deltaX, double deltaY, int xNum, int yNum,
173 double xMin, double yMin, int obsNum, int parNum, int BW);
174
175void nCorrectLapl(double **N, /* Normal Matrix () */
176 double lambda, /* */
177 int xNum, /* */
178 int yNum, /* */
179 double deltaX, /* */
180 double deltaY); /* */
181
182void nCorrectGrad(double **N, double lambda, int xNum, int yNum, double deltaX,
183 double deltaY);
184
185void obsEstimateBicubic(double **obsV, /* */
186 double *obsE, /* */
187 double *parV, /* */
188 double deltX, /* */
189 double deltY, /* */
190 int xNm, /* */
191 int yNm, /* */
192 double xMi, /* */
193 double yMi, /* */
194 int obsN); /* */
195
196double dataInterpolateBicubic(double x, /* */
197 double y, /* */
198 double deltaX, /* */
199 double deltaY, /* */
200 int xNum, /* */
201 int yNum, /* */
202 double xMin, /* */
203 double yMin, /* */
204 double *parVect); /* */
205
206void obsEstimateBilin(double **obsV, double *obsE, double *parV, double deltX,
207 double deltY, int xNm, int yNm, double xMi, double yMi,
208 int obsN);
209
210double dataInterpolateBilin(double x, double y, double deltaX, double deltaY,
211 int xNum, int yNum, double xMin, double yMin,
212 double *parVect);
213
214#endif
double dataInterpolateBicubic(double x, double y, double deltaX, double deltaY, int xNum, int yNum, double xMin, double yMin, double *parVect)
void normalDefBicubic(double **N, double *TN, double *Q, double **obsVect, double deltaX, double deltaY, int xNum, int yNum, double xMin, double yMin, int obsNum, int parNum, int BW)
void normalDefBilin(double **N, double *TN, double *Q, double **obsVect, double deltaX, double deltaY, int xNum, int yNum, double xMin, double yMin, int obsNum, int parNum, int BW)
void obsEstimateBilin(double **obsV, double *obsE, double *parV, double deltX, double deltY, int xNm, int yNm, double xMi, double yMi, int obsN)
double dataInterpolateBilin(double x, double y, double deltaX, double deltaY, int xNum, int yNum, double xMin, double yMin, double *parVect)
void nCorrectGrad(double **N, double lambda, int xNum, int yNum, double deltaX, double deltaY)
void obsEstimateBicubic(double **obsV, double *obsE, double *parV, double deltX, double deltY, int xNm, int yNm, double xMi, double yMi, int obsN)
void nCorrectLapl(double **N, double lambda, int xNum, int yNum, double deltaX, double deltaY)
struct Point * P_Read_Vector_Region_Map(struct Map_info *, struct Cell_head *, int *, int, int)
Definition zones.c:322
int P_get_edge(int, struct Reg_dimens *, double, double)
Definition zones.c:196
struct Point * P_Read_Raster_Region_Map(SEGMENT *, struct Cell_head *, struct Cell_head *, int *, int)
Definition zones.c:387
int P_get_BandWidth(int, int)
Definition zones.c:218
void P_Aux_to_Raster(double **, int)
Definition zones.c:540
void P_zero_dim(struct Reg_dimens *)
Definition zones.c:9
void P_Aux_to_Vector(struct Map_info *, struct Map_info *, dbDriver *, char *)
Definition zones.c:565
int P_Create_Aux2_Table(dbDriver *, char *)
Definition zones.c:465
int P_Drop_Aux_Table(dbDriver *, char *)
Definition zones.c:529
int P_Regular_Points(struct Cell_head *, struct Cell_head *, struct bound_box, struct bound_box, SEGMENT *, double *, double, double, double, double, int, int, int, int, int)
int P_set_regions(struct Cell_head *, struct bound_box *, struct bound_box *, struct Reg_dimens, int)
Definition zones.c:53
double P_estimate_splinestep(struct Map_info *, double *, double *)
Definition zones.c:259
double ** P_Null_Matrix(double **)
double P_Mean_Calc(struct Cell_head *, struct Point *, int)
Definition zones.c:231
int P_Create_Aux4_Table(dbDriver *, char *)
Definition zones.c:493
void P_Sparse_Points(struct Map_info *, struct Cell_head *, struct bound_box, struct bound_box, double **, double *, int *, double, double, double, int, int, int, int, struct line_cats *, dbDriver *, double, char *)
Definition lidar/raster.c:9
int P_set_dim(struct Reg_dimens *, double, double, int *, int *)
Definition zones.c:117
Definition lidar.h:79
int cat
Definition lidar.h:84
int lineID
Definition lidar.h:83
double coordY
Definition lidar.h:81
double coordX
Definition lidar.h:80
double coordZ
Definition lidar.h:82
double edge_v
Definition lidar.h:73
double edge_h
Definition lidar.h:72
double ew_size
Definition lidar.h:76
double overlap
Definition lidar.h:74
double sn_size
Definition lidar.h:75
double residual
Definition lidar.h:89
double value
Definition lidar.h:88
int freq
Definition lidar.h:90
#define x