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