123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- #ifndef COMM_FUNC_H
- #define COMM_FUNC_H
- typedef struct
- {
- char table[128];
- char column[128];
- int srid;
- } SpatialColumn;
- typedef enum
- {
- geomEmpty = 0,
- geomPoint = 4,
- geomPointM = 5,
- geomPointZ = 6,
- geomPointZM = 7,
- geomMultiPoint = 8,
- geomMultiPointM = 9,
- geomMultiPointZ = 10,
- geomMultiPointZM = 11,
- geomLineString = 12,
- geomLineStringM = 13,
- geomLineStringZ = 14,
- geomLineStringZM = 15,
- geomPolygon = 16,
- geomPolygonM = 17,
- geomPolygonZ = 18,
- geomPolygonZM = 19,
- geomMultiLineString = 20,
- geomMultiLineStringM = 21,
- geomMultiLineStringZ = 22,
- geomMultiLineStringZM = 23,
- geomMultiPolygon = 24,
- geomMultiPolygonM = 25,
- geomMultiPolygonZ = 26,
- geomMultiPolygonZM = 27
- } GeomType;
- typedef enum
- {
- shpNil = 0,
- shpPoint = 1,
- shpPolyline = 3,
- shpPolygon = 5,
- shpMultiPoint = 8,
- shpPointZ = 9,
- shpPolylineZ = 10,
- shpPointZM = 11,
- shpPolylineZM = 13,
- shpPolygonZM = 15,
- shpMultiPointZM = 18,
- shpPolygonZ = 19,
- shpMultiPointZ = 20,
- shpPointM = 21,
- shpPolylineM = 23,
- shpPolygonM = 25,
- shpMultiPointM = 28
- } ShpType;
-
- typedef enum
- {
- wkbPoint = 1,
- wkbLineString = 2,
- wkbPolygon = 3,
- wkbMultiPoint = 4,
- wkbMultiLineString = 5,
- wkbMultiPolygon = 6,
- wkbCollection = 7
- } WkbType;
- typedef enum
- {
- BigEndian = 0,
- LittleEndian = 1
- } ByteOrder;
- #define ENDIAN_TEST(__a) \
- { union { short __sh; \
- char __ch[2]; \
- } __endian; \
- __endian.__sh = 0; \
- __endian.__ch[1] = '\001'; \
- __a = 1 - (__endian.__sh & 0x01); }
- typedef struct
- {
- double x;
- double y;
- } Point;
- typedef struct
- {
- GeomType type;
- int num_points;
- int num_parts;
- int num_subparts;
- int *offsets;
- int *suboffsets;
- Point *pt;
- double *z;
- double *m;
- int alloc_size;
- int sub_allocsize;
- } Geometry;
- #define POINT_ALLOC_THRESHOLD 10
- #define GEOM_SUCCESS 0
- #define GEOM_INVALID_WKB_BYTE_ORDER 501
- #define GEOM_UNSUPPORTED_WKB_TYPE 502
- #define GEOM_INVALID_WKB_TYPE 503
- #define GEOM_TOO_FEW_POINTS 504
- #define GEOM_INVALID_NUM_PARTS 505
- #define GEOM_OUT_OF_MEMORY 506
- #define GEOM_INVALID_SHP_TYPE 507
- #define GEOM_INVALID_PART_OFFSET 508
- void geom_to_wkb (Geometry *geom,
- int *max_alloced,
- int *data_len,
- char **binary);
- int wkb_to_geom (char *binary,
- Geometry *geom);
- void geom_to_shape (Geometry *geom,
- int *max_alloced,
- int *data_len,
- char **binary);
- int shape_to_geom (char *binary,
- Geometry *geom);
- void put_integer (char **buf_ptr,
- int swap,
- int num_ints,
- int *int_vals);
- void put_double (char **buf_ptr,
- int swap,
- int num_doubles,
- double *double_vals);
- void put_xy (char **buf_ptr,
- int swap,
- int num_points,
- Point *points);
- void get_integer (char **buf_ptr,
- int swap,
- int num_ints,
- int *int_vals);
- void get_double (char **buf_ptr,
- int swap,
- int num_doubles,
- double *double_vals);
- void get_xy (char **buf_ptr,
- int swap,
- int num_points,
- Point *points);
- int geom_allocate (Geometry *geom,
- int npoints);
- #endif
|