GDAL

ogr_core.h
Go to the documentation of this file.
1/******************************************************************************
2 * $Id$
3 *
4 * Project: OpenGIS Simple Features Reference Implementation
5 * Purpose: Define some core portability services for cross-platform OGR code.
6 * Author: Frank Warmerdam, warmerdam@pobox.com
7 *
8 ******************************************************************************
9 * Copyright (c) 1999, Frank Warmerdam
10 * Copyright (c) 2007-2014, Even Rouault <even dot rouault at spatialys.com>
11 *
12 * Permission is hereby granted, free of charge, to any person obtaining a
13 * copy of this software and associated documentation files (the "Software"),
14 * to deal in the Software without restriction, including without limitation
15 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
16 * and/or sell copies of the Software, and to permit persons to whom the
17 * Software is furnished to do so, subject to the following conditions:
18 *
19 * The above copyright notice and this permission notice shall be included
20 * in all copies or substantial portions of the Software.
21 *
22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
25 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
28 * DEALINGS IN THE SOFTWARE.
29 ****************************************************************************/
30
31#ifndef OGR_CORE_H_INCLUDED
32#define OGR_CORE_H_INCLUDED
33
34#include "cpl_port.h"
35#if defined(GDAL_COMPILATION)
36#define DO_NOT_DEFINE_GDAL_DATE_NAME
37#endif
38#include "gdal_version.h"
39
46#if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS)
47
48extern "C++"
49{
50#if !defined(DOXYGEN_SKIP)
51#include <cmath>
52#include <limits>
53#endif
54
55 class OGREnvelope3D;
56
60 class CPL_DLL OGREnvelope
61 {
62 public:
64 OGREnvelope()
65 : MinX(std::numeric_limits<double>::infinity()),
66 MaxX(-std::numeric_limits<double>::infinity()),
67 MinY(std::numeric_limits<double>::infinity()),
68 MaxY(-std::numeric_limits<double>::infinity())
69 {
70 }
71
73 OGREnvelope(const OGREnvelope &oOther)
74 : MinX(oOther.MinX), MaxX(oOther.MaxX), MinY(oOther.MinY),
75 MaxY(oOther.MaxY)
76 {
77 }
78
80 OGREnvelope &operator=(const OGREnvelope &) = default;
81
83 double MinX;
84
86 double MaxX;
87
89 double MinY;
90
92 double MaxY;
93
94#ifdef HAVE_GCC_DIAGNOSTIC_PUSH
95#pragma GCC diagnostic push
96#pragma GCC diagnostic ignored "-Wfloat-equal"
97#endif
100 int IsInit() const
101 {
102 return MinX != std::numeric_limits<double>::infinity();
103 }
104
105#ifdef HAVE_GCC_DIAGNOSTIC_PUSH
106#pragma GCC diagnostic pop
107#endif
108
111 void Merge(OGREnvelope const &sOther)
112 {
113 MinX = MIN(MinX, sOther.MinX);
114 MaxX = MAX(MaxX, sOther.MaxX);
115 MinY = MIN(MinY, sOther.MinY);
116 MaxY = MAX(MaxY, sOther.MaxY);
117 }
118
121 void Merge(double dfX, double dfY)
122 {
123 MinX = MIN(MinX, dfX);
124 MaxX = MAX(MaxX, dfX);
125 MinY = MIN(MinY, dfY);
126 MaxY = MAX(MaxY, dfY);
127 }
128
131 void Intersect(OGREnvelope const &sOther)
132 {
133 if (Intersects(sOther))
134 {
135 if (IsInit())
136 {
137 MinX = MAX(MinX, sOther.MinX);
138 MaxX = MIN(MaxX, sOther.MaxX);
139 MinY = MAX(MinY, sOther.MinY);
140 MaxY = MIN(MaxY, sOther.MaxY);
141 }
142 else
143 {
144 MinX = sOther.MinX;
145 MaxX = sOther.MaxX;
146 MinY = sOther.MinY;
147 MaxY = sOther.MaxY;
148 }
149 }
150 else
151 {
152 *this = OGREnvelope();
153 }
154 }
155
158 int Intersects(OGREnvelope const &other) const
159 {
160 return MinX <= other.MaxX && MaxX >= other.MinX &&
161 MinY <= other.MaxY && MaxY >= other.MinY;
162 }
163
165 int Contains(OGREnvelope const &other) const
166 {
167 return MinX <= other.MinX && MinY <= other.MinY &&
168 MaxX >= other.MaxX && MaxY >= other.MaxY;
169 }
170
173 bool operator==(const OGREnvelope &other) const
174 {
175#ifdef HAVE_GCC_DIAGNOSTIC_PUSH
176#pragma GCC diagnostic push
177#pragma GCC diagnostic ignored "-Wfloat-equal"
178#endif
179 return MinX == other.MinX && MinY == other.MinY &&
180 MaxX == other.MaxX && MaxY == other.MaxY;
181
182#ifdef HAVE_GCC_DIAGNOSTIC_PUSH
183#pragma GCC diagnostic pop
184#endif
185 }
186
189 bool operator!=(const OGREnvelope &other) const
190 {
191 return !(*this == other);
192 }
193 };
194
195} // extern "C++"
196
197#else
198typedef struct
199{
200 double MinX;
201 double MaxX;
202 double MinY;
203 double MaxY;
204} OGREnvelope;
205#endif
206
207#if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS)
208
209extern "C++"
210{
211
215 class CPL_DLL OGREnvelope3D : public OGREnvelope
216 {
217 public:
219 OGREnvelope3D()
220 : OGREnvelope(), MinZ(std::numeric_limits<double>::infinity()),
221 MaxZ(-std::numeric_limits<double>::infinity())
222 {
223 }
224
226 OGREnvelope3D(const OGREnvelope3D &oOther)
227 : OGREnvelope(oOther), MinZ(oOther.MinZ), MaxZ(oOther.MaxZ)
228 {
229 }
230
232 OGREnvelope3D &operator=(const OGREnvelope3D &) = default;
233
235 bool Is3D() const
236 {
237 return std::isfinite(MinZ) && std::isfinite(MaxZ);
238 }
239
241 double MinZ;
242
244 double MaxZ;
245
246#ifdef HAVE_GCC_DIAGNOSTIC_PUSH
247#pragma GCC diagnostic push
248#pragma GCC diagnostic ignored "-Wfloat-equal"
249#endif
252 int IsInit() const
253 {
254 return MinX != std::numeric_limits<double>::infinity();
255 }
256#ifdef HAVE_GCC_DIAGNOSTIC_PUSH
257#pragma GCC diagnostic pop
258#endif
259
262 void Merge(OGREnvelope3D const &sOther)
263 {
264 MinX = MIN(MinX, sOther.MinX);
265 MaxX = MAX(MaxX, sOther.MaxX);
266 MinY = MIN(MinY, sOther.MinY);
267 MaxY = MAX(MaxY, sOther.MaxY);
268 MinZ = MIN(MinZ, sOther.MinZ);
269 MaxZ = MAX(MaxZ, sOther.MaxZ);
270 }
271
274 void Merge(OGREnvelope const &sOther)
275 {
276 MinX = MIN(MinX, sOther.MinX);
277 MaxX = MAX(MaxX, sOther.MaxX);
278 MinY = MIN(MinY, sOther.MinY);
279 MaxY = MAX(MaxY, sOther.MaxY);
280 }
281
284 void Merge(double dfX, double dfY, double dfZ)
285 {
286 MinX = MIN(MinX, dfX);
287 MaxX = MAX(MaxX, dfX);
288 MinY = MIN(MinY, dfY);
289 MaxY = MAX(MaxY, dfY);
290 MinZ = MIN(MinZ, dfZ);
291 MaxZ = MAX(MaxZ, dfZ);
292 }
293
296 void Intersect(OGREnvelope3D const &sOther)
297 {
298 if (Intersects(sOther))
299 {
300 if (IsInit())
301 {
302 MinX = MAX(MinX, sOther.MinX);
303 MaxX = MIN(MaxX, sOther.MaxX);
304 MinY = MAX(MinY, sOther.MinY);
305 MaxY = MIN(MaxY, sOther.MaxY);
306 MinZ = MAX(MinZ, sOther.MinZ);
307 MaxZ = MIN(MaxZ, sOther.MaxZ);
308 }
309 else
310 {
311 MinX = sOther.MinX;
312 MaxX = sOther.MaxX;
313 MinY = sOther.MinY;
314 MaxY = sOther.MaxY;
315 MinZ = sOther.MinZ;
316 MaxZ = sOther.MaxZ;
317 }
318 }
319 else
320 {
321 *this = OGREnvelope3D();
322 }
323 }
324
327 int Intersects(OGREnvelope3D const &other) const
328 {
329 return MinX <= other.MaxX && MaxX >= other.MinX &&
330 MinY <= other.MaxY && MaxY >= other.MinY &&
331 MinZ <= other.MaxZ && MaxZ >= other.MinZ;
332 }
333
335 int Contains(OGREnvelope3D const &other) const
336 {
337 return MinX <= other.MinX && MinY <= other.MinY &&
338 MaxX >= other.MaxX && MaxY >= other.MaxY &&
339 MinZ <= other.MinZ && MaxZ >= other.MaxZ;
340 }
341 };
342
343} // extern "C++"
344
345#else
346typedef struct
347{
348 double MinX;
349 double MaxX;
350 double MinY;
351 double MaxY;
352 double MinZ;
353 double MaxZ;
354} OGREnvelope3D;
355#endif
356
357 CPL_C_START
358
360void CPL_DLL *OGRMalloc(size_t) CPL_WARN_DEPRECATED("Use CPLMalloc instead.");
361void CPL_DLL *OGRCalloc(size_t, size_t)
362 CPL_WARN_DEPRECATED("Use CPLCalloc instead.");
363void CPL_DLL *OGRRealloc(void *, size_t)
364 CPL_WARN_DEPRECATED("Use CPLRealloc instead.");
365char CPL_DLL *OGRStrdup(const char *)
366 CPL_WARN_DEPRECATED("Use CPLStrdup instead.");
367void CPL_DLL OGRFree(void *) CPL_WARN_DEPRECATED("Use CPLFree instead.");
370#ifdef STRICT_OGRERR_TYPE
372typedef enum
373{
374 OGRERR_NONE,
375 OGRERR_NOT_ENOUGH_DATA,
376 OGRERR_NOT_ENOUGH_MEMORY,
377 OGRERR_UNSUPPORTED_GEOMETRY_TYPE,
378 OGRERR_UNSUPPORTED_OPERATION,
379 OGRERR_CORRUPT_DATA,
380 OGRERR_FAILURE,
381 OGRERR_UNSUPPORTED_SRS,
382 OGRERR_INVALID_HANDLE,
383 OGRERR_NON_EXISTING_FEATURE
384} OGRErr;
385#else
387 typedef int OGRErr;
388
389#define OGRERR_NONE 0
390#define OGRERR_NOT_ENOUGH_DATA 1
391#define OGRERR_NOT_ENOUGH_MEMORY 2
392#define OGRERR_UNSUPPORTED_GEOMETRY_TYPE 3
393#define OGRERR_UNSUPPORTED_OPERATION 4
394#define OGRERR_CORRUPT_DATA 5
395#define OGRERR_FAILURE 6
396#define OGRERR_UNSUPPORTED_SRS 7
397#define OGRERR_INVALID_HANDLE 8
398#define OGRERR_NON_EXISTING_FEATURE \
399 9
401#endif
402
404 typedef int OGRBoolean;
405
406/* -------------------------------------------------------------------- */
407/* ogr_geometry.h related definitions. */
408/* -------------------------------------------------------------------- */
409
415 typedef enum
416{
417 wkbUnknown = 0,
419 wkbPoint = 1,
420 wkbLineString = 2,
422 wkbPolygon = 3,
425 wkbMultiPoint = 4,
426 wkbMultiLineString =
427 5,
428 wkbMultiPolygon = 6,
429 wkbGeometryCollection = 7,
432 wkbCircularString = 8,
434 wkbCompoundCurve = 9,
436 wkbCurvePolygon = 10,
439 wkbMultiCurve = 11,
441 wkbMultiSurface = 12,
443 wkbCurve =
444 13,
445 wkbSurface =
446 14,
447 wkbPolyhedralSurface =
448 15,
450 wkbTIN = 16,
452 wkbTriangle = 17,
454 wkbNone = 100,
455 wkbLinearRing = 101,
457 wkbCircularStringZ = 1008,
459 wkbCompoundCurveZ = 1009,
461 wkbCurvePolygonZ = 1010,
463 wkbMultiCurveZ = 1011,
465 wkbMultiSurfaceZ = 1012,
467 wkbCurveZ = 1013,
469 wkbSurfaceZ = 1014,
471 wkbPolyhedralSurfaceZ = 1015,
472 wkbTINZ = 1016,
473 wkbTriangleZ = 1017,
475 wkbPointM = 2001,
476 wkbLineStringM = 2002,
477 wkbPolygonM = 2003,
478 wkbMultiPointM = 2004,
479 wkbMultiLineStringM = 2005,
480 wkbMultiPolygonM = 2006,
481 wkbGeometryCollectionM = 2007,
482 wkbCircularStringM = 2008,
483 wkbCompoundCurveM = 2009,
484 wkbCurvePolygonM = 2010,
485 wkbMultiCurveM = 2011,
486 wkbMultiSurfaceM = 2012,
487 wkbCurveM = 2013,
488 wkbSurfaceM = 2014,
489 wkbPolyhedralSurfaceM = 2015,
490 wkbTINM = 2016,
491 wkbTriangleM = 2017,
493 wkbPointZM = 3001,
494 wkbLineStringZM = 3002,
495 wkbPolygonZM = 3003,
496 wkbMultiPointZM = 3004,
497 wkbMultiLineStringZM = 3005,
498 wkbMultiPolygonZM = 3006,
499 wkbGeometryCollectionZM = 3007,
500 wkbCircularStringZM = 3008,
501 wkbCompoundCurveZM = 3009,
502 wkbCurvePolygonZM = 3010,
503 wkbMultiCurveZM = 3011,
504 wkbMultiSurfaceZM = 3012,
505 wkbCurveZM = 3013,
506 wkbSurfaceZM = 3014,
507 wkbPolyhedralSurfaceZM = 3015,
508 wkbTINZM = 3016,
509 wkbTriangleZM = 3017,
511#if defined(DOXYGEN_SKIP)
512 // Sphinx doesn't like 0x8000000x constants
513 wkbPoint25D = -2147483647,
514 wkbLineString25D = -2147483646,
515 wkbPolygon25D = -2147483645,
516 wkbMultiPoint25D = -2147483644,
517 wkbMultiLineString25D = -2147483643,
518 wkbMultiPolygon25D = -2147483642,
519 wkbGeometryCollection25D = -2147483641
520#else
521 wkbPoint25D = 0x80000001,
522 wkbLineString25D = 0x80000002,
523 wkbPolygon25D = 0x80000003,
524 wkbMultiPoint25D = 0x80000004,
525 wkbMultiLineString25D = 0x80000005,
526 wkbMultiPolygon25D = 0x80000006,
527 wkbGeometryCollection25D = 0x80000007
528#endif
529} OGRwkbGeometryType;
530
531/* clang-format off */
547/* clang-format on */
548
549 typedef enum
550{
551 wkbVariantOldOgc,
552 wkbVariantIso,
554 wkbVariantPostGIS1
556} OGRwkbVariant;
557
558#ifndef GDAL_COMPILATION
560#define wkb25DBit 0x80000000
561#endif
562
563#ifndef __cplusplus
565#define wkbFlatten(x) OGR_GT_Flatten((OGRwkbGeometryType)(x))
566#else
568#define wkbFlatten(x) OGR_GT_Flatten(static_cast<OGRwkbGeometryType>(x))
569#endif
570
574#define wkbHasZ(x) (OGR_GT_HasZ(x) != 0)
575
579#define wkbSetZ(x) OGR_GT_SetZ(x)
580
584#define wkbHasM(x) (OGR_GT_HasM(x) != 0)
585
590#define wkbSetM(x) OGR_GT_SetM(x)
591
592#ifndef DOXYGEN_SKIP
593#define ogrZMarker 0x21125711
594#endif
595
596const char CPL_DLL *OGRGeometryTypeToName(OGRwkbGeometryType eType);
597 OGRwkbGeometryType CPL_DLL OGRMergeGeometryTypes(OGRwkbGeometryType eMain,
598 OGRwkbGeometryType eExtra);
599 OGRwkbGeometryType CPL_DLL OGRMergeGeometryTypesEx(OGRwkbGeometryType eMain,
600 OGRwkbGeometryType eExtra,
601 int bAllowPromotingToCurves);
602 OGRwkbGeometryType CPL_DLL OGR_GT_Flatten(OGRwkbGeometryType eType);
603 OGRwkbGeometryType CPL_DLL OGR_GT_SetZ(OGRwkbGeometryType eType);
604 OGRwkbGeometryType CPL_DLL OGR_GT_SetM(OGRwkbGeometryType eType);
605 OGRwkbGeometryType CPL_DLL OGR_GT_SetModifier(OGRwkbGeometryType eType,
606 int bSetZ, int bSetM);
607int CPL_DLL OGR_GT_HasZ(OGRwkbGeometryType eType);
608int CPL_DLL OGR_GT_HasM(OGRwkbGeometryType eType);
609int CPL_DLL OGR_GT_IsSubClassOf(OGRwkbGeometryType eType,
610 OGRwkbGeometryType eSuperType);
611int CPL_DLL OGR_GT_IsCurve(OGRwkbGeometryType);
612int CPL_DLL OGR_GT_IsSurface(OGRwkbGeometryType);
613int CPL_DLL OGR_GT_IsNonLinear(OGRwkbGeometryType);
614 OGRwkbGeometryType CPL_DLL OGR_GT_GetCollection(OGRwkbGeometryType eType);
615 OGRwkbGeometryType CPL_DLL OGR_GT_GetCurve(OGRwkbGeometryType eType);
616 OGRwkbGeometryType CPL_DLL OGR_GT_GetLinear(OGRwkbGeometryType eType);
617
619 typedef enum
620{
621 wkbXDR = 0,
622 wkbNDR = 1
623} OGRwkbByteOrder;
624
625#ifndef DOXYGEN_SKIP
626
627#ifndef NO_HACK_FOR_IBM_DB2_V72
628#define HACK_FOR_IBM_DB2_V72
629#endif
630
631#ifdef HACK_FOR_IBM_DB2_V72
632#define DB2_V72_FIX_BYTE_ORDER(x) ((((x)&0x31) == (x)) ? ((x)&0x1) : (x))
633#define DB2_V72_UNFIX_BYTE_ORDER(x) \
634 CPL_STATIC_CAST(unsigned char, OGRGeometry::bGenerate_DB2_V72_BYTE_ORDER \
635 ? ((x) | 0x30) \
636 : (x))
637#else
638#define DB2_V72_FIX_BYTE_ORDER(x) (x)
639#define DB2_V72_UNFIX_BYTE_ORDER(x) (x)
640#endif
641
642#endif /* #ifndef DOXYGEN_SKIP */
643
647#define ALTER_NAME_FLAG 0x1
648
652#define ALTER_TYPE_FLAG 0x2
653
657#define ALTER_WIDTH_PRECISION_FLAG 0x4
658
663#define ALTER_NULLABLE_FLAG 0x8
664
669#define ALTER_DEFAULT_FLAG 0x10
670
675#define ALTER_UNIQUE_FLAG 0x20
676
681#define ALTER_DOMAIN_FLAG 0x40
682
687#define ALTER_ALTERNATIVE_NAME_FLAG 0x80
688
693#define ALTER_COMMENT_FLAG 0x100
694
698#define ALTER_ALL_FLAG \
699 (ALTER_NAME_FLAG | ALTER_TYPE_FLAG | ALTER_WIDTH_PRECISION_FLAG | \
700 ALTER_NULLABLE_FLAG | ALTER_DEFAULT_FLAG | ALTER_UNIQUE_FLAG | \
701 ALTER_DOMAIN_FLAG | ALTER_ALTERNATIVE_NAME_FLAG | ALTER_COMMENT_FLAG)
702
707#define ALTER_GEOM_FIELD_DEFN_NAME_FLAG 0x1000
708
713#define ALTER_GEOM_FIELD_DEFN_TYPE_FLAG 0x2000
714
719#define ALTER_GEOM_FIELD_DEFN_NULLABLE_FLAG 0x4000
720
725#define ALTER_GEOM_FIELD_DEFN_SRS_FLAG 0x8000
726
731#define ALTER_GEOM_FIELD_DEFN_SRS_COORD_EPOCH_FLAG 0x10000
732
737#define ALTER_GEOM_FIELD_DEFN_ALL_FLAG \
738 (ALTER_GEOM_FIELD_DEFN_NAME_FLAG | ALTER_GEOM_FIELD_DEFN_TYPE_FLAG | \
739 ALTER_GEOM_FIELD_DEFN_NULLABLE_FLAG | ALTER_GEOM_FIELD_DEFN_SRS_FLAG | \
740 ALTER_GEOM_FIELD_DEFN_SRS_COORD_EPOCH_FLAG)
741
746#define OGR_F_VAL_NULL 0x00000001
747
752#define OGR_F_VAL_GEOM_TYPE 0x00000002
753
758#define OGR_F_VAL_WIDTH 0x00000004
759
766#define OGR_F_VAL_ALLOW_NULL_WHEN_DEFAULT 0x00000008
767
774#define OGR_F_VAL_ALLOW_DIFFERENT_GEOM_DIM 0x00000010
775
780#define OGR_F_VAL_ALL (0x7FFFFFFF & ~OGR_F_VAL_ALLOW_DIFFERENT_GEOM_DIM)
781
782/************************************************************************/
783/* ogr_feature.h related definitions. */
784/************************************************************************/
785
792 typedef enum
793{ OFTInteger = 0, OFTIntegerList = 1, OFTReal = 2, OFTRealList = 3, OFTString = 4, OFTStringList = 5, OFTWideString = 6, OFTWideStringList = 7, OFTBinary = 8, OFTDate = 9, OFTTime = 10, OFTDateTime = 11, OFTInteger64 = 12, OFTInteger64List = 13,
808 OFTMaxType = 13
809} OGRFieldType;
810
820 typedef enum
821{ OFSTNone = 0,
824 OFSTBoolean = 1,
826 OFSTInt16 = 2,
829 OFSTFloat32 = 3,
833 OFSTJSON = 4,
837 OFSTUUID = 5,
838 OFSTMaxSubType = 5
839} OGRFieldSubType;
840
845 typedef enum
846{
847 OJUndefined = 0,
848 OJLeft = 1,
849 OJRight = 2
850} OGRJustification;
851
853#define OGRNullFID -1
854
855/* Special value for an unknown field type. This should only be used
856 * while reading a file. At the end of file any unknown types should
857 * be set to OFTString.
858 */
860#define OGRUnknownType static_cast<OGRFieldType>(-1)
868#define OGRUnsetMarker -21121
869
876#define OGRNullMarker -21122
877
882#define OGR_TZFLAG_UNKNOWN 0
883
885#define OGR_TZFLAG_LOCALTIME 1
886
891#define OGR_TZFLAG_MIXED_TZ 2
892
899#define OGR_TZFLAG_UTC 100
900
901/************************************************************************/
902/* OGRField */
903/************************************************************************/
904
909 typedef union
910{
912 int Integer;
913 GIntBig Integer64;
914 double Real;
915 char *String;
916
917 struct
918 {
919 int nCount;
920 int *paList;
921 } IntegerList;
922
923 struct
924 {
925 int nCount;
926 GIntBig *paList;
927 } Integer64List;
928
929 struct
930 {
931 int nCount;
932 double *paList;
933 } RealList;
934
935 struct
936 {
937 int nCount;
938 char **paList;
939 } StringList;
940
941 struct
942 {
943 int nCount;
944 GByte *paData;
945 } Binary;
946
947 struct
948 {
949 int nMarker1;
950 int nMarker2;
951 int nMarker3;
952 } Set;
953
954 struct
955 {
956 GInt16 Year;
957 GByte Month;
958 GByte Day;
959 GByte Hour;
960 GByte Minute;
961 GByte TZFlag; /* 0=unknown, 1=localtime(ambiguous),
962 100=GMT, 104=GMT+1, 80=GMT-5, etc */
963 GByte Reserved; /* must be set to 0 */
964 float Second; /* with millisecond accuracy. at the end of the structure,
965 so as to keep it 12 bytes on 32 bit */
966 } Date;
967
969} OGRField;
970
971#ifdef __cplusplus
973 inline int OGR_GET_MS(float fSec)
974{
975 if (CPLIsNan(fSec))
976 return 0;
977 if (fSec >= 999)
978 return 999;
979 if (fSec <= 0)
980 return 0;
981 const float fValue = (fSec - static_cast<int>(fSec)) * 1000 + 0.5f;
982 return static_cast<int>(fValue);
983}
984#endif // __cplusplus
985
987#define OGRPARSEDATE_OPTION_LAX 1
988
989int CPL_DLL OGRParseDate(const char *pszInput, OGRField *psOutput,
990 int nOptions);
991
992/* -------------------------------------------------------------------- */
993/* Constants from ogrsf_frmts.h for capabilities. */
994/* -------------------------------------------------------------------- */
995#define OLCRandomRead "RandomRead"
996#define OLCSequentialWrite \
997 "SequentialWrite"
998#define OLCRandomWrite "RandomWrite"
999#define OLCFastSpatialFilter \
1000 "FastSpatialFilter"
1001#define OLCFastFeatureCount \
1002 "FastFeatureCount"
1004#define OLCFastGetExtent \
1005 "FastGetExtent"
1006#define OLCFastGetExtent3D \
1007 "FastGetExtent3D"
1008#define OLCCreateField \
1009 "CreateField"
1011#define OLCDeleteField \
1012 "DeleteField"
1014#define OLCReorderFields \
1015 "ReorderFields"
1016#define OLCAlterFieldDefn \
1017 "AlterFieldDefn"
1018#define OLCAlterGeomFieldDefn \
1019 "AlterGeomFieldDefn"
1021#define OLCTransactions \
1022 "Transactions"
1024#define OLCDeleteFeature \
1025 "DeleteFeature"
1026#define OLCUpsertFeature \
1027 "UpsertFeature"
1028#define OLCUpdateFeature \
1029 "UpdateFeature"
1031#define OLCFastSetNextByIndex \
1032 "FastSetNextByIndex"
1034#define OLCStringsAsUTF8 \
1035 "StringsAsUTF8"
1037#define OLCIgnoreFields \
1038 "IgnoreFields"
1039#define OLCCreateGeomField \
1040 "CreateGeomField"
1041#define OLCCurveGeometries \
1042 "CurveGeometries"
1043#define OLCMeasuredGeometries \
1044 "MeasuredGeometries"
1046#define OLCZGeometries \
1047 "ZGeometries"
1049#define OLCRename \
1050 "Rename"
1051#define OLCFastGetArrowStream \
1052 "FastGetArrowStream"
1054#define OLCFastWriteArrowBatch \
1055 "FastWriteArrowBatch"
1058#define ODsCCreateLayer \
1059 "CreateLayer"
1060#define ODsCDeleteLayer \
1061 "DeleteLayer"
1062/* Reserved: "RenameLayer" */
1063#define ODsCCreateGeomFieldAfterCreateLayer \
1064 "CreateGeomFieldAfterCreateLayer"
1066#define ODsCCurveGeometries \
1067 "CurveGeometries"
1068#define ODsCTransactions \
1069 "Transactions"
1070#define ODsCEmulatedTransactions \
1071 "EmulatedTransactions"
1073#define ODsCMeasuredGeometries \
1074 "MeasuredGeometries"
1076#define ODsCZGeometries \
1077 "ZGeometries"
1079#define ODsCRandomLayerRead \
1080 "RandomLayerRead"
1082/* Note the unfortunate trailing space at the end of the string */
1083#define ODsCRandomLayerWrite \
1084 "RandomLayerWrite "
1086#define ODsCAddFieldDomain \
1087 "AddFieldDomain"
1089#define ODsCDeleteFieldDomain \
1090 "DeleteFieldDomain"
1092#define ODsCUpdateFieldDomain \
1093 "UpdateFieldDomain"
1096#define ODrCCreateDataSource \
1097 "CreateDataSource"
1098#define ODrCDeleteDataSource \
1099 "DeleteDataSource"
1101/* -------------------------------------------------------------------- */
1102/* Layer metadata items. */
1103/* -------------------------------------------------------------------- */
1108#define OLMD_FID64 "OLMD_FID64"
1109
1110/************************************************************************/
1111/* ogr_featurestyle.h related definitions. */
1112/************************************************************************/
1113
1118 typedef enum ogr_style_tool_class_id
1119{
1120 OGRSTCNone = 0,
1121 OGRSTCPen = 1,
1122 OGRSTCBrush = 2,
1123 OGRSTCSymbol = 3,
1124 OGRSTCLabel = 4,
1125 OGRSTCVector = 5
1126} OGRSTClassId;
1127
1131 typedef enum ogr_style_tool_units_id
1132{
1133 OGRSTUGround = 0,
1134 OGRSTUPixel = 1,
1135 OGRSTUPoints = 2,
1136 OGRSTUMM = 3,
1137 OGRSTUCM = 4,
1138 OGRSTUInches = 5
1139} OGRSTUnitId;
1140
1144 typedef enum ogr_style_tool_param_pen_id
1145{
1146 OGRSTPenColor = 0,
1147 OGRSTPenWidth = 1,
1148 OGRSTPenPattern = 2,
1149 OGRSTPenId = 3,
1150 OGRSTPenPerOffset = 4,
1151 OGRSTPenCap = 5,
1152 OGRSTPenJoin = 6,
1153 OGRSTPenPriority = 7,
1154#ifndef DOXYGEN_SKIP
1155 OGRSTPenLast = 8
1156#endif
1157} OGRSTPenParam;
1158
1162 typedef enum ogr_style_tool_param_brush_id
1163{
1164 OGRSTBrushFColor = 0,
1165 OGRSTBrushBColor = 1,
1166 OGRSTBrushId = 2,
1167 OGRSTBrushAngle = 3,
1168 OGRSTBrushSize = 4,
1169 OGRSTBrushDx = 5,
1170 OGRSTBrushDy = 6,
1171 OGRSTBrushPriority = 7,
1172#ifndef DOXYGEN_SKIP
1173 OGRSTBrushLast = 8
1174#endif
1175
1176} OGRSTBrushParam;
1177
1181 typedef enum ogr_style_tool_param_symbol_id
1182{
1183 OGRSTSymbolId = 0,
1184 OGRSTSymbolAngle = 1,
1185 OGRSTSymbolColor = 2,
1186 OGRSTSymbolSize = 3,
1187 OGRSTSymbolDx = 4,
1188 OGRSTSymbolDy = 5,
1189 OGRSTSymbolStep = 6,
1190 OGRSTSymbolPerp = 7,
1191 OGRSTSymbolOffset = 8,
1192 OGRSTSymbolPriority = 9,
1193 OGRSTSymbolFontName = 10,
1194 OGRSTSymbolOColor = 11,
1195#ifndef DOXYGEN_SKIP
1196 OGRSTSymbolLast = 12
1197#endif
1198} OGRSTSymbolParam;
1199
1203 typedef enum ogr_style_tool_param_label_id
1204{
1205 OGRSTLabelFontName = 0,
1206 OGRSTLabelSize = 1,
1207 OGRSTLabelTextString = 2,
1208 OGRSTLabelAngle = 3,
1209 OGRSTLabelFColor = 4,
1210 OGRSTLabelBColor = 5,
1211 OGRSTLabelPlacement = 6,
1212 OGRSTLabelAnchor = 7,
1213 OGRSTLabelDx = 8,
1214 OGRSTLabelDy = 9,
1215 OGRSTLabelPerp = 10,
1216 OGRSTLabelBold = 11,
1217 OGRSTLabelItalic = 12,
1218 OGRSTLabelUnderline = 13,
1219 OGRSTLabelPriority = 14,
1220 OGRSTLabelStrikeout = 15,
1221 OGRSTLabelStretch = 16,
1222 OGRSTLabelAdjHor = 17,
1223 OGRSTLabelAdjVert = 18,
1224 OGRSTLabelHColor = 19,
1225 OGRSTLabelOColor = 20,
1226#ifndef DOXYGEN_SKIP
1227 OGRSTLabelLast = 21
1228#endif
1229} OGRSTLabelParam;
1230
1231/* -------------------------------------------------------------------- */
1232/* Field domains */
1233/* -------------------------------------------------------------------- */
1234
1239 typedef struct
1240{
1242 char *pszCode;
1243
1245 char *pszValue;
1246} OGRCodedValue;
1247
1252 typedef enum
1253{
1255 OFDT_CODED,
1257 OFDT_RANGE,
1259 OFDT_GLOB
1260} OGRFieldDomainType;
1261
1269 typedef enum
1270{
1272 OFDSP_DEFAULT_VALUE,
1274 OFDSP_DUPLICATE,
1277 OFDSP_GEOMETRY_RATIO
1278} OGRFieldDomainSplitPolicy;
1279
1287 typedef enum
1288{
1290 OFDMP_DEFAULT_VALUE,
1292 OFDMP_SUM,
1294 OFDMP_GEOMETRY_WEIGHTED
1295} OGRFieldDomainMergePolicy;
1296
1297/* ------------------------------------------------------------------- */
1298/* Version checking */
1299/* -------------------------------------------------------------------- */
1300
1301#ifndef DOXYGEN_SKIP
1302
1303/* Note to developers : please keep this section in sync with gdal.h */
1304
1305#ifndef GDAL_VERSION_INFO_DEFINED
1306#define GDAL_VERSION_INFO_DEFINED
1307const char CPL_DLL *CPL_STDCALL GDALVersionInfo(const char *);
1308#endif
1309
1310#ifndef GDAL_CHECK_VERSION
1311
1324int CPL_DLL CPL_STDCALL GDALCheckVersion(int nVersionMajor, int nVersionMinor,
1325 const char *pszCallingComponentName);
1326
1328#define GDAL_CHECK_VERSION(pszCallingComponentName) \
1329 GDALCheckVersion(GDAL_VERSION_MAJOR, GDAL_VERSION_MINOR, \
1330 pszCallingComponentName)
1331
1332#endif
1333
1334#endif /* #ifndef DOXYGEN_SKIP */
1335
1336 CPL_C_END
1337
1338#endif /* ndef OGR_CORE_H_INCLUDED */
OGREnvelope3D
Simple container for a bounding region in 3D.
Definition: ogr_core.h:216
OGREnvelope3D::Merge
void Merge(OGREnvelope const &sOther)
Update the current object by computing its union with the other rectangle.
Definition: ogr_core.h:274
OGREnvelope3D::Merge
void Merge(OGREnvelope3D const &sOther)
Update the current object by computing its union with the other rectangle.
Definition: ogr_core.h:262
OGREnvelope3D::IsInit
int IsInit() const
Return whether the object has been initialized, that is, is non empty.
Definition: ogr_core.h:252
OGREnvelope3D::Merge
void Merge(double dfX, double dfY, double dfZ)
Update the current object by computing its union with the provided point.
Definition: ogr_core.h:284
OGREnvelope3D::Intersects
int Intersects(OGREnvelope3D const &other) const
Return whether the current object intersects with the other rectangle.
Definition: ogr_core.h:327
OGREnvelope3D::MaxZ
double MaxZ
Maximum Z value.
Definition: ogr_core.h:244
OGREnvelope3D::operator=
OGREnvelope3D & operator=(const OGREnvelope3D &)=default
Assignment operator.
OGREnvelope3D::Is3D
bool Is3D() const
Returns TRUE if MinZ and MaxZ are both valid numbers.
Definition: ogr_core.h:235
OGREnvelope3D::MinZ
double MinZ
Minimum Z value.
Definition: ogr_core.h:241
OGREnvelope3D::OGREnvelope3D
OGREnvelope3D()
Default constructor.
Definition: ogr_core.h:219
OGREnvelope3D::Contains
int Contains(OGREnvelope3D const &other) const
Return whether the current object contains the other rectangle.
Definition: ogr_core.h:335
OGREnvelope3D::Intersect
void Intersect(OGREnvelope3D const &sOther)
Update the current object by computing its intersection with the other rectangle.
Definition: ogr_core.h:296
OGREnvelope3D::OGREnvelope3D
OGREnvelope3D(const OGREnvelope3D &oOther)
Copy constructor.
Definition: ogr_core.h:226
OGREnvelope
Simple container for a bounding region (rectangle)
Definition: ogr_core.h:61
OGREnvelope::Contains
int Contains(OGREnvelope const &other) const
Return whether the current object contains the other rectangle.
Definition: ogr_core.h:165
OGREnvelope::MinY
double MinY
Minimum Y value.
Definition: ogr_core.h:89
OGREnvelope::operator!=
bool operator!=(const OGREnvelope &other) const
Return whether the current rectangle is not equal to the other rectangle.
Definition: ogr_core.h:189
OGREnvelope::MaxX
double MaxX
Maximum X value.
Definition: ogr_core.h:86
OGREnvelope::Intersect
void Intersect(OGREnvelope const &sOther)
Update the current object by computing its intersection with the other rectangle.
Definition: ogr_core.h:131
OGREnvelope::MinX
double MinX
Minimum X value.
Definition: ogr_core.h:83
OGREnvelope::OGREnvelope
OGREnvelope()
Default constructor.
Definition: ogr_core.h:64
OGREnvelope::MaxY
double MaxY
Maximum Y value.
Definition: ogr_core.h:92
OGREnvelope::IsInit
int IsInit() const
Return whether the object has been initialized, that is, is non empty.
Definition: ogr_core.h:100
OGREnvelope::Intersects
int Intersects(OGREnvelope const &other) const
Return whether the current object intersects with the other rectangle.
Definition: ogr_core.h:158
OGREnvelope::Merge
void Merge(double dfX, double dfY)
Update the current object by computing its union with the provided point.
Definition: ogr_core.h:121
OGREnvelope::operator==
bool operator==(const OGREnvelope &other) const
Return whether the current rectangle is equal to the other rectangle.
Definition: ogr_core.h:173
OGREnvelope::operator=
OGREnvelope & operator=(const OGREnvelope &)=default
Assignment operator.
OGREnvelope::OGREnvelope
OGREnvelope(const OGREnvelope &oOther)
Copy constructor.
Definition: ogr_core.h:73
OGREnvelope::Merge
void Merge(OGREnvelope const &sOther)
Update the current object by computing its union with the other rectangle.
Definition: ogr_core.h:111
cpl_port.h
Core portability definitions for CPL.
MIN
#define MIN(a, b)
Macro to compute the minimum of 2 values.
Definition: cpl_port.h:372
GInt16
short GInt16
Int16 type.
Definition: cpl_port.h:181
CPL_C_END
#define CPL_C_END
Macro to end a block of C symbols.
Definition: cpl_port.h:299
CPL_C_START
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:295
CPLIsNan
#define CPLIsNan(x)
Return whether a floating-pointer number is NaN.
Definition: cpl_port.h:667
GByte
unsigned char GByte
Unsigned byte type.
Definition: cpl_port.h:185
GIntBig
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition: cpl_port.h:215
MAX
#define MAX(a, b)
Macro to compute the maximum of 2 values.
Definition: cpl_port.h:374
GDALCheckVersion
int GDALCheckVersion(int nVersionMajor, int nVersionMinor, const char *pszCallingComponentName)
Return TRUE if GDAL library version at runtime matches nVersionMajor.nVersionMinor.
Definition: gdal_misc.cpp:2647
GDALVersionInfo
const char * GDALVersionInfo(const char *)
Get runtime version information.
Definition: gdal_misc.cpp:2477
OGRMergeGeometryTypesEx
OGRwkbGeometryType OGRMergeGeometryTypesEx(OGRwkbGeometryType eMain, OGRwkbGeometryType eExtra, int bAllowPromotingToCurves)
Find common geometry type.
Definition: ogrgeometry.cpp:2948
OGRERR_NOT_ENOUGH_MEMORY
#define OGRERR_NOT_ENOUGH_MEMORY
Not enough memory.
Definition: ogr_core.h:391
OGR_GT_HasM
int OGR_GT_HasM(OGRwkbGeometryType eType)
Return if the geometry type is a measured type.
Definition: ogrgeometry.cpp:7221
OGR_GT_IsSurface
int OGR_GT_IsSurface(OGRwkbGeometryType)
Return if a geometry type is an instance of Surface.
Definition: ogrgeometry.cpp:7556
OGRBoolean
int OGRBoolean
Type for a OGR boolean.
Definition: ogr_core.h:404
OGRFieldSubType
OGRFieldSubType
List of field subtypes.
Definition: ogr_core.h:821
OFSTBoolean
@ OFSTBoolean
Boolean integer.
Definition: ogr_core.h:824
OFSTInt16
@ OFSTInt16
Signed 16-bit integer.
Definition: ogr_core.h:826
OFSTUUID
@ OFSTUUID
UUID string representation.
Definition: ogr_core.h:837
OFSTJSON
@ OFSTJSON
JSON content.
Definition: ogr_core.h:833
OFSTNone
@ OFSTNone
No subtype.
Definition: ogr_core.h:822
OFSTFloat32
@ OFSTFloat32
Single precision (32 bit) floating point.
Definition: ogr_core.h:829
ogr_style_tool_param_symbol_id
ogr_style_tool_param_symbol_id
List of parameters for use with OGRStyleSymbol.
Definition: ogr_core.h:1182
OGRSTSymbolDy
@ OGRSTSymbolDy
Dy.
Definition: ogr_core.h:1188
OGRSTSymbolId
@ OGRSTSymbolId
Id.
Definition: ogr_core.h:1183
OGRSTSymbolSize
@ OGRSTSymbolSize
Size.
Definition: ogr_core.h:1186
OGRSTSymbolFontName
@ OGRSTSymbolFontName
Font name.
Definition: ogr_core.h:1193
OGRSTSymbolColor
@ OGRSTSymbolColor
Color.
Definition: ogr_core.h:1185
OGRSTSymbolDx
@ OGRSTSymbolDx
Dx.
Definition: ogr_core.h:1187
OGRSTSymbolPerp
@ OGRSTSymbolPerp
Perpendicular.
Definition: ogr_core.h:1190
OGRSTSymbolAngle
@ OGRSTSymbolAngle
Angle.
Definition: ogr_core.h:1184
OGRSTSymbolOColor
@ OGRSTSymbolOColor
Outline color.
Definition: ogr_core.h:1194
OGRSTSymbolPriority
@ OGRSTSymbolPriority
Priority.
Definition: ogr_core.h:1192
OGRSTSymbolStep
@ OGRSTSymbolStep
Step.
Definition: ogr_core.h:1189
OGRSTSymbolOffset
@ OGRSTSymbolOffset
Offset.
Definition: ogr_core.h:1191
OGRSTSymbolParam
enum ogr_style_tool_param_symbol_id OGRSTSymbolParam
List of parameters for use with OGRStyleSymbol.
OGRFieldDomainMergePolicy
OGRFieldDomainMergePolicy
Merge policy for field domains.
Definition: ogr_core.h:1288
OFDMP_SUM
@ OFDMP_SUM
Sum.
Definition: ogr_core.h:1292
OFDMP_GEOMETRY_WEIGHTED
@ OFDMP_GEOMETRY_WEIGHTED
New values are computed as the weighted average of the source values.
Definition: ogr_core.h:1294
OFDMP_DEFAULT_VALUE
@ OFDMP_DEFAULT_VALUE
Default value.
Definition: ogr_core.h:1290
OGRwkbByteOrder
OGRwkbByteOrder
Enumeration to describe byte order.
Definition: ogr_core.h:620
wkbXDR
@ wkbXDR
MSB/Sun/Motorola: Most Significant Byte First
Definition: ogr_core.h:621
wkbNDR
@ wkbNDR
LSB/Intel/Vax: Least Significant Byte First
Definition: ogr_core.h:622
OGRParseDate
int OGRParseDate(const char *pszInput, OGRField *psOutput, int nOptions)
Parse date string.
Definition: ogrutils.cpp:1077
OGRERR_UNSUPPORTED_GEOMETRY_TYPE
#define OGRERR_UNSUPPORTED_GEOMETRY_TYPE
Unsupported geometry type.
Definition: ogr_core.h:392
OGRFieldDomainType
OGRFieldDomainType
Type of field domain.
Definition: ogr_core.h:1253
OFDT_RANGE
@ OFDT_RANGE
Range (min/max)
Definition: ogr_core.h:1257
OFDT_CODED
@ OFDT_CODED
Coded.
Definition: ogr_core.h:1255
OFDT_GLOB
@ OFDT_GLOB
Glob (used by GeoPackage)
Definition: ogr_core.h:1259
OGRSTPenParam
enum ogr_style_tool_param_pen_id OGRSTPenParam
List of parameters for use with OGRStylePen.
OGR_GT_GetLinear
OGRwkbGeometryType OGR_GT_GetLinear(OGRwkbGeometryType eType)
Returns the non-curve geometry type that can contain the passed geometry type.
Definition: ogrgeometry.cpp:7493
OGR_GT_IsCurve
int OGR_GT_IsCurve(OGRwkbGeometryType)
Return if a geometry type is an instance of Curve.
Definition: ogrgeometry.cpp:7535
OGR_GT_SetZ
OGRwkbGeometryType OGR_GT_SetZ(OGRwkbGeometryType eType)
Returns the 3D geometry type corresponding to the passed geometry type.
Definition: ogrgeometry.cpp:7244
OGRERR_FAILURE
#define OGRERR_FAILURE
Failure.
Definition: ogr_core.h:395
OGRERR_UNSUPPORTED_OPERATION
#define OGRERR_UNSUPPORTED_OPERATION
Unsupported operation.
Definition: ogr_core.h:393
OGRwkbVariant
OGRwkbVariant
Output variants of WKB we support.
Definition: ogr_core.h:550
wkbVariantPostGIS1
@ wkbVariantPostGIS1
PostGIS 1.X has different codes for CurvePolygon, MultiCurve and MultiSurface.
Definition: ogr_core.h:554
wkbVariantOldOgc
@ wkbVariantOldOgc
Old-style 99-402 extended dimension (Z) WKB types.
Definition: ogr_core.h:551
wkbVariantIso
@ wkbVariantIso
SFSQL 1.2 and ISO SQL/MM Part 3 extended dimension (Z&M) WKB types.
Definition: ogr_core.h:552
OGRERR_NONE
#define OGRERR_NONE
Success.
Definition: ogr_core.h:389
OGRMergeGeometryTypes
OGRwkbGeometryType OGRMergeGeometryTypes(OGRwkbGeometryType eMain, OGRwkbGeometryType eExtra)
Find common geometry type.
Definition: ogrgeometry.cpp:2912
OGRJustification
OGRJustification
Display justification for field values.
Definition: ogr_core.h:846
OGRFieldType
OGRFieldType
List of feature field types.
Definition: ogr_core.h:793
OFTTime
@ OFTTime
Time.
Definition: ogr_core.h:804
OFTInteger64List
@ OFTInteger64List
List of 64bit integers.
Definition: ogr_core.h:807
OFTIntegerList
@ OFTIntegerList
List of 32bit integers.
Definition: ogr_core.h:795
OFTDate
@ OFTDate
Date.
Definition: ogr_core.h:803
OFTWideStringList
@ OFTWideStringList
deprecated
Definition: ogr_core.h:801
OFTInteger
@ OFTInteger
Simple 32bit integer.
Definition: ogr_core.h:794
OFTString
@ OFTString
String of ASCII chars.
Definition: ogr_core.h:798
OFTBinary
@ OFTBinary
Raw Binary data.
Definition: ogr_core.h:802
OFTRealList
@ OFTRealList
List of doubles.
Definition: ogr_core.h:797
OFTReal
@ OFTReal
Double Precision floating point.
Definition: ogr_core.h:796
OFTStringList
@ OFTStringList
Array of strings.
Definition: ogr_core.h:799
OFTDateTime
@ OFTDateTime
Date and Time.
Definition: ogr_core.h:805
OFTInteger64
@ OFTInteger64
Single 64bit integer.
Definition: ogr_core.h:806
OFTWideString
@ OFTWideString
deprecated
Definition: ogr_core.h:800
OGR_GT_GetCurve
OGRwkbGeometryType OGR_GT_GetCurve(OGRwkbGeometryType eType)
Returns the curve geometry type that can contain the passed geometry type.
Definition: ogrgeometry.cpp:7443
OGRwkbGeometryType
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:416
wkbPolygon25D
@ wkbPolygon25D
2.5D extension as per 99-402
Definition: ogr_core.h:515
wkbCurve
@ wkbCurve
Curve (abstract type).
Definition: ogr_core.h:443
wkbLineString
@ wkbLineString
1-dimensional geometric object with linear interpolation between Points, standard WKB
Definition: ogr_core.h:420
wkbCircularString
@ wkbCircularString
one or more circular arc segments connected end to end, ISO SQL/MM Part 3.
Definition: ogr_core.h:432
wkbSurfaceZM
@ wkbSurfaceZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:506
wkbPolygon
@ wkbPolygon
planar 2-dimensional geometric object defined by 1 exterior boundary and 0 or more interior boundarie...
Definition: ogr_core.h:422
wkbTriangle
@ wkbTriangle
a Triangle.
Definition: ogr_core.h:452
wkbPoint25D
@ wkbPoint25D
2.5D extension as per 99-402
Definition: ogr_core.h:513
wkbSurfaceZ
@ wkbSurfaceZ
wkbSurface with Z component.
Definition: ogr_core.h:469
wkbMultiSurfaceM
@ wkbMultiSurfaceM
ISO SQL/MM Part 3.
Definition: ogr_core.h:486
wkbPolygonZM
@ wkbPolygonZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:495
wkbMultiPolygon25D
@ wkbMultiPolygon25D
2.5D extension as per 99-402
Definition: ogr_core.h:518
wkbPolyhedralSurfaceM
@ wkbPolyhedralSurfaceM
ISO SQL/MM Part 3.
Definition: ogr_core.h:489
wkbTINZM
@ wkbTINZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:508
wkbMultiPointZM
@ wkbMultiPointZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:496
wkbPointM
@ wkbPointM
ISO SQL/MM Part 3.
Definition: ogr_core.h:475
wkbMultiLineString
@ wkbMultiLineString
GeometryCollection of LineStrings, standard WKB.
Definition: ogr_core.h:426
wkbCompoundCurveM
@ wkbCompoundCurveM
ISO SQL/MM Part 3.
Definition: ogr_core.h:483
wkbUnknown
@ wkbUnknown
unknown type, non-standard
Definition: ogr_core.h:417
wkbMultiSurfaceZM
@ wkbMultiSurfaceZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:504
wkbTINZ
@ wkbTINZ
ISO SQL/MM Part 3.
Definition: ogr_core.h:472
wkbCircularStringM
@ wkbCircularStringM
ISO SQL/MM Part 3.
Definition: ogr_core.h:482
wkbPolygonM
@ wkbPolygonM
ISO SQL/MM Part 3.
Definition: ogr_core.h:477
wkbMultiCurveM
@ wkbMultiCurveM
ISO SQL/MM Part 3.
Definition: ogr_core.h:485
wkbLinearRing
@ wkbLinearRing
non-standard, just for createGeometry()
Definition: ogr_core.h:455
wkbLineStringM
@ wkbLineStringM
ISO SQL/MM Part 3.
Definition: ogr_core.h:476
wkbTIN
@ wkbTIN
a PolyhedralSurface consisting only of Triangle patches ISO SQL/MM Part 3.
Definition: ogr_core.h:450
wkbGeometryCollection25D
@ wkbGeometryCollection25D
2.5D extension as per 99-402
Definition: ogr_core.h:519
wkbSurfaceM
@ wkbSurfaceM
ISO SQL/MM Part 3.
Definition: ogr_core.h:488
wkbCurvePolygonM
@ wkbCurvePolygonM
ISO SQL/MM Part 3.
Definition: ogr_core.h:484
wkbPolyhedralSurface
@ wkbPolyhedralSurface
a contiguous collection of polygons, which share common boundary segments, ISO SQL/MM Part 3.
Definition: ogr_core.h:447
wkbSurface
@ wkbSurface
Surface (abstract type).
Definition: ogr_core.h:445
wkbMultiCurveZ
@ wkbMultiCurveZ
wkbMultiCurve with Z component.
Definition: ogr_core.h:463
wkbCircularStringZ
@ wkbCircularStringZ
wkbCircularString with Z component.
Definition: ogr_core.h:457
wkbPoint
@ wkbPoint
0-dimensional geometric object, standard WKB
Definition: ogr_core.h:419
wkbCompoundCurve
@ wkbCompoundCurve
sequence of contiguous curves, ISO SQL/MM Part 3.
Definition: ogr_core.h:434
wkbPolyhedralSurfaceZ
@ wkbPolyhedralSurfaceZ
ISO SQL/MM Part 3.
Definition: ogr_core.h:471
wkbGeometryCollection
@ wkbGeometryCollection
geometric object that is a collection of 1 or more geometric objects, standard WKB
Definition: ogr_core.h:429
wkbMultiPolygon
@ wkbMultiPolygon
GeometryCollection of Polygons, standard WKB.
Definition: ogr_core.h:428
wkbMultiPoint
@ wkbMultiPoint
GeometryCollection of Points, standard WKB.
Definition: ogr_core.h:425
wkbMultiLineStringM
@ wkbMultiLineStringM
ISO SQL/MM Part 3.
Definition: ogr_core.h:479
wkbMultiCurveZM
@ wkbMultiCurveZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:503
wkbMultiPoint25D
@ wkbMultiPoint25D
2.5D extension as per 99-402
Definition: ogr_core.h:516
wkbNone
@ wkbNone
non-standard, for pure attribute records
Definition: ogr_core.h:454
wkbMultiPointM
@ wkbMultiPointM
ISO SQL/MM Part 3.
Definition: ogr_core.h:478
wkbCircularStringZM
@ wkbCircularStringZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:500
wkbCurvePolygonZ
@ wkbCurvePolygonZ
wkbCurvePolygon with Z component.
Definition: ogr_core.h:461
wkbCompoundCurveZM
@ wkbCompoundCurveZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:501
wkbTriangleZ
@ wkbTriangleZ
ISO SQL/MM Part 3.
Definition: ogr_core.h:473
wkbPointZM
@ wkbPointZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:493
wkbCurvePolygon
@ wkbCurvePolygon
planar surface, defined by 1 exterior boundary and zero or more interior boundaries,...
Definition: ogr_core.h:436
wkbLineStringZM
@ wkbLineStringZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:494
wkbMultiSurface
@ wkbMultiSurface
GeometryCollection of Surfaces, ISO SQL/MM Part 3.
Definition: ogr_core.h:441
wkbMultiPolygonM
@ wkbMultiPolygonM
ISO SQL/MM Part 3.
Definition: ogr_core.h:480
wkbCurveZM
@ wkbCurveZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:505
wkbLineString25D
@ wkbLineString25D
2.5D extension as per 99-402
Definition: ogr_core.h:514
wkbMultiLineStringZM
@ wkbMultiLineStringZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:497
wkbPolyhedralSurfaceZM
@ wkbPolyhedralSurfaceZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:507
wkbGeometryCollectionZM
@ wkbGeometryCollectionZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:499
wkbTriangleZM
@ wkbTriangleZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:509
wkbGeometryCollectionM
@ wkbGeometryCollectionM
ISO SQL/MM Part 3.
Definition: ogr_core.h:481
wkbCurveM
@ wkbCurveM
ISO SQL/MM Part 3.
Definition: ogr_core.h:487
wkbMultiLineString25D
@ wkbMultiLineString25D
2.5D extension as per 99-402
Definition: ogr_core.h:517
wkbTriangleM
@ wkbTriangleM
ISO SQL/MM Part 3.
Definition: ogr_core.h:491
wkbMultiPolygonZM
@ wkbMultiPolygonZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:498
wkbTINM
@ wkbTINM
ISO SQL/MM Part 3.
Definition: ogr_core.h:490
wkbCurveZ
@ wkbCurveZ
wkbCurve with Z component.
Definition: ogr_core.h:467
wkbCurvePolygonZM
@ wkbCurvePolygonZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:502
wkbMultiCurve
@ wkbMultiCurve
GeometryCollection of Curves, ISO SQL/MM Part 3.
Definition: ogr_core.h:439
wkbCompoundCurveZ
@ wkbCompoundCurveZ
wkbCompoundCurve with Z component.
Definition: ogr_core.h:459
wkbMultiSurfaceZ
@ wkbMultiSurfaceZ
wkbMultiSurface with Z component.
Definition: ogr_core.h:465
OGR_GT_SetModifier
OGRwkbGeometryType OGR_GT_SetModifier(OGRwkbGeometryType eType, int bSetZ, int bSetM)
Returns a XY, XYZ, XYM or XYZM geometry type depending on parameter.
Definition: ogrgeometry.cpp:7295
OGRERR_CORRUPT_DATA
#define OGRERR_CORRUPT_DATA
Corrupt data.
Definition: ogr_core.h:394
ogr_style_tool_param_label_id
ogr_style_tool_param_label_id
List of parameters for use with OGRStyleLabel.
Definition: ogr_core.h:1204
OGRSTLabelUnderline
@ OGRSTLabelUnderline
Underline.
Definition: ogr_core.h:1218
OGRSTLabelPriority
@ OGRSTLabelPriority
Priority.
Definition: ogr_core.h:1219
OGRSTLabelAdjVert
@ OGRSTLabelAdjVert
OBSOLETE; do not use.
Definition: ogr_core.h:1223
OGRSTLabelBold
@ OGRSTLabelBold
Bold.
Definition: ogr_core.h:1216
OGRSTLabelStrikeout
@ OGRSTLabelStrikeout
Strike out.
Definition: ogr_core.h:1220
OGRSTLabelBColor
@ OGRSTLabelBColor
Background color.
Definition: ogr_core.h:1210
OGRSTLabelPlacement
@ OGRSTLabelPlacement
Placement.
Definition: ogr_core.h:1211
OGRSTLabelPerp
@ OGRSTLabelPerp
Perpendicular.
Definition: ogr_core.h:1215
OGRSTLabelOColor
@ OGRSTLabelOColor
Outline color.
Definition: ogr_core.h:1225
OGRSTLabelDx
@ OGRSTLabelDx
Dx.
Definition: ogr_core.h:1213
OGRSTLabelHColor
@ OGRSTLabelHColor
Highlight color.
Definition: ogr_core.h:1224
OGRSTLabelItalic
@ OGRSTLabelItalic
Italic.
Definition: ogr_core.h:1217
OGRSTLabelTextString
@ OGRSTLabelTextString
Text string.
Definition: ogr_core.h:1207
OGRSTLabelSize
@ OGRSTLabelSize
Size.
Definition: ogr_core.h:1206
OGRSTLabelAngle
@ OGRSTLabelAngle
Angle.
Definition: ogr_core.h:1208
OGRSTLabelFColor
@ OGRSTLabelFColor
Foreground color.
Definition: ogr_core.h:1209
OGRSTLabelDy
@ OGRSTLabelDy
Dy.
Definition: ogr_core.h:1214
OGRSTLabelFontName
@ OGRSTLabelFontName
Font name.
Definition: ogr_core.h:1205
OGRSTLabelStretch
@ OGRSTLabelStretch
Stretch.
Definition: ogr_core.h:1221
OGRSTLabelAnchor
@ OGRSTLabelAnchor
Anchor.
Definition: ogr_core.h:1212
OGRSTLabelAdjHor
@ OGRSTLabelAdjHor
OBSOLETE; do not use.
Definition: ogr_core.h:1222
ogr_style_tool_units_id
ogr_style_tool_units_id
List of units supported by OGRStyleTools.
Definition: ogr_core.h:1132
OGRSTUGround
@ OGRSTUGround
Ground unit.
Definition: ogr_core.h:1133
OGRSTUMM
@ OGRSTUMM
Millimeter.
Definition: ogr_core.h:1136
OGRSTUInches
@ OGRSTUInches
Inch.
Definition: ogr_core.h:1138
OGRSTUCM
@ OGRSTUCM
Centimeter.
Definition: ogr_core.h:1137
OGRSTUPoints
@ OGRSTUPoints
Points.
Definition: ogr_core.h:1135
OGRSTUPixel
@ OGRSTUPixel
Pixel.
Definition: ogr_core.h:1134
OGR_GT_IsSubClassOf
int OGR_GT_IsSubClassOf(OGRwkbGeometryType eType, OGRwkbGeometryType eSuperType)
Returns if a type is a subclass of another one.
Definition: ogrgeometry.cpp:7322
OGRSTClassId
enum ogr_style_tool_class_id OGRSTClassId
OGRStyleTool derived class types (returned by GetType()).
OGRERR_NON_EXISTING_FEATURE
#define OGRERR_NON_EXISTING_FEATURE
Non existing feature.
Definition: ogr_core.h:398
OGRGeometryTypeToName
const char * OGRGeometryTypeToName(OGRwkbGeometryType eType)
Fetch a human readable name corresponding to an OGRwkbGeometryType value.
Definition: ogrgeometry.cpp:2690
OGRSTUnitId
enum ogr_style_tool_units_id OGRSTUnitId
List of units supported by OGRStyleTools.
OGRERR_INVALID_HANDLE
#define OGRERR_INVALID_HANDLE
Invalid handle.
Definition: ogr_core.h:397
OGRSTBrushParam
enum ogr_style_tool_param_brush_id OGRSTBrushParam
List of parameters for use with OGRStyleBrush.
OGRSTLabelParam
enum ogr_style_tool_param_label_id OGRSTLabelParam
List of parameters for use with OGRStyleLabel.
OGRERR_NOT_ENOUGH_DATA
#define OGRERR_NOT_ENOUGH_DATA
Not enough data to deserialize.
Definition: ogr_core.h:390
OGRErr
int OGRErr
Type for a OGR error.
Definition: ogr_core.h:387
OGR_GET_MS
int OGR_GET_MS(float fSec)
Return the number of milliseconds from a datetime with decimal seconds.
Definition: ogr_core.h:973
ogr_style_tool_param_brush_id
ogr_style_tool_param_brush_id
List of parameters for use with OGRStyleBrush.
Definition: ogr_core.h:1163
OGRSTBrushAngle
@ OGRSTBrushAngle
Angle.
Definition: ogr_core.h:1167
OGRSTBrushId
@ OGRSTBrushId
Id.
Definition: ogr_core.h:1166
OGRSTBrushPriority
@ OGRSTBrushPriority
Priority.
Definition: ogr_core.h:1171
OGRSTBrushBColor
@ OGRSTBrushBColor
Background color.
Definition: ogr_core.h:1165
OGRSTBrushSize
@ OGRSTBrushSize
Size.
Definition: ogr_core.h:1168
OGRSTBrushDy
@ OGRSTBrushDy
Dy.
Definition: ogr_core.h:1170
OGRSTBrushFColor
@ OGRSTBrushFColor
Foreground color.
Definition: ogr_core.h:1164
OGRSTBrushDx
@ OGRSTBrushDx
Dx.
Definition: ogr_core.h:1169
OGR_GT_GetCollection
OGRwkbGeometryType OGR_GT_GetCollection(OGRwkbGeometryType eType)
Returns the collection type that can contain the passed geometry type.
Definition: ogrgeometry.cpp:7386
OGR_GT_SetM
OGRwkbGeometryType OGR_GT_SetM(OGRwkbGeometryType eType)
Returns the measured geometry type corresponding to the passed geometry type.
Definition: ogrgeometry.cpp:7268
ogr_style_tool_class_id
ogr_style_tool_class_id
OGRStyleTool derived class types (returned by GetType()).
Definition: ogr_core.h:1119
OGRSTCBrush
@ OGRSTCBrush
Brush.
Definition: ogr_core.h:1122
OGRSTCVector
@ OGRSTCVector
Vector.
Definition: ogr_core.h:1125
OGRSTCNone
@ OGRSTCNone
None.
Definition: ogr_core.h:1120
OGRSTCLabel
@ OGRSTCLabel
Label.
Definition: ogr_core.h:1124
OGRSTCPen
@ OGRSTCPen
Pen.
Definition: ogr_core.h:1121
OGRSTCSymbol
@ OGRSTCSymbol
Symbol.
Definition: ogr_core.h:1123
OGR_GT_Flatten
OGRwkbGeometryType OGR_GT_Flatten(OGRwkbGeometryType eType)
Returns the 2D geometry type corresponding to the passed geometry type.
Definition: ogrgeometry.cpp:7172
ogr_style_tool_param_pen_id
ogr_style_tool_param_pen_id
List of parameters for use with OGRStylePen.
Definition: ogr_core.h:1145
OGRSTPenId
@ OGRSTPenId
Id.
Definition: ogr_core.h:1149
OGRSTPenCap
@ OGRSTPenCap
Cap.
Definition: ogr_core.h:1151
OGRSTPenPerOffset
@ OGRSTPenPerOffset
Perpendicular offset.
Definition: ogr_core.h:1150
OGRSTPenWidth
@ OGRSTPenWidth
Width.
Definition: ogr_core.h:1147
OGRSTPenColor
@ OGRSTPenColor
Color.
Definition: ogr_core.h:1146
OGRSTPenJoin
@ OGRSTPenJoin
Join.
Definition: ogr_core.h:1152
OGRSTPenPriority
@ OGRSTPenPriority
Priority.
Definition: ogr_core.h:1153
OGRSTPenPattern
@ OGRSTPenPattern
Pattern.
Definition: ogr_core.h:1148
OGR_GT_IsNonLinear
int OGR_GT_IsNonLinear(OGRwkbGeometryType)
Return if a geometry type is a non-linear geometry type.
Definition: ogrgeometry.cpp:7578
OGRERR_UNSUPPORTED_SRS
#define OGRERR_UNSUPPORTED_SRS
Unsupported SRS.
Definition: ogr_core.h:396
OGR_GT_HasZ
int OGR_GT_HasZ(OGRwkbGeometryType eType)
Return if the geometry type is a 3D geometry type.
Definition: ogrgeometry.cpp:7197
OGRFieldDomainSplitPolicy
OGRFieldDomainSplitPolicy
Split policy for field domains.
Definition: ogr_core.h:1270
OFDSP_DEFAULT_VALUE
@ OFDSP_DEFAULT_VALUE
Default value.
Definition: ogr_core.h:1272
OFDSP_DUPLICATE
@ OFDSP_DUPLICATE
Duplicate.
Definition: ogr_core.h:1274
OFDSP_GEOMETRY_RATIO
@ OFDSP_GEOMETRY_RATIO
New values are computed by the ratio of their area/length compared to the area/length of the original...
Definition: ogr_core.h:1277
OGRCodedValue
Associates a code and a value.
Definition: ogr_core.h:1240
OGRCodedValue::pszValue
char * pszValue
Value.
Definition: ogr_core.h:1245
OGRCodedValue::pszCode
char * pszCode
Code.
Definition: ogr_core.h:1242
OGRField
OGRFeature field attribute value union.
Definition: ogr_core.h:910