/*! \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"