GRASS 8 Programmer's Manual 8.6.0dev(2026)-4bb960b182
Loading...
Searching...
No Matches
gis.h
Go to the documentation of this file.
1/******************************************************************************
2 *
3 * MODULE: Grass Include Files
4 * AUTHOR(S): Original author unknown - probably CERL
5 * Justin Hickey - Thailand - jhickey@hpcc.nectec.or.th
6 * PURPOSE: This file contains definitions of variables and data types
7 * for use with most, if not all, Grass programs. This file is
8 * usually included in every Grass program.
9 * SPDX-FileCopyrightText: 2000-2026 GRASS Development Team
10 * SPDX-License-Identifier: GPL-2.0-or-later
11 *
12 *****************************************************************************/
13
14#ifndef GRASS_GIS_H
15#define GRASS_GIS_H
16
17/*============================= Include Files ==============================*/
18
19/* System include files */
20#include <stdio.h>
21#include <stdarg.h>
22
23/* Grass and local include files */
24#include <grass/config.h>
25#include <grass/datetime.h>
26#include <grass/version.h>
27
28/*=========================== Constants/Defines ============================*/
29
30#if !defined __GNUC__ || __GNUC__ < 2
31#undef __attribute__
32#define __attribute__(x)
33#endif
34
35/*!
36 \def G_UNUSED
37 \brief A macro for an attribute, if attached to a variable,
38 indicating that the variable is not used
39*/
40#if (defined(__GNUC__) || defined(__APPLE__)) && !defined(_MSC_VER)
41#define G_UNUSED __attribute__((unused))
42#else
43#define G_UNUSED
44#endif
45
46static const char *GRASS_copyright G_UNUSED = "GRASS GNU GPL licensed Software";
47
48/*!
49 \def G_FALLTHROUGH
50 \brief A macro for a fallthrough statement attribute
51 */
52#if (defined(__GNUC__) && __GNUC__ >= 7) || \
53 (defined(__clang__) && __clang_major__ >= 12)
54#define G_FALLTHROUGH __attribute__((__fallthrough__))
55#else
56#define G_FALLTHROUGH ((void)0)
57#endif
58
59/* GRASS version, GRASS date, git short hash of last change in GRASS headers
60 * (and anything else in include)
61 */
62#define GIS_H_VERSION GRASS_HEADERS_VERSION
63/* git date of last change in GRASS headers
64 * (and anything else in include)
65 */
66#define GIS_H_DATE GRASS_HEADERS_DATE
67
68#define G_gisinit(pgm) G__gisinit(GIS_H_VERSION, (pgm))
69#define G_no_gisinit() G__no_gisinit(GIS_H_VERSION)
70
71/* For boolean values and comparisons use the C99 type 'bool' with values 'true'
72 */
73/* and 'false' For historical reasons 'TRUE' and 'FALSE' are still valid. */
74#ifndef TRUE
75#define TRUE 1
76#endif
77
78#ifndef FALSE
79#define FALSE 0
80#endif
81
82/*! \brief Cross-platform Newline Character */
83#define NEWLINE '\n'
84#ifdef __MINGW32__
85#define HOST_NEWLINE "\r\n"
86#else
87#define HOST_NEWLINE "\n"
88#endif
89
90/*! \brief Generate warning if function return value is unused */
91#if __GNUC__ && (__GNUC__ >= 3 && __GNUC_MINOR__ >= 4)
92#define WARN_UNUSED_RESULT __attribute__((warn_unused_result))
93#else
94#define WARN_UNUSED_RESULT
95#endif
96
97/*!
98 \brief List of units
99 */
100#define U_UNDEFINED -1
101#define U_UNKNOWN 0
102#define U_ACRES 1
103#define U_HECTARES 2
104#define U_KILOMETERS 3
105#define U_METERS 4
106#define U_MILES 5
107#define U_FEET 6
108#define U_RADIANS 7
109#define U_DEGREES 8
110#define U_USFEET 9
111/* Temporal units from the datetime library */
112#define U_YEARS DATETIME_YEAR
113#define U_MONTHS DATETIME_MONTH
114#define U_DAYS DATETIME_DAY
115#define U_HOURS DATETIME_HOUR
116#define U_MINUTES DATETIME_MINUTE
117#define U_SECONDS DATETIME_SECOND
118
119/*! \brief Projection code - XY coordinate system (unreferenced data) */
120#define PROJECTION_XY 0
121/*! \brief Projection code - UTM */
122#define PROJECTION_UTM 1
123/*! \brief Projection code - State Plane */
124#define PROJECTION_SP 2
125/*! \brief Projection code - Latitude-Longitude */
126#define PROJECTION_LL 3
127/*! \brief Projection code - other projection (other then noted above) */
128#define PROJECTION_OTHER 99
129
130#define PROJECTION_FILE "PROJ_INFO"
131#define UNIT_FILE "PROJ_UNITS"
132#define EPSG_FILE "PROJ_EPSG"
133#define WKT_FILE "PROJ_WKT"
134#define SRID_FILE "PROJ_SRID"
135
136#if defined(__MINGW32__) || defined(__APPLE__)
137#define CONFIG_DIR "GRASS8"
138#else
139#define CONFIG_DIR ".grass8"
140#endif
141
142#ifdef MAX
143#undef MAX
144#endif
145#define MAX(a, b) ((a) > (b) ? (a) : (b))
146
147#ifdef MIN
148#undef MIN
149#endif
150#define MIN(a, b) ((a) < (b) ? (a) : (b))
151
152/* define PI and friends */
153#undef M_PI
154#define M_PI 3.14159265358979323846 /* pi */
155
156#undef M_PI_2
157#define M_PI_2 1.57079632679489661923 /* pi/2 */
158
159#undef M_PI_4
160#ifdef _MSC_VER
161/* use the same value from ucrt\corecrt_math_defines.h to avoid redefinition
162 * warnings */
163#define M_PI_4 0.785398163397448309616 /* pi/4 */
164#else
165#define M_PI_4 0.78539816339744830962 /* pi/4 */
166#endif
167
168#undef M_R2D
169#define M_R2D 57.295779513082320877 /* 180/pi */
170
171#undef M_D2R
172#define M_D2R 0.017453292519943295769 /* pi/180 */
173
174/* epsilon (IEEE: 2.220446e-16) */
175#define GRASS_EPSILON 1.0e-15
176
177/* Location of envariment variables */
178#define G_VAR_GISRC 0
179#define G_VAR_MAPSET 1
180
181/* Where to find/store variables */
182#define G_GISRC_MODE_FILE 0 /* files */
183#define G_GISRC_MODE_MEMORY 1 /* memory only */
184
185/* for G_parser() */
186#define TYPE_INTEGER 1
187#define TYPE_DOUBLE 2
188#define TYPE_STRING 3
189#define YES 1
190#define NO 0
191
192/* File/directory name lengths */
193#define GNAME_MAX 256
194#define GMAPSET_MAX 256
195
196#define GPATH_MAX 4096
197
198/* Basename default separator */
199#define GBASENAME_SEP "_"
200
201/* Macros for type size independent integers */
202/* Use these for portability to ensure integers are truly 32bit */
203/* and are handled in a uniform manner */
204
205/* Convert integer to 4 bytes - little endian */
206#define serialize_int32_le(buf, x) \
207 do { \
208 (buf)[0] = ((x) >> 0) & 0xFF; \
209 (buf)[1] = ((x) >> 8) & 0xFF; \
210 (buf)[2] = ((x) >> 16) & 0xFF; \
211 (buf)[3] = ((x) >> 24) & 0xFF; \
212 } while (0)
213
214/* Convert 4 bytes to an integer - little endian */
215#define deserialize_int32_le(buf) \
216 (((buf)[0] << 0) | ((buf)[1] << 8) | ((buf)[2] << 16) | ((buf)[3] << 24))
217
218/* Convert integer to 4 bytes - big endian */
219#define serialize_int32_be(buf, x) \
220 do { \
221 (buf)[0] = ((x) >> 24) & 0xFF; \
222 (buf)[1] = ((x) >> 16) & 0xFF; \
223 (buf)[2] = ((x) >> 8) & 0xFF; \
224 (buf)[3] = ((x) >> 0) & 0xFF; \
225 } while (0)
226
227/* Convert 4 bytes to an integer - big endian */
228#define deserialize_int32_be(buf) \
229 (((buf)[0] << 24) | ((buf)[1] << 16) | ((buf)[2] << 8) | ((buf)[3] << 0))
230
231/* Cross-platform Directory Separator Character and null device stuff */
232#define GRASS_DIRSEP '/'
233#ifdef __MINGW32__
234#define HOST_DIRSEP '\\'
235#define G_DEV_NULL "NUL:"
236#else
237#define HOST_DIRSEP '/'
238#define G_DEV_NULL "/dev/null"
239#endif
240
241/*!
242 \typedef STD_OPT
243 \brief Standard option identifiers (enum)
244
245 Identifies of all recognized standard options.
246
247 The term <em>old</em> in the descriptions means existing map which
248 is supposed to exist before the module is called.
249 On the other hand, the term <em>new</em> in the descriptions means
250 that the map is not supposed to exist and that module will create one.
251
252 Used by the G_parser() system.
253
254 IMPORTANT NOTE: when adding new item to STD_OPT you should also
255 update STD_OPT_STRINGS array in general/g.parser/standard_option.c.
256
257 */
258typedef enum {
260 G_OPT_DB_SQL, /*!< SQL statements */
261 G_OPT_DB_WHERE, /*!< SQL where conditions */
262 G_OPT_DB_TABLE, /*!< table name */
263 G_OPT_DB_DRIVER, /*!< driver name */
264 G_OPT_DB_DATABASE, /*!< database name */
265 G_OPT_DB_SCHEMA, /*!< database schema */
266 G_OPT_DB_COLUMN, /*!< one attr column */
267 G_OPT_DB_COLUMNS, /*!< one or more attr columns */
268 G_OPT_DB_KEYCOLUMN, /*!< key column */
269
270 G_OPT_I_GROUP, /*!< old input imagery group */
271 G_OPT_I_SUBGROUP, /*!< old input imagery subgroup */
272
273 G_OPT_MEMORYMB, /*!< Maximum memory to be used (in MB): cache size for
274 raster rows */
275 G_OPT_R_INPUT, /*!< old input raster map */
276 G_OPT_R_INPUTS, /*!< old input raster maps */
277 G_OPT_R_OUTPUT, /*!< new output raster map */
278 G_OPT_R_OUTPUTS, /*!< new output raster maps */
279 G_OPT_R_MAP, /*!< old input raster map */
280 G_OPT_R_MAPS, /*!< old input rasters map */
281 G_OPT_R_BASE, /*!< old input base raster map */
282 G_OPT_R_COVER, /*!< old input cover raster map */
283 G_OPT_R_ELEV, /*!< old input elevation raster map */
284 G_OPT_R_ELEVS, /*!< old input elevation raster maps */
285 G_OPT_R_TYPE, /*!< raster map type */
286 G_OPT_R_INTERP_TYPE, /*!< interpolation type */
287 G_OPT_R_BASENAME_INPUT, /*!< old input basename raster maps */
288 G_OPT_R_BASENAME_OUTPUT, /*!< new output basename raster maps */
289
290 G_OPT_R3_INPUT, /*!< old input raster3d map */
291 G_OPT_R3_INPUTS, /*!< old input raster3d maps */
292 G_OPT_R3_OUTPUT, /*!< new output raster3d map */
293 G_OPT_R3_MAP, /*!< old input raster3d map */
294 G_OPT_R3_MAPS, /*!< old input raster3d maps */
295 G_OPT_R3_TYPE, /*!< Type (FCELL or DCELL) of a new created raster3d map */
296 G_OPT_R3_PRECISION, /*!< The precision of the new generated raster3d map */
297 G_OPT_R3_TILE_DIMENSION, /*!< The tile dimension of a new generated raster3d
298 map */
299 G_OPT_R3_COMPRESSION, /*!< The kind of compression of a new created raster3d
300 map */
301
302 G_OPT_V_INPUT, /*!< old input vector map */
303 G_OPT_V_INPUTS, /*!< old input vector maps */
304 G_OPT_V_OUTPUT, /*!< new output vector map */
305 G_OPT_V_MAP, /*!< old input vector map */
306 G_OPT_V_MAPS, /*!< old input vector maps */
307 G_OPT_V_TYPE, /*!< primitive type */
308 G_OPT_V3_TYPE, /*!< primitive type, 2D and 3D */
309 G_OPT_V_FIELD, /*!< layer number (layers used to be called fields) */
310 G_OPT_V_FIELD_ALL, /*!< layer number (layers used to be called fields) */
311 G_OPT_V_CAT, /*!< one category */
312 G_OPT_V_CATS, /*!< more categories */
313 G_OPT_V_ID, /*!< one feature id */
314 G_OPT_V_IDS, /*!< more feature ids */
315
316 G_OPT_F_INPUT, /*!< old input file */
317 G_OPT_F_BIN_INPUT, /*!< old binary input file */
318 G_OPT_F_OUTPUT, /*!< new output file */
319 G_OPT_F_SEP, /*!< data field separator */
320 G_OPT_F_FORMAT, /*!< set output format to plain text or JSON */
321
322 G_OPT_C, /*!< color */
323 G_OPT_CN, /*!< color or none */
324 G_OPT_C_FORMAT, /*!< set color format to rgb,hex,hsv or triplet */
325
326 G_OPT_M_UNITS, /*!< units */
327 G_OPT_M_DATATYPE, /*!< datatype */
328 G_OPT_M_MAPSET, /*!< mapset */
329 G_OPT_M_LOCATION, /*!< location */
330 G_OPT_M_DBASE, /*!< dbase */
331 G_OPT_M_COORDS, /*!< coordinates */
332 G_OPT_M_COLR, /*!< color rules */
333 G_OPT_M_DIR, /*!< directory input */
334 G_OPT_M_REGION, /*!< saved region */
335 G_OPT_M_NULL_VALUE, /*!< null value string */
336 G_OPT_M_NPROCS, /*!< number of threads for parallel computing */
337 G_OPT_M_SEED, /*!< seed for random number generator */
338
339 G_OPT_STDS_INPUT, /*!< old input space time dataset of type strds, str3ds or
340 stvds */
341 G_OPT_STDS_INPUTS, /*!< old input space time datasets */
342 G_OPT_STDS_OUTPUT, /*!< new output space time dataset */
343 G_OPT_STRDS_INPUT, /*!< old input space time raster dataset */
344 G_OPT_STRDS_INPUTS, /*!< old input space time raster datasets */
345 G_OPT_STRDS_OUTPUT, /*!< new output space time raster dataset */
346 G_OPT_STRDS_OUTPUTS, /*!< new output space time raster datasets */
347 G_OPT_STR3DS_INPUT, /*!< old input space time raster3d dataset */
348 G_OPT_STR3DS_INPUTS, /*!< old input space time raster3d datasets */
349 G_OPT_STR3DS_OUTPUT, /*!< new output space time raster3d dataset */
350 G_OPT_STVDS_INPUT, /*!< old input space time vector dataset */
351 G_OPT_STVDS_INPUTS, /*!< old input space time vector datasets */
352 G_OPT_STVDS_OUTPUT, /*!< new output space time vector dataset */
353 G_OPT_MAP_INPUT, /*!< old input map of type raster, vector or raster3d */
354 G_OPT_MAP_INPUTS, /*!< old input maps of type raster, vector or raster3d */
355 G_OPT_STDS_TYPE, /*!< the type of a space time dataset: strds, str3ds, stvds
356 */
357 G_OPT_MAP_TYPE, /*!< The type of an input map: raster, vect, rast3d */
358 G_OPT_T_SUFFIX, /*!< The suffix type for new maps in a space time dataset */
359 G_OPT_T_TYPE, /*!< The temporal type of a space time dataset */
360 G_OPT_T_WHERE, /*!< A temporal GIS framework SQL WHERE statement */
361 G_OPT_T_SAMPLE /*!< Temporal sample methods */
363
364/*!
365 \typedef STD_FLG
366 \brief Standard flag identifiers (enum)
367
368 Identifies of all recognized standard flags.
369
370 Used by the G_parser() system.
371 */
372
373/**/ typedef enum {
375 G_FLG_V_TABLE, /*!< do not create attribute table */
376 G_FLG_V_TOPO /*!< do not build topology */
378
379/* Parser rules for G__option_rule() */
388
389/* Message format */
390#define G_INFO_FORMAT_STANDARD \
391 0 /* GRASS_MESSAGE_FORMAT=standard or not defined */
392#define G_INFO_FORMAT_GUI 1 /* GRASS_MESSAGE_FORMAT=gui */
393#define G_INFO_FORMAT_SILENT 2 /* GRASS_MESSAGE_FORMAT=silent */
394#define G_INFO_FORMAT_PLAIN 3 /* GRASS_MESSAGE_FORMAT=plain */
395
396/* Icon types */
397#define G_ICON_CROSS 0
398#define G_ICON_BOX 1
399#define G_ICON_ARROW 2
400
401/* default colors */
402#define DEFAULT_FG_COLOR "black"
403#define DEFAULT_BG_COLOR "white"
404#define DEFAULT_COLOR_TABLE "viridis"
405
406/* error codes */
407#define G_FATAL_EXIT 0
408#define G_FATAL_PRINT 1
409#define G_FATAL_RETURN 2
410
411/*! \brief Endian check */
412#define ENDIAN_LITTLE 0
413#define ENDIAN_BIG 1
414#define ENDIAN_OTHER 2
415
416/* for vector maps */
417/*!
418 \brief Name of default key column
419 */
420#define GV_KEY_COLUMN "cat"
421
422/*!
423 \brief Element types identifiers (enum)
424
425 Identifies various element types. Element can be raster map,
426 vector map, etc.
427 */
428enum { /* Dir */
429 G_ELEMENT_RASTER = 1, /*!< raster */
430 G_ELEMENT_RASTER3D = 2, /*!< 3d raster */
431 G_ELEMENT_VECTOR = 3, /*!< vector */
432 G_ELEMENT_ASCIIVECTOR = 4, /*!< ASCII vector */
433 G_ELEMENT_LABEL = 5, /*!< labels */
434 G_ELEMENT_REGION = 6, /*!< region */
435 G_ELEMENT_GROUP = 7 /*!< group */
437
438/*=========================== Typedefs/Structures ==========================*/
439
440/*!
441 \brief 2D/3D raster map header (used also for region)
442 */
443struct Cell_head {
444 /*! \brief Max number of bytes per raster data value minus 1 (raster header
445 only)
446
447 Note: -1 for FP raster maps
448 */
450 /*! \brief Compression mode (raster header only)
451
452 - 0: uncompressed
453 - 1: compressed
454 - -1: pre GRASS 3.0
455 */
457 /*! \brief Number of rows for 2D data */
458 int rows;
459 /*! \brief Number of rows for 3D data */
460 int rows3;
461 /*! \brief Number of columns for 2D data */
462 int cols;
463 /*! \brief Number of columns for 3D data */
464 int cols3;
465 /*! \brief number of depths for 3D data */
467 /*! \brief Projection code
468
469 - PROJECTION_XY
470 - PROJECTION_UTM
471 - PROJECTION_SP
472 - PROJECTION_LL
473 - PROJECTION_OTHER
474 */
475 int proj;
476 /*! \brief Projection zone (UTM) */
477 int zone;
478 /*! \brief Resolution - east to west cell size for 2D data */
479 double ew_res;
480 /*! \brief Resolution - east to west cell size for 3D data */
481 double ew_res3;
482 /*! \brief Resolution - north to south cell size for 2D data */
483 double ns_res;
484 /*! \brief Resolution - north to south cell size for 3D data */
485 double ns_res3;
486 /*! \brief Resolution - top to bottom cell size for 3D data */
487 double tb_res;
488 /*! \brief Extent coordinates (north) */
489 double north;
490 /*! \brief Extent coordinates (south) */
491 double south;
492 /*! \brief Extent coordinates (east) */
493 double east;
494 /*! \brief Extent coordinates (west) */
495 double west;
496 /*! \brief Extent coordinates (top) - 3D data */
497 double top;
498 /*! \brief Extent coordinates (bottom) - 3D data */
499 double bottom;
500};
501
502/*
503 ** Structure for I/O of 3dview files (view.c)
504 */
505struct G_3dview {
506 char pgm_id[40]; /* user-provided identifier */
507 float from_to[2][3]; /* eye position & lookat position */
508 float fov; /* field of view */
509 float twist; /* right_hand rotation about from_to */
510 float exag; /* terrain elevation exaggeration */
511 int mesh_freq; /* cells per grid line */
512 int poly_freq; /* cells per polygon */
513 int display_type; /* 1 for mesh, 2 for poly, 3 for both */
514 int lightson; /* boolean */
515 int dozero; /* boolean */
516 int colorgrid; /* boolean */
517 int shading; /* boolean */
518 int fringe; /* boolean */
519 int surfonly; /* boolean */
520 int doavg; /* boolean */
521 char grid_col[40]; /* colors */
522 char bg_col[40]; /* colors */
523 char other_col[40]; /* colors */
524 float lightpos[4]; /* east, north, height, 1.0 for local 0.0 infin */
525 float lightcol[3]; /* values between 0.0 to 1.0 for red, grn, blu */
526 float ambient;
527 float shine;
529};
530
531struct Key_Value {
534 char **key;
535 char **value;
536};
537
538/*!
539 \brief Structure that stores option information
540
541 The descriptions member contains pairs of option and option
542 descriptions separated by semicolon ';'.
543 For example, when options member is set using:
544 \code
545 opt->options = "break,rmdupl"
546 \endcode
547 the descriptions member should be set to:
548 \verbatim
549 "break;break lines on intersections;"
550 "rmdupl;remove duplicates"
551 \endverbatim
552
553 Parsed descriptions are stored in the same order as options.
554
555 GUI dependency is a list of options (separated by commas) to be updated
556 if the value is changed.
557
558 Used by the G_parser() system.
559 */
560struct Option {
561 const char *key; /*!< Key word used on command line */
562 int type; /*!< Option type */
563 int required; /*!< REQUIRED or OPTIONAL */
564 int multiple; /*!< Multiple entries OK */
565 const char *options; /*!< Approved values or range or NULL */
566 const char **opts; /*!< NULL or NULL terminated array of parsed options */
567 const char *key_desc; /*!< one word describing the key */
568 const char *label; /*!< Optional short label, used in GUI as item label */
569 const char *description; /*!< String describing option */
570 const char *descriptions; /*!< ';' separated pairs of option and option
571 descriptions */
572 const char **descs; /*!< parsed descriptions, array of
573 either NULL or string */
574 char *answer; /*!< Option answer */
575 const char *def; /*!< Where original answer gets saved */
576 char **answers; /*!< Option answers (for multiple=YES) */
577 struct Option *next_opt; /*!< Pointer to next option struct */
578 const char *gisprompt; /*!< Interactive prompt guidance */
579 const char *guisection; /*!< GUI Layout guidance: ';' delimited hierarchical
580 tree position */
581 const char *guidependency; /*!< GUI dependency */
582 int (*checker)(const char *); /*!< Routine to check answer or NULL */
583 int count;
584};
585
586/*!
587 \brief Structure that stores flag info
588
589 Used by the G_parser() system.
590 */
591struct Flag {
592 char key; /*!< Key char used on command line */
593 char answer; /*!< Stores flag state: 0/1 */
594 char suppress_required; /*!< Suppresses checking of required options */
595 char suppress_overwrite; /*!< Suppresses checking of existing output */
596 const char *label; /*!< Optional short label, used in GUI as item label */
597 const char *description; /*!< String describing flag meaning */
598 const char *guisection; /*!< GUI Layout guidance: ';' delimited hierarchical
599 tree position */
600 struct Flag *next_flag; /*!< Pointer to next flag struct */
601};
602
603/*!
604 \brief Structure that stores module info
605
606 Used by the G_parser() system.
607 */
608struct GModule {
609 const char *label; /*!< Optional short description for GUI */
610 const char *description; /*!< String describing module */
611 const char **keywords; /*!< Keywords describing module */
612 /* further items are possible: author(s), version, year */
613 int overwrite; /*!< overwrite old files */
614 int verbose; /*!< print all information about progress and so on */
615};
616
617struct TimeStamp {
618 DateTime dt[2]; /* two datetimes */
619 int count;
620};
621
622struct Counter {
623 int value;
624};
625
626struct Popen {
627 FILE *fp;
628 int pid;
629};
630
631typedef int CELL;
632typedef double DCELL;
633typedef float FCELL;
634
635/* 64 bit signed integer */
636#if HAVE_INT64_T
637#include <sys/types.h>
638typedef int64_t grass_int64;
639#elif defined(__MINGW32__)
640typedef __int64 grass_int64;
641#elif HAVE_LONG_LONG_INT
642typedef long long int grass_int64;
643#elif HAVE_LARGEFILES
644typedef off_t grass_int64;
645#else
646#error "no 64 bit integer available"
647#endif
648
649/* LCELL = large CELL, proposed new raster data type */
651
654 unsigned char red;
655 unsigned char grn;
656 unsigned char blu;
657};
658
660 struct _Color_Value_ low, high;
663};
664
668
669 struct {
670 unsigned char *red;
671 unsigned char *grn;
672 unsigned char *blu;
673 unsigned char *set;
677
678 struct {
680 /* pointers to color rules corresponding to the intervals btwn vals */
682 int nalloc;
683 int active;
685
687};
688
689struct Colors {
690 int version; /* set by read_colors: -1=old,1=new */
693 int is_float; /* defined on floating point raster data? */
694 int null_set; /* the colors for null are set? */
695 unsigned char null_red;
696 unsigned char null_grn;
697 unsigned char null_blu;
698 int undef_set; /* the colors for cells not in range are set? */
699 unsigned char undef_red;
700 unsigned char undef_grn;
701 unsigned char undef_blu;
707};
708
709/*!
710 \brief List of integers
711 */
712struct ilist {
713 /*!
714 \brief Array of values
715 */
716 int *value;
717 /*!
718 \brief Number of values in the list
719 */
721 /*!
722 \brief Allocated space for values
723 */
725};
726
727/*============================== Prototypes ================================*/
728
729/* Since there are so many prototypes for the gis library they are stored */
730/* in the file gisdefs.h */
731#include <grass/defs/gis.h>
732
733#endif /* GRASS_GIS_H */
STD_OPT
Standard option identifiers (enum)
Definition gis.h:258
@ G_OPT_STRDS_INPUTS
Definition gis.h:344
@ G_OPT_M_REGION
Definition gis.h:334
@ G_OPT_F_BIN_INPUT
Definition gis.h:317
@ G_OPT_V_IDS
Definition gis.h:314
@ G_OPT_DB_COLUMNS
Definition gis.h:267
@ G_OPT_M_DIR
Definition gis.h:333
@ G_OPT_R_BASENAME_INPUT
Definition gis.h:287
@ G_OPT_R3_INPUTS
Definition gis.h:291
@ G_OPT_R_ELEV
Definition gis.h:283
@ G_OPT_R_MAPS
Definition gis.h:280
@ G_OPT_V_CAT
Definition gis.h:311
@ G_OPT_F_SEP
Definition gis.h:319
@ G_OPT_R_BASENAME_OUTPUT
Definition gis.h:288
@ G_OPT_STR3DS_INPUT
Definition gis.h:347
@ G_OPT_R_ELEVS
Definition gis.h:284
@ G_OPT_T_SUFFIX
Definition gis.h:358
@ G_OPT_R_INPUTS
Definition gis.h:276
@ G_OPT_STVDS_OUTPUT
Definition gis.h:352
@ G_OPT_STRDS_OUTPUTS
Definition gis.h:346
@ G_OPT_T_WHERE
Definition gis.h:360
@ G_OPT_V_MAP
Definition gis.h:305
@ G_OPT_DB_WHERE
Definition gis.h:261
@ G_OPT_T_TYPE
Definition gis.h:359
@ G_OPT_M_SEED
Definition gis.h:337
@ G_OPT_V_CATS
Definition gis.h:312
@ G_OPT_F_FORMAT
Definition gis.h:320
@ G_OPT_R_COVER
Definition gis.h:282
@ G_OPT_M_NULL_VALUE
Definition gis.h:335
@ G_OPT_DB_KEYCOLUMN
Definition gis.h:268
@ G_OPT_DB_COLUMN
Definition gis.h:266
@ G_OPT_DB_SQL
Definition gis.h:260
@ G_OPT_F_INPUT
Definition gis.h:316
@ G_OPT_STRDS_OUTPUT
Definition gis.h:345
@ G_OPT_V_INPUTS
Definition gis.h:303
@ G_OPT_V_FIELD_ALL
Definition gis.h:310
@ G_OPT_T_SAMPLE
Definition gis.h:361
@ G_OPT_UNDEFINED
Definition gis.h:259
@ G_OPT_V3_TYPE
Definition gis.h:308
@ G_OPT_MAP_INPUT
Definition gis.h:353
@ G_OPT_R3_TYPE
Definition gis.h:295
@ G_OPT_V_MAPS
Definition gis.h:306
@ G_OPT_STVDS_INPUT
Definition gis.h:350
@ G_OPT_STRDS_INPUT
Definition gis.h:343
@ G_OPT_M_NPROCS
Definition gis.h:336
@ G_OPT_STDS_TYPE
Definition gis.h:355
@ G_OPT_STR3DS_INPUTS
Definition gis.h:348
@ G_OPT_R_MAP
Definition gis.h:279
@ G_OPT_C_FORMAT
Definition gis.h:324
@ G_OPT_M_LOCATION
Definition gis.h:329
@ G_OPT_M_COLR
Definition gis.h:332
@ G_OPT_MAP_INPUTS
Definition gis.h:354
@ G_OPT_V_ID
Definition gis.h:313
@ G_OPT_M_DBASE
Definition gis.h:330
@ G_OPT_M_COORDS
Definition gis.h:331
@ G_OPT_M_MAPSET
Definition gis.h:328
@ G_OPT_R_BASE
Definition gis.h:281
@ G_OPT_STVDS_INPUTS
Definition gis.h:351
@ G_OPT_R3_PRECISION
Definition gis.h:296
@ G_OPT_R3_MAP
Definition gis.h:293
@ G_OPT_STDS_INPUT
Definition gis.h:339
@ G_OPT_C
Definition gis.h:322
@ G_OPT_R3_OUTPUT
Definition gis.h:292
@ G_OPT_R3_MAPS
Definition gis.h:294
@ G_OPT_DB_TABLE
Definition gis.h:262
@ G_OPT_STDS_INPUTS
Definition gis.h:341
@ G_OPT_R3_INPUT
Definition gis.h:290
@ G_OPT_STDS_OUTPUT
Definition gis.h:342
@ G_OPT_R_TYPE
Definition gis.h:285
@ G_OPT_V_FIELD
Definition gis.h:309
@ G_OPT_V_TYPE
Definition gis.h:307
@ G_OPT_MEMORYMB
Definition gis.h:273
@ G_OPT_DB_DATABASE
Definition gis.h:264
@ G_OPT_CN
Definition gis.h:323
@ G_OPT_R_OUTPUTS
Definition gis.h:278
@ G_OPT_R_INTERP_TYPE
Definition gis.h:286
@ G_OPT_MAP_TYPE
Definition gis.h:357
@ G_OPT_R_INPUT
Definition gis.h:275
@ G_OPT_R3_TILE_DIMENSION
Definition gis.h:297
@ G_OPT_F_OUTPUT
Definition gis.h:318
@ G_OPT_DB_SCHEMA
Definition gis.h:265
@ G_OPT_M_UNITS
Definition gis.h:326
@ G_OPT_DB_DRIVER
Definition gis.h:263
@ G_OPT_I_SUBGROUP
Definition gis.h:271
@ G_OPT_V_OUTPUT
Definition gis.h:304
@ G_OPT_R_OUTPUT
Definition gis.h:277
@ G_OPT_V_INPUT
Definition gis.h:302
@ G_OPT_M_DATATYPE
Definition gis.h:327
@ G_OPT_I_GROUP
Definition gis.h:270
@ G_OPT_STR3DS_OUTPUT
Definition gis.h:349
@ G_OPT_R3_COMPRESSION
Definition gis.h:299
grass_int64 LCELL
Definition gis.h:650
float FCELL
Definition gis.h:633
@ G_ELEMENT_RASTER
Definition gis.h:429
@ G_ELEMENT_VECTOR
Definition gis.h:431
@ G_ELEMENT_GROUP
Definition gis.h:435
@ G_ELEMENT_RASTER3D
Definition gis.h:430
@ G_ELEMENT_REGION
Definition gis.h:434
@ G_ELEMENT_LABEL
Definition gis.h:433
@ G_ELEMENT_ASCIIVECTOR
Definition gis.h:432
int64_t grass_int64
Definition gis.h:638
rule_type
Definition gis.h:380
@ RULE_EXCLUDES
Definition gis.h:385
@ RULE_REQUIRES
Definition gis.h:383
@ RULE_REQUIRED
Definition gis.h:382
@ RULE_EXCLUSIVE
Definition gis.h:381
@ RULE_COLLECTIVE
Definition gis.h:386
@ RULE_REQUIRES_ALL
Definition gis.h:384
#define G_UNUSED
A macro for an attribute, if attached to a variable, indicating that the variable is not used.
Definition gis.h:43
double DCELL
Definition gis.h:632
int CELL
Definition gis.h:631
STD_FLG
Standard flag identifiers (enum)
Definition gis.h:373
@ G_FLG_V_TOPO
Definition gis.h:376
@ G_FLG_V_TABLE
Definition gis.h:375
@ G_FLG_UNDEFINED
Definition gis.h:374
2D/3D raster map header (used also for region)
Definition gis.h:443
int cols3
Number of columns for 3D data.
Definition gis.h:464
double ew_res
Resolution - east to west cell size for 2D data.
Definition gis.h:479
double north
Extent coordinates (north)
Definition gis.h:489
double bottom
Extent coordinates (bottom) - 3D data.
Definition gis.h:499
int compressed
Compression mode (raster header only)
Definition gis.h:456
int format
Max number of bytes per raster data value minus 1 (raster header only)
Definition gis.h:449
int zone
Projection zone (UTM)
Definition gis.h:477
int depths
number of depths for 3D data
Definition gis.h:466
double east
Extent coordinates (east)
Definition gis.h:493
double ew_res3
Resolution - east to west cell size for 3D data.
Definition gis.h:481
double ns_res
Resolution - north to south cell size for 2D data.
Definition gis.h:483
double ns_res3
Resolution - north to south cell size for 3D data.
Definition gis.h:485
double top
Extent coordinates (top) - 3D data.
Definition gis.h:497
int rows3
Number of rows for 3D data.
Definition gis.h:460
int rows
Number of rows for 2D data.
Definition gis.h:458
int cols
Number of columns for 2D data.
Definition gis.h:462
int proj
Projection code.
Definition gis.h:475
double south
Extent coordinates (south)
Definition gis.h:491
double tb_res
Resolution - top to bottom cell size for 3D data.
Definition gis.h:487
double west
Extent coordinates (west)
Definition gis.h:495
Definition gis.h:689
int null_set
Definition gis.h:694
unsigned char undef_blu
Definition gis.h:701
int is_float
Definition gis.h:693
DCELL cmax
Definition gis.h:705
unsigned char null_blu
Definition gis.h:697
unsigned char undef_grn
Definition gis.h:700
unsigned char undef_red
Definition gis.h:699
struct _Color_Info_ fixed
Definition gis.h:702
struct _Color_Info_ modular
Definition gis.h:703
int version
Definition gis.h:690
int invert
Definition gis.h:692
int undef_set
Definition gis.h:698
unsigned char null_grn
Definition gis.h:696
int organizing
Definition gis.h:706
DCELL shift
Definition gis.h:691
unsigned char null_red
Definition gis.h:695
DCELL cmin
Definition gis.h:704
Definition gis.h:622
int value
Definition gis.h:623
Structure that stores flag info.
Definition gis.h:591
const char * guisection
Definition gis.h:598
char suppress_overwrite
Definition gis.h:595
struct Flag * next_flag
Definition gis.h:600
char suppress_required
Definition gis.h:594
const char * description
Definition gis.h:597
char key
Definition gis.h:592
char answer
Definition gis.h:593
const char * label
Definition gis.h:596
Structure that stores module info.
Definition gis.h:608
int verbose
Definition gis.h:614
const char ** keywords
Definition gis.h:611
const char * description
Definition gis.h:610
int overwrite
Definition gis.h:613
const char * label
Definition gis.h:609
struct Cell_head vwin
Definition gis.h:528
int mesh_freq
Definition gis.h:511
float from_to[2][3]
Definition gis.h:507
float fov
Definition gis.h:508
char pgm_id[40]
Definition gis.h:506
char other_col[40]
Definition gis.h:523
int colorgrid
Definition gis.h:516
char bg_col[40]
Definition gis.h:522
char grid_col[40]
Definition gis.h:521
float lightcol[3]
Definition gis.h:525
int shading
Definition gis.h:517
int dozero
Definition gis.h:515
int lightson
Definition gis.h:514
float shine
Definition gis.h:527
int display_type
Definition gis.h:513
int poly_freq
Definition gis.h:512
float ambient
Definition gis.h:526
float exag
Definition gis.h:510
float twist
Definition gis.h:509
int fringe
Definition gis.h:518
float lightpos[4]
Definition gis.h:524
int surfonly
Definition gis.h:519
int doavg
Definition gis.h:520
char ** value
Definition gis.h:535
int nitems
Definition gis.h:532
int nalloc
Definition gis.h:533
char ** key
Definition gis.h:534
Structure that stores option information.
Definition gis.h:560
int(* checker)(const char *)
Definition gis.h:582
const char * key
Definition gis.h:561
struct Option * next_opt
Definition gis.h:577
int count
Definition gis.h:583
const char * key_desc
Definition gis.h:567
const char ** opts
Definition gis.h:566
const char * gisprompt
Definition gis.h:578
const char * label
Definition gis.h:568
int type
Definition gis.h:562
const char * descriptions
Definition gis.h:570
const char * def
Definition gis.h:575
const char * description
Definition gis.h:569
char * answer
Definition gis.h:574
int required
Definition gis.h:563
const char ** descs
Definition gis.h:572
const char * options
Definition gis.h:565
char ** answers
Definition gis.h:576
int multiple
Definition gis.h:564
const char * guisection
Definition gis.h:579
const char * guidependency
Definition gis.h:581
Definition gis.h:626
int pid
Definition gis.h:628
FILE * fp
Definition gis.h:627
DateTime dt[2]
Definition gis.h:618
int count
Definition gis.h:619
struct _Color_Info_::@3 lookup
unsigned char * red
Definition gis.h:670
DCELL * vals
Definition gis.h:679
struct _Color_Info_::@4 fp_lookup
DCELL max
Definition gis.h:686
int active
Definition gis.h:675
unsigned char * set
Definition gis.h:673
unsigned char * blu
Definition gis.h:672
struct _Color_Rule_ * rules
Definition gis.h:666
unsigned char * grn
Definition gis.h:671
struct _Color_Rule_ ** rules
Definition gis.h:681
DCELL min
Definition gis.h:686
int n_rules
Definition gis.h:667
int nalloc
Definition gis.h:674
struct _Color_Rule_ * prev
Definition gis.h:662
struct _Color_Rule_ * next
Definition gis.h:661
struct _Color_Value_ low high
Definition gis.h:660
unsigned char blu
Definition gis.h:656
unsigned char red
Definition gis.h:654
DCELL value
Definition gis.h:653
unsigned char grn
Definition gis.h:655
List of integers.
Definition gis.h:712
int n_values
Number of values in the list.
Definition gis.h:720
int * value
Array of values.
Definition gis.h:716
int alloc_values
Allocated space for values.
Definition gis.h:724