123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265 |
- /*!
- \file include/vect/dig_defines.h
- Defines for diglib (part of vector library)
- */
- /*! \brief Name of vector directory */
- #define GV_DIRECTORY "vector"
- /*! \brief Format description, data location (OGR) */
- #define GV_FRMT_ELEMENT "frmt"
- /*! \brief Native format, coordinates */
- #define GV_COOR_ELEMENT "coor"
- /*! \brief Native format, header information */
- #define GV_HEAD_ELEMENT "head"
- /*! \brief Native format, link to database */
- #define GV_DBLN_ELEMENT "dbln"
- /*! \brief Native format, history file */
- #define GV_HIST_ELEMENT "hist"
- /*! \brief Native format, topology file */
- #define GV_TOPO_ELEMENT "topo"
- /*! \brief Native format, spatial index */
- #define GV_SIDX_ELEMENT "sidx"
- /*! \brief Native format, category index */
- #define GV_CIDX_ELEMENT "cidx"
- /*! \brief External format (OGR), feature index */
- #define GV_FIDX_ELEMENT "fidx"
- /*! \brief Color table */
- #define GV_COLR_ELEMENT "colr"
- /*! \brief Name of directory for alternative color tables */
- #define GV_COLR2_DIRECTORY "vcolr2"
- /*! \brief Name of the timestamp file */
- #define GV_TIMESTAMP_ELEMENT "timestamp"
- /*! \brief Sizes of types used in portable format (different names used in
- Vlib/ and diglib/ for the same thing)
- Assumptions:
- - double = 8 byte IEEE
- - float = 4 byte IEEE
- - long = 4 byte int
- - short = 2 byte int
-
- \todo To be moved to gislib?
- */
- #define PORT_DOUBLE 8
- #define PORT_FLOAT 4
- #define PORT_LONG 4
- #define PORT_INT 4
- #define PORT_SHORT 2
- #define PORT_CHAR 1
- #define PORT_OFF_T 8
- /*! \brief replace by PORT_* in Vlib later and remove :
-
- \todo To be removed ?
- */
- #define DBL_SIZ 8
- #define FLT_SIZ 4
- #define LNG_SIZ 4
- #define SHRT_SIZ 2
- /*! \brief Limits for portable types
- \todo To be moved to gislib?
- */
- #define PORT_DOUBLE_MAX 1.7976931348623157e+308
- #define PORT_DOUBLE_MIN 2.2250738585072014e-308
- #define PORT_FLOAT_MAX 3.40282347e+38F
- #define PORT_FLOAT_MIN 1.17549435e-38F
- #define PORT_LONG_MAX 2147483647L
- #define PORT_LONG_MIN (-2147483647L)
- #define PORT_INT_MAX 2147483647
- #define PORT_INT_MIN (-2147483647)
- #define PORT_SHORT_MAX 32767
- #define PORT_SHORT_MIN (-32768)
- #define PORT_CHAR_MAX 127
- #define PORT_CHAR_MIN (-128)
- /*! \brief Geometry data formats supported by lib
- Don't change GV_FORMAT_* values, this order is hardcoded in lib
- */
- /*! \brief GRASS native format */
- #define GV_FORMAT_NATIVE 0
- /*! \brief OGR format */
- #define GV_FORMAT_OGR 1
- /*! \brief OGR format (direct access) */
- #define GV_FORMAT_OGR_DIRECT 2
- /*! \brief PostGIS format */
- #define GV_FORMAT_POSTGIS 3
- /*! \brief GRASS topology - native format */
- #define GV_TOPO_NATIVE 0
- /*! \brief Pseudo-topology - external simple features (OGR/PostGIS) format */
- #define GV_TOPO_PSEUDO 1
- /*! \brief PostGIS topology - external PostGIS format */
- #define GV_TOPO_POSTGIS 2
- /*! \brief One table linked to vector map */
- #define GV_1TABLE 0
- /*! \brief More tables linked to vector map */
- #define GV_MTABLE 1
- /*! \brief Read-only vector map open mode */
- #define GV_MODE_READ 0
- /*! \brief Write vector map open mode */
- #define GV_MODE_WRITE 1
- /*! \brief Read-write vector map open mode */
- #define GV_MODE_RW 2
- /*! \brief Vector map open code */
- #define VECT_OPEN_CODE 0x5522AA22
- /*! \brief Vector map close code */
- #define VECT_CLOSED_CODE 0x22AA2255
- /*! \brief Vector level - without topology */
- #define LEVEL_1 1
- /*! \brief Vector level - with 2D topology */
- #define LEVEL_2 2
- /*! \brief Vector level - with 3D topology (not implemented yet) */
- #define LEVEL_3 3
- /*! \brief Topology levels - nothing to build */
- #define GV_BUILD_NONE 0
- /*! \brief Topology levels - basic level (without areas and isles) */
- #define GV_BUILD_BASE 1
- /*! \brief Topology levels - build areas */
- #define GV_BUILD_AREAS 2
- /*! \brief Topology levels - attach islands to areas */
- #define GV_BUILD_ATTACH_ISLES 3
- /*! \brief Topology levels - assign centroids to areas */
- #define GV_BUILD_CENTROIDS 4
- /*! \brief Topology levels - build everything (currently same as GV_BUILD_CENTROIDS) */
- #define GV_BUILD_ALL GV_BUILD_CENTROIDS
- /*! \brief Check if vector map is open */
- #define VECT_OPEN(Map) (Map->open == VECT_OPEN_CODE)
- /*! \brief Memory mode */
- #define GV_MEMORY_ALWAYS 1
- #define GV_MEMORY_NEVER 2
- #define GV_MEMORY_AUTO 3
- /*! \brief Coordinates file head size */
- #define GV_COOR_HEAD_SIZE 14
- #define GRASS_V_VERSION "5.0"
- /*! \brief The latest versions of files known by current version of
- the library. Used for new files */
- #define GV_COOR_VER_MAJOR 5
- #define GV_COOR_VER_MINOR 1
- #define GV_TOPO_VER_MAJOR 5
- #define GV_TOPO_VER_MINOR 1
- #define GV_SIDX_VER_MAJOR 5
- #define GV_SIDX_VER_MINOR 1
- #define GV_CIDX_VER_MAJOR 5
- #define GV_CIDX_VER_MINOR 0
- /*! \brief The oldest versions of the library, which are capable to
- read the files created by the current version */
- #define GV_COOR_EARLIEST_MAJOR 5
- #define GV_COOR_EARLIEST_MINOR 1
- #define GV_TOPO_EARLIEST_MAJOR 5
- #define GV_TOPO_EARLIEST_MINOR 1
- #define GV_SIDX_EARLIEST_MAJOR 5
- #define GV_SIDX_EARLIEST_MINOR 1
- #define GV_CIDX_EARLIEST_MAJOR 5
- #define GV_CIDX_EARLIEST_MINOR 0
- /*! \brief 2D/3D vector data */
- #define WITHOUT_Z 0
- #define WITH_Z 1
- /*! \brief Boundary side indicator left/right */
- #define GV_LEFT 1
- #define GV_RIGHT 2
- /*! \brief Line direction indicator forward/backward */
- #define GV_FORWARD 1
- #define GV_BACKWARD 2
- /*! \brief Feature types used in memory on run time (may change) */
- #define GV_POINT 0x01
- #define GV_LINE 0x02
- #define GV_BOUNDARY 0x04
- #define GV_CENTROID 0x08
- #define GV_FACE 0x10
- #define GV_KERNEL 0x20
- #define GV_AREA 0x40
- #define GV_VOLUME 0x80
- #define GV_POINTS (GV_POINT | GV_CENTROID )
- #define GV_LINES (GV_LINE | GV_BOUNDARY )
- /*! \brief Feature types used in store like 'coor' file or postgis type column (must not change) */
- #define GV_STORE_POINT 1
- #define GV_STORE_LINE 2
- #define GV_STORE_BOUNDARY 3
- #define GV_STORE_CENTROID 4
- #define GV_STORE_FACE 5
- #define GV_STORE_KERNEL 6
- #define GV_STORE_AREA 7 /* used in category index file */
- #define GV_STORE_VOLUME 8 /* used in category index file */
- /*! \brief Overlay operators */
- #define GV_ON_AND "AND" /* intersect */
- #define GV_ON_OVERLAP "OVERLAP"
- enum overlay_operator
- {
- GV_O_AND,
- GV_O_OVERLAP
- };
- typedef enum overlay_operator OVERLAY_OPERATOR;
- /*! \brief Maximum number of categories for one element */
- #define GV_NCATS_MAX PORT_INT_MAX
- /*! \brief Maximum field */
- #define GV_FIELD_MAX PORT_INT_MAX
- /*! \brief Maximum category value */
- #define GV_CAT_MAX PORT_INT_MAX
- /*! \brief GRASS ASCII vector format - point format */
- #define GV_ASCII_FORMAT_POINT 0
- /*! \brief GRASS ASCII vector format - standard format */
- #define GV_ASCII_FORMAT_STD 1
- /*! \brief GRASS ASCII vector format - well-known-text format */
- #define GV_ASCII_FORMAT_WKT 2
- /*! \brief Simple feature types
-
- Taken from GDAL/OGR library (ogr/ogr_core.h)
- */
- typedef enum
- {
- SF_GEOMETRY = 0, /* unknown type, non-standard */
- SF_POINT = 1, /* 0-dimensional geometric object */
- SF_LINESTRING = 2, /* 1-dimensional geometric object with linear
- interpolation between Points */
- SF_POLYGON = 3, /* planar 2-dimensional geometric object defined
- by 1 exterior boundary and 0 or more interior
- boundaries */
- SF_MULTIPOINT = 4, /* GeometryCollection of Points */
- SF_MULTILINESTRING = 5, /* GeometryCollection of LineStrings */
- SF_MULTIPOLYGON = 6, /* GeometryCollection of Polygons */
- SF_GEOMETRYCOLLECTION = 7, /* geometric object that is a collection of 1
- or more geometric objects */
- SF_NONE = 100, /* non-standard, for pure attribute records */
- SF_LINEARRING = 101, /* non-standard */
- SF_POINT25D = 0x80000001, /* 2.5D extension as per 99-402 */
- SF_LINESTRING25D = 0x80000002, /* 2.5D extension as per 99-402 */
- SF_POLYGON25D = 0x80000003, /* 2.5D extension as per 99-402 */
- SF_MULTIPOINT25D = 0x80000004, /* 2.5D extension as per 99-402 */
- SF_MULTILINESTRING25D = 0x80000005, /* 2.5D extension as per 99-402 */
- SF_MULTIPOLYGON25D = 0x80000006, /* 2.5D extension as per 99-402 */
- SF_GEOMETRYCOLLECTION25D = 0x80000007 /* 2.5D extension as per 99-402 */
- } SF_FeatureType;
- #define HEADSTR 50
- /*! \brief GRASS-PostGIS data provider - default fid column */
- #define GV_PG_FID_COLUMN "fid"
- /*! \brief GRASS-PostGIS data provider - default geometry column */
- #define GV_PG_GEOMETRY_COLUMN "geom"
|