GDAL
ogr_core.h
Go to the documentation of this file.
1/******************************************************************************
2 * $Id: ogr_core.h 3b0c26d57528326c074a9c82890e737e2d516a7d 2022-02-23 14:39:49Z Andrew C Aitchison $
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_RELEASE_DATE_AND_GDAL_RELEASE_NAME
37#endif
38#include "gdal_version.h"
39
45
46#if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS)
47
48extern "C++"
49{
50#if !defined(DOXYGEN_SKIP)
51#include <limits>
52#endif
53
57class CPL_DLL OGREnvelope
58{
59 public:
61 OGREnvelope() : MinX(std::numeric_limits<double>::infinity()),
62 MaxX(-std::numeric_limits<double>::infinity()),
63 MinY(std::numeric_limits<double>::infinity()),
64 MaxY(-std::numeric_limits<double>::infinity())
65 {
66 }
67
69 OGREnvelope(const OGREnvelope& oOther) :
70 MinX(oOther.MinX),MaxX(oOther.MaxX), MinY(oOther.MinY), MaxY(oOther.MaxY)
71 {
72 }
73
75 OGREnvelope& operator=(const OGREnvelope&) = default;
76
78 double MinX;
79
81 double MaxX;
82
84 double MinY;
85
87 double MaxY;
88
89#ifdef HAVE_GCC_DIAGNOSTIC_PUSH
90#pragma GCC diagnostic push
91#pragma GCC diagnostic ignored "-Wfloat-equal"
92#endif
94 int IsInit() const { return MinX != std::numeric_limits<double>::infinity(); }
95
96#ifdef HAVE_GCC_DIAGNOSTIC_PUSH
97#pragma GCC diagnostic pop
98#endif
99
101 void Merge( OGREnvelope const& sOther ) {
102 MinX = MIN(MinX,sOther.MinX);
103 MaxX = MAX(MaxX,sOther.MaxX);
104 MinY = MIN(MinY,sOther.MinY);
105 MaxY = MAX(MaxY,sOther.MaxY);
106 }
107
109 void Merge( double dfX, double dfY ) {
110 MinX = MIN(MinX,dfX);
111 MaxX = MAX(MaxX,dfX);
112 MinY = MIN(MinY,dfY);
113 MaxY = MAX(MaxY,dfY);
114 }
115
117 void Intersect( OGREnvelope const& sOther ) {
118 if(Intersects(sOther))
119 {
120 if( IsInit() )
121 {
122 MinX = MAX(MinX,sOther.MinX);
123 MaxX = MIN(MaxX,sOther.MaxX);
124 MinY = MAX(MinY,sOther.MinY);
125 MaxY = MIN(MaxY,sOther.MaxY);
126 }
127 else
128 {
129 MinX = sOther.MinX;
130 MaxX = sOther.MaxX;
131 MinY = sOther.MinY;
132 MaxY = sOther.MaxY;
133 }
134 }
135 else
136 {
137 *this = OGREnvelope();
138 }
139 }
140
142 int Intersects(OGREnvelope const& other) const
143 {
144 return MinX <= other.MaxX && MaxX >= other.MinX &&
145 MinY <= other.MaxY && MaxY >= other.MinY;
146 }
147
149 int Contains(OGREnvelope const& other) const
150 {
151 return MinX <= other.MinX && MinY <= other.MinY &&
152 MaxX >= other.MaxX && MaxY >= other.MaxY;
153 }
154
156 bool operator== (const OGREnvelope& other) const
157 {
158#ifdef HAVE_GCC_DIAGNOSTIC_PUSH
159#pragma GCC diagnostic push
160#pragma GCC diagnostic ignored "-Wfloat-equal"
161#endif
162 return MinX == other.MinX &&
163 MinY == other.MinY &&
164 MaxX == other.MaxX &&
165 MaxY == other.MaxY;
166
167#ifdef HAVE_GCC_DIAGNOSTIC_PUSH
168#pragma GCC diagnostic pop
169#endif
170 }
171
173 bool operator!= (const OGREnvelope& other) const
174 {
175 return !(*this == other);
176 }
177};
178
179} // extern "C++"
180
181#else
182typedef struct
183{
184 double MinX;
185 double MaxX;
186 double MinY;
187 double MaxY;
189#endif
190
191#if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS)
192
193extern "C++" {
194
198class CPL_DLL OGREnvelope3D : public OGREnvelope
199{
200 public:
203 MinZ(std::numeric_limits<double>::infinity()),
204 MaxZ(-std::numeric_limits<double>::infinity())
205 {
206 }
207
210 OGREnvelope(oOther),
211 MinZ(oOther.MinZ), MaxZ(oOther.MaxZ)
212 {
213 }
214
217
219 double MinZ;
220
222 double MaxZ;
223
224#ifdef HAVE_GCC_DIAGNOSTIC_PUSH
225#pragma GCC diagnostic push
226#pragma GCC diagnostic ignored "-Wfloat-equal"
227#endif
229 int IsInit() const { return MinX != std::numeric_limits<double>::infinity(); }
230#ifdef HAVE_GCC_DIAGNOSTIC_PUSH
231#pragma GCC diagnostic pop
232#endif
233
235 void Merge( OGREnvelope3D const& sOther ) {
236 MinX = MIN(MinX,sOther.MinX);
237 MaxX = MAX(MaxX,sOther.MaxX);
238 MinY = MIN(MinY,sOther.MinY);
239 MaxY = MAX(MaxY,sOther.MaxY);
240 MinZ = MIN(MinZ,sOther.MinZ);
241 MaxZ = MAX(MaxZ,sOther.MaxZ);
242 }
243
245 void Merge( double dfX, double dfY, double dfZ ) {
246 MinX = MIN(MinX,dfX);
247 MaxX = MAX(MaxX,dfX);
248 MinY = MIN(MinY,dfY);
249 MaxY = MAX(MaxY,dfY);
250 MinZ = MIN(MinZ,dfZ);
251 MaxZ = MAX(MaxZ,dfZ);
252 }
253
255 void Intersect( OGREnvelope3D const& sOther ) {
256 if(Intersects(sOther))
257 {
258 if( IsInit() )
259 {
260 MinX = MAX(MinX,sOther.MinX);
261 MaxX = MIN(MaxX,sOther.MaxX);
262 MinY = MAX(MinY,sOther.MinY);
263 MaxY = MIN(MaxY,sOther.MaxY);
264 MinZ = MAX(MinZ,sOther.MinZ);
265 MaxZ = MIN(MaxZ,sOther.MaxZ);
266 }
267 else
268 {
269 MinX = sOther.MinX;
270 MaxX = sOther.MaxX;
271 MinY = sOther.MinY;
272 MaxY = sOther.MaxY;
273 MinZ = sOther.MinZ;
274 MaxZ = sOther.MaxZ;
275 }
276 }
277 else
278 {
279 *this = OGREnvelope3D();
280 }
281 }
282
284 int Intersects(OGREnvelope3D const& other) const
285 {
286 return MinX <= other.MaxX && MaxX >= other.MinX &&
287 MinY <= other.MaxY && MaxY >= other.MinY &&
288 MinZ <= other.MaxZ && MaxZ >= other.MinZ;
289 }
290
292 int Contains(OGREnvelope3D const& other) const
293 {
294 return MinX <= other.MinX && MinY <= other.MinY &&
295 MaxX >= other.MaxX && MaxY >= other.MaxY &&
296 MinZ <= other.MinZ && MaxZ >= other.MaxZ;
297 }
298};
299
300} // extern "C++"
301
302#else
303typedef struct
304{
305 double MinX;
306 double MaxX;
307 double MinY;
308 double MaxY;
309 double MinZ;
310 double MaxZ;
312#endif
313
315
317void CPL_DLL *OGRMalloc( size_t ) CPL_WARN_DEPRECATED("Use CPLMalloc instead.");
318void CPL_DLL *OGRCalloc( size_t, size_t ) CPL_WARN_DEPRECATED("Use CPLCalloc instead.");
319void CPL_DLL *OGRRealloc( void *, size_t ) CPL_WARN_DEPRECATED("Use CPLRealloc instead.");
320char CPL_DLL *OGRStrdup( const char * ) CPL_WARN_DEPRECATED("Use CPLStrdup instead.");
321void CPL_DLL OGRFree( void * ) CPL_WARN_DEPRECATED("Use CPLFree instead.");
323
324#ifdef STRICT_OGRERR_TYPE
326typedef enum
327{
338} OGRErr;
339#else
341typedef int OGRErr;
342
343#define OGRERR_NONE 0
344#define OGRERR_NOT_ENOUGH_DATA 1
345#define OGRERR_NOT_ENOUGH_MEMORY 2
346#define OGRERR_UNSUPPORTED_GEOMETRY_TYPE 3
347#define OGRERR_UNSUPPORTED_OPERATION 4
348#define OGRERR_CORRUPT_DATA 5
349#define OGRERR_FAILURE 6
350#define OGRERR_UNSUPPORTED_SRS 7
351#define OGRERR_INVALID_HANDLE 8
352#define OGRERR_NON_EXISTING_FEATURE 9
353
354#endif
355
357typedef int OGRBoolean;
358
359/* -------------------------------------------------------------------- */
360/* ogr_geometry.h related definitions. */
361/* -------------------------------------------------------------------- */
362
368typedef enum
369{
371
383
392 wkbCurve = 13,
396 wkbTIN = 16,
399
400 wkbNone = 100,
402
408 wkbCurveZ = 1013,
409 wkbSurfaceZ = 1014,
411 wkbTINZ = 1016,
413
414 wkbPointM = 2001,
416 wkbPolygonM = 2003,
426 wkbCurveM = 2013,
427 wkbSurfaceM = 2014,
429 wkbTINM = 2016,
431
432 wkbPointZM = 3001,
444 wkbCurveZM = 3013,
447 wkbTINZM = 3016,
449
450#if defined(DOXYGEN_SKIP)
451 // Sphinx doesn't like 0x8000000x constants
452 wkbPoint25D = -2147483647,
453 wkbLineString25D = -2147483646,
454 wkbPolygon25D = -2147483645,
455 wkbMultiPoint25D = -2147483644,
456 wkbMultiLineString25D = -2147483643,
457 wkbMultiPolygon25D = -2147483642,
459#else
460 wkbPoint25D = 0x80000001,
461 wkbLineString25D = 0x80000002,
462 wkbPolygon25D = 0x80000003,
463 wkbMultiPoint25D = 0x80000004,
464 wkbMultiLineString25D = 0x80000005,
465 wkbMultiPolygon25D = 0x80000006,
466 wkbGeometryCollection25D = 0x80000007
467#endif
469
490
491#ifndef GDAL_COMPILATION
493#define wkb25DBit 0x80000000
494#endif
495
496#ifndef __cplusplus
498#define wkbFlatten(x) OGR_GT_Flatten((OGRwkbGeometryType)(x))
499#else
501#define wkbFlatten(x) OGR_GT_Flatten(static_cast<OGRwkbGeometryType>(x))
502#endif
503
507#define wkbHasZ(x) (OGR_GT_HasZ(x) != 0)
508
512#define wkbSetZ(x) OGR_GT_SetZ(x)
513
517#define wkbHasM(x) (OGR_GT_HasM(x) != 0)
518
522#define wkbSetM(x) OGR_GT_SetM(x)
523
524#ifndef DOXYGEN_SKIP
525#define ogrZMarker 0x21125711
526#endif
527
528const char CPL_DLL * OGRGeometryTypeToName( OGRwkbGeometryType eType );
530 OGRwkbGeometryType eExtra );
532 OGRwkbGeometryType eExtra,
533 int bAllowPromotingToCurves );
537OGRwkbGeometryType CPL_DLL OGR_GT_SetModifier( OGRwkbGeometryType eType, int bSetZ, int bSetM );
538int CPL_DLL OGR_GT_HasZ( OGRwkbGeometryType eType );
539int CPL_DLL OGR_GT_HasM( OGRwkbGeometryType eType );
540int CPL_DLL OGR_GT_IsSubClassOf( OGRwkbGeometryType eType,
541 OGRwkbGeometryType eSuperType );
548
550typedef enum
551{
552 wkbXDR = 0,
555
556#ifndef DOXYGEN_SKIP
557
558#ifndef NO_HACK_FOR_IBM_DB2_V72
559# define HACK_FOR_IBM_DB2_V72
560#endif
561
562#ifdef HACK_FOR_IBM_DB2_V72
563# define DB2_V72_FIX_BYTE_ORDER(x) ((((x) & 0x31) == (x)) ? ((x) & 0x1) : (x))
564# define DB2_V72_UNFIX_BYTE_ORDER(x) CPL_STATIC_CAST(unsigned char, OGRGeometry::bGenerate_DB2_V72_BYTE_ORDER ? ((x) | 0x30) : (x))
565#else
566# define DB2_V72_FIX_BYTE_ORDER(x) (x)
567# define DB2_V72_UNFIX_BYTE_ORDER(x) (x)
568#endif
569
570#endif /* #ifndef DOXYGEN_SKIP */
571
575#define ALTER_NAME_FLAG 0x1
576
580#define ALTER_TYPE_FLAG 0x2
581
585#define ALTER_WIDTH_PRECISION_FLAG 0x4
586
591#define ALTER_NULLABLE_FLAG 0x8
592
597#define ALTER_DEFAULT_FLAG 0x10
598
603#define ALTER_UNIQUE_FLAG 0x20
604
609#define ALTER_DOMAIN_FLAG 0x40
610
611
615#define ALTER_ALL_FLAG (ALTER_NAME_FLAG | ALTER_TYPE_FLAG | ALTER_WIDTH_PRECISION_FLAG | ALTER_NULLABLE_FLAG | ALTER_DEFAULT_FLAG | ALTER_UNIQUE_FLAG | ALTER_DOMAIN_FLAG)
616
621#define OGR_F_VAL_NULL 0x00000001
622
627#define OGR_F_VAL_GEOM_TYPE 0x00000002
628
633#define OGR_F_VAL_WIDTH 0x00000004
634
642#define OGR_F_VAL_ALLOW_NULL_WHEN_DEFAULT 0x00000008
643
650#define OGR_F_VAL_ALLOW_DIFFERENT_GEOM_DIM 0x00000010
651
656#define OGR_F_VAL_ALL (0x7FFFFFFF & ~OGR_F_VAL_ALLOW_DIFFERENT_GEOM_DIM)
657
658/************************************************************************/
659/* ogr_feature.h related definitions. */
660/************************************************************************/
661
667
668typedef enum
684 OFTMaxType = 13
686
696typedef enum
697{ OFSTNone = 0,
713 OFSTMaxSubType = 5
715
719
720typedef enum
721{
722 OJUndefined = 0,
723 OJLeft = 1,
724 OJRight = 2
726
728#define OGRNullFID -1
729
730/* Special value for an unknown field type. This should only be used
731 * while reading a file. At the end of file any unknown types should
732 * be set to OFTString.
733*/
735#define OGRUnknownType static_cast<OGRFieldType>(-1)
737
743#define OGRUnsetMarker -21121
744
751#define OGRNullMarker -21122
752
753/************************************************************************/
754/* OGRField */
755/************************************************************************/
756
760
761typedef union {
763 int Integer;
764 GIntBig Integer64;
765 double Real;
766 char *String;
767
768 struct {
769 int nCount;
770 int *paList;
771 } IntegerList;
772
773 struct {
774 int nCount;
775 GIntBig *paList;
776 } Integer64List;
777
778 struct {
779 int nCount;
780 double *paList;
781 } RealList;
782
783 struct {
784 int nCount;
785 char **paList;
786 } StringList;
787
788 struct {
789 int nCount;
790 GByte *paData;
791 } Binary;
792
793 struct {
794 int nMarker1;
795 int nMarker2;
796 int nMarker3;
797 } Set;
798
799 struct {
800 GInt16 Year;
801 GByte Month;
802 GByte Day;
803 GByte Hour;
804 GByte Minute;
805 GByte TZFlag; /* 0=unknown, 1=localtime(ambiguous),
806 100=GMT, 104=GMT+1, 80=GMT-5, etc */
807 GByte Reserved; /* must be set to 0 */
808 float Second; /* with millisecond accuracy. at the end of the structure, so as to keep it 12 bytes on 32 bit */
809 } Date;
811} OGRField;
812
813#ifdef __cplusplus
815inline int OGR_GET_MS(float fSec) {
816 if( CPLIsNan(fSec) ) return 0;
817 if( fSec >= 999 ) return 999;
818 if( fSec <= 0 ) return 0;
819 const float fValue = (fSec - static_cast<int>(fSec)) * 1000 + 0.5f;
820 return static_cast<int>(fValue);
821}
822#endif // __cplusplus
823
824int CPL_DLL OGRParseDate( const char *pszInput, OGRField *psOutput,
825 int nOptions );
826
827/* -------------------------------------------------------------------- */
828/* Constants from ogrsf_frmts.h for capabilities. */
829/* -------------------------------------------------------------------- */
830#define OLCRandomRead "RandomRead"
831#define OLCSequentialWrite "SequentialWrite"
832#define OLCRandomWrite "RandomWrite"
833#define OLCFastSpatialFilter "FastSpatialFilter"
834#define OLCFastFeatureCount "FastFeatureCount"
835#define OLCFastGetExtent "FastGetExtent"
836#define OLCCreateField "CreateField"
837#define OLCDeleteField "DeleteField"
838#define OLCReorderFields "ReorderFields"
839#define OLCAlterFieldDefn "AlterFieldDefn"
840#define OLCTransactions "Transactions"
841#define OLCDeleteFeature "DeleteFeature"
842#define OLCFastSetNextByIndex "FastSetNextByIndex"
843#define OLCStringsAsUTF8 "StringsAsUTF8"
844#define OLCIgnoreFields "IgnoreFields"
845#define OLCCreateGeomField "CreateGeomField"
846#define OLCCurveGeometries "CurveGeometries"
847#define OLCMeasuredGeometries "MeasuredGeometries"
848
849#define ODsCCreateLayer "CreateLayer"
850#define ODsCDeleteLayer "DeleteLayer"
851#define ODsCCreateGeomFieldAfterCreateLayer "CreateGeomFieldAfterCreateLayer"
852#define ODsCCurveGeometries "CurveGeometries"
853#define ODsCTransactions "Transactions"
854#define ODsCEmulatedTransactions "EmulatedTransactions"
855#define ODsCMeasuredGeometries "MeasuredGeometries"
856#define ODsCRandomLayerRead "RandomLayerRead"
857/* Note the unfortunate trailing space at the end of the string */
858#define ODsCRandomLayerWrite "RandomLayerWrite "
859#define ODsCAddFieldDomain "AddFieldDomain"
860
861#define ODrCCreateDataSource "CreateDataSource"
862#define ODrCDeleteDataSource "DeleteDataSource"
863
864/* -------------------------------------------------------------------- */
865/* Layer metadata items. */
866/* -------------------------------------------------------------------- */
871#define OLMD_FID64 "OLMD_FID64"
872
873/************************************************************************/
874/* ogr_featurestyle.h related definitions. */
875/************************************************************************/
876
880
890
903
908{
917#ifndef DOXYGEN_SKIP
918 OGRSTPenLast = 8
919#endif
921
940
962
993
994/* -------------------------------------------------------------------- */
995/* Field domains */
996/* -------------------------------------------------------------------- */
997
1002typedef struct
1003{
1005 char* pszCode;
1006
1010
1024
1041
1058
1059/* ------------------------------------------------------------------- */
1060/* Version checking */
1061/* -------------------------------------------------------------------- */
1062
1063#ifndef DOXYGEN_SKIP
1064
1065/* Note to developers : please keep this section in sync with gdal.h */
1066
1067#ifndef GDAL_VERSION_INFO_DEFINED
1068#define GDAL_VERSION_INFO_DEFINED
1069const char CPL_DLL * CPL_STDCALL GDALVersionInfo( const char * );
1070#endif
1071
1072#ifndef GDAL_CHECK_VERSION
1073
1085int CPL_DLL CPL_STDCALL GDALCheckVersion( int nVersionMajor, int nVersionMinor,
1086 const char* pszCallingComponentName);
1087
1089#define GDAL_CHECK_VERSION(pszCallingComponentName) \
1090 GDALCheckVersion(GDAL_VERSION_MAJOR, GDAL_VERSION_MINOR, pszCallingComponentName)
1091
1092#endif
1093
1094#endif /* #ifndef DOXYGEN_SKIP */
1095
1097
1098#endif /* ndef OGR_CORE_H_INCLUDED */
Simple container for a bounding region in 3D.
Definition ogr_core.h:199
void Merge(OGREnvelope3D const &sOther)
Update the current object by computing its union with the other rectangle.
Definition ogr_core.h:235
int IsInit() const
Return whether the object has been initialized, that is, is non empty.
Definition ogr_core.h:229
void Merge(double dfX, double dfY, double dfZ)
Update the current object by computing its union with the provided point.
Definition ogr_core.h:245
int Intersects(OGREnvelope3D const &other) const
Return whether the current object intersects with the other rectangle.
Definition ogr_core.h:284
double MaxZ
Maximum Z value.
Definition ogr_core.h:222
OGREnvelope3D & operator=(const OGREnvelope3D &)=default
Assignment operator.
double MinZ
Minimum Z value.
Definition ogr_core.h:219
OGREnvelope3D()
Default constructor.
Definition ogr_core.h:202
int Contains(OGREnvelope3D const &other) const
Return whether the current object contains the other rectangle.
Definition ogr_core.h:292
void Intersect(OGREnvelope3D const &sOther)
Update the current object by computing its intersection with the other rectangle.
Definition ogr_core.h:255
OGREnvelope3D(const OGREnvelope3D &oOther)
Copy constructor.
Definition ogr_core.h:209
Simple container for a bounding region (rectangle)
Definition ogr_core.h:58
int Contains(OGREnvelope const &other) const
Return whether the current object contains the other rectangle.
Definition ogr_core.h:149
double MinY
Minimum Y value.
Definition ogr_core.h:84
double MaxX
Maximum X value.
Definition ogr_core.h:81
void Intersect(OGREnvelope const &sOther)
Update the current object by computing its intersection with the other rectangle.
Definition ogr_core.h:117
double MinX
Minimum X value.
Definition ogr_core.h:78
OGREnvelope()
Default constructor.
Definition ogr_core.h:61
double MaxY
Maximum Y value.
Definition ogr_core.h:87
int IsInit() const
Return whether the object has been initialized, that is, is non empty.
Definition ogr_core.h:94
int Intersects(OGREnvelope const &other) const
Return whether the current object intersects with the other rectangle.
Definition ogr_core.h:142
void Merge(double dfX, double dfY)
Update the current object by computing its union with the provided point.
Definition ogr_core.h:109
OGREnvelope & operator=(const OGREnvelope &)=default
Assignment operator.
OGREnvelope(const OGREnvelope &oOther)
Copy constructor.
Definition ogr_core.h:69
void Merge(OGREnvelope const &sOther)
Update the current object by computing its union with the other rectangle.
Definition ogr_core.h:101
Core portability definitions for CPL.
#define MIN(a, b)
Macro to compute the minimum of 2 values.
Definition cpl_port.h:404
short GInt16
Int16 type.
Definition cpl_port.h:211
#define CPL_C_END
Macro to end a block of C symbols.
Definition cpl_port.h:331
#define CPL_C_START
Macro to start a block of C symbols.
Definition cpl_port.h:329
#define CPLIsNan(x)
Return whether a floating-pointer number is NaN.
Definition cpl_port.h:634
unsigned char GByte
Unsigned byte type.
Definition cpl_port.h:215
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition cpl_port.h:244
#define MAX(a, b)
Macro to compute the maximum of 2 values.
Definition cpl_port.h:406
int GDALCheckVersion(int nVersionMajor, int nVersionMinor, const char *pszCallingComponentName)
Return TRUE if GDAL library version at runtime matches nVersionMajor.nVersionMinor.
Definition gdal_misc.cpp:2311
const char * GDALVersionInfo(const char *)
Get runtime version information.
Definition gdal_misc.cpp:2189
OGRwkbGeometryType OGRMergeGeometryTypesEx(OGRwkbGeometryType eMain, OGRwkbGeometryType eExtra, int bAllowPromotingToCurves)
Find common geometry type.
Definition ogrgeometry.cpp:2786
#define OGRERR_NOT_ENOUGH_MEMORY
Not enough memory.
Definition ogr_core.h:345
int OGR_GT_HasM(OGRwkbGeometryType eType)
Return if the geometry type is a measured type.
Definition ogrgeometry.cpp:6686
int OGR_GT_IsSurface(OGRwkbGeometryType)
Return if a geometry type is an instance of Surface.
Definition ogrgeometry.cpp:7017
int OGRBoolean
Type for a OGR boolean.
Definition ogr_core.h:357
OGRFieldSubType
List of field subtypes.
Definition ogr_core.h:697
@ OFSTBoolean
Boolean integer.
Definition ogr_core.h:700
@ OFSTInt16
Signed 16-bit integer.
Definition ogr_core.h:702
@ OFSTUUID
UUID string representation.
Definition ogr_core.h:712
@ OFSTJSON
JSON content.
Definition ogr_core.h:708
@ OFSTNone
No subtype.
Definition ogr_core.h:698
@ OFSTFloat32
Single precision (32 bit) floating point.
Definition ogr_core.h:704
ogr_style_tool_param_symbol_id
List of parameters for use with OGRStyleSymbol.
Definition ogr_core.h:945
@ OGRSTSymbolDy
Dy.
Definition ogr_core.h:951
@ OGRSTSymbolId
Id.
Definition ogr_core.h:946
@ OGRSTSymbolSize
Size.
Definition ogr_core.h:949
@ OGRSTSymbolFontName
Font name.
Definition ogr_core.h:956
@ OGRSTSymbolColor
Color.
Definition ogr_core.h:948
@ OGRSTSymbolDx
Dx.
Definition ogr_core.h:950
@ OGRSTSymbolPerp
Perpendicular.
Definition ogr_core.h:953
@ OGRSTSymbolAngle
Angle.
Definition ogr_core.h:947
@ OGRSTSymbolOColor
Outline color.
Definition ogr_core.h:957
@ OGRSTSymbolPriority
Priority.
Definition ogr_core.h:955
@ OGRSTSymbolStep
Step.
Definition ogr_core.h:952
@ OGRSTSymbolOffset
Offset.
Definition ogr_core.h:954
enum ogr_style_tool_param_symbol_id OGRSTSymbolParam
List of parameters for use with OGRStyleSymbol.
OGRFieldDomainMergePolicy
Merge policy for field domains.
Definition ogr_core.h:1050
@ OFDMP_SUM
Sum.
Definition ogr_core.h:1054
@ OFDMP_GEOMETRY_WEIGHTED
New values are computed as the weighted average of the source values.
Definition ogr_core.h:1056
@ OFDMP_DEFAULT_VALUE
Default value.
Definition ogr_core.h:1052
OGRwkbByteOrder
Enumeration to describe byte order.
Definition ogr_core.h:551
@ wkbXDR
MSB/Sun/Motorola: Most Significant Byte First.
Definition ogr_core.h:552
@ wkbNDR
LSB/Intel/Vax: Least Significant Byte First.
Definition ogr_core.h:553
int OGRParseDate(const char *pszInput, OGRField *psOutput, int nOptions)
Parse date string.
Definition ogrutils.cpp:946
#define OGRERR_UNSUPPORTED_GEOMETRY_TYPE
Unsupported geometry type.
Definition ogr_core.h:346
OGRFieldDomainType
Type of field domain.
Definition ogr_core.h:1016
@ OFDT_RANGE
Range (min/max)
Definition ogr_core.h:1020
@ OFDT_CODED
Coded.
Definition ogr_core.h:1018
@ OFDT_GLOB
Glob (used by GeoPackage)
Definition ogr_core.h:1022
enum ogr_style_tool_param_pen_id OGRSTPenParam
List of parameters for use with OGRStylePen.
OGRwkbGeometryType OGR_GT_GetLinear(OGRwkbGeometryType eType)
Returns the non-curve geometry type that can contain the passed geometry type.
Definition ogrgeometry.cpp:6954
int OGR_GT_IsCurve(OGRwkbGeometryType)
Return if a geometry type is an instance of Curve.
Definition ogrgeometry.cpp:6996
OGRwkbGeometryType OGR_GT_SetZ(OGRwkbGeometryType eType)
Returns the 3D geometry type corresponding to the passed geometry type.
Definition ogrgeometry.cpp:6708
#define OGRERR_FAILURE
Failure.
Definition ogr_core.h:349
#define OGRERR_UNSUPPORTED_OPERATION
Unsupported operation.
Definition ogr_core.h:347
OGRwkbVariant
Output variants of WKB we support.
Definition ogr_core.h:485
@ wkbVariantPostGIS1
PostGIS 1.X has different codes for CurvePolygon, MultiCurve and MultiSurface.
Definition ogr_core.h:488
@ wkbVariantOldOgc
Old-style 99-402 extended dimension (Z) WKB types.
Definition ogr_core.h:486
@ wkbVariantIso
SFSQL 1.2 and ISO SQL/MM Part 3 extended dimension (Z&M) WKB types.
Definition ogr_core.h:487
#define OGRERR_NONE
Success.
Definition ogr_core.h:343
OGRwkbGeometryType OGRMergeGeometryTypes(OGRwkbGeometryType eMain, OGRwkbGeometryType eExtra)
Find common geometry type.
Definition ogrgeometry.cpp:2749
OGRJustification
Display justification for field values.
Definition ogr_core.h:721
OGRFieldType
List of feature field types.
Definition ogr_core.h:669
@ OFTTime
Time.
Definition ogr_core.h:680
@ OFTInteger64List
List of 64bit integers.
Definition ogr_core.h:683
@ OFTIntegerList
List of 32bit integers.
Definition ogr_core.h:671
@ OFTDate
Date.
Definition ogr_core.h:679
@ OFTWideStringList
deprecated
Definition ogr_core.h:677
@ OFTInteger
Simple 32bit integer.
Definition ogr_core.h:670
@ OFTString
String of ASCII chars.
Definition ogr_core.h:674
@ OFTBinary
Raw Binary data.
Definition ogr_core.h:678
@ OFTRealList
List of doubles.
Definition ogr_core.h:673
@ OFTReal
Double Precision floating point.
Definition ogr_core.h:672
@ OFTStringList
Array of strings.
Definition ogr_core.h:675
@ OFTDateTime
Date and Time.
Definition ogr_core.h:681
@ OFTInteger64
Single 64bit integer.
Definition ogr_core.h:682
@ OFTWideString
deprecated
Definition ogr_core.h:676
OGRwkbGeometryType OGR_GT_GetCurve(OGRwkbGeometryType eType)
Returns the curve geometry type that can contain the passed geometry type.
Definition ogrgeometry.cpp:6905
OGRwkbGeometryType
List of well known binary geometry types.
Definition ogr_core.h:369
@ wkbPolygon25D
2.5D extension as per 99-402
Definition ogr_core.h:454
@ wkbCurve
Curve (abstract type).
Definition ogr_core.h:392
@ wkbLineString
1-dimensional geometric object with linear interpolation between Points, standard WKB
Definition ogr_core.h:373
@ wkbCircularString
one or more circular arc segments connected end to end, ISO SQL/MM Part 3.
Definition ogr_core.h:384
@ wkbSurfaceZM
ISO SQL/MM Part 3.
Definition ogr_core.h:445
@ wkbPolygon
planar 2-dimensional geometric object defined by 1 exterior boundary and 0 or more interior boundarie...
Definition ogr_core.h:375
@ wkbTriangle
a Triangle.
Definition ogr_core.h:398
@ wkbPoint25D
2.5D extension as per 99-402
Definition ogr_core.h:452
@ wkbSurfaceZ
wkbSurface with Z component.
Definition ogr_core.h:409
@ wkbMultiSurfaceM
ISO SQL/MM Part 3.
Definition ogr_core.h:425
@ wkbPolygonZM
ISO SQL/MM Part 3.
Definition ogr_core.h:434
@ wkbMultiPolygon25D
2.5D extension as per 99-402
Definition ogr_core.h:457
@ wkbPolyhedralSurfaceM
ISO SQL/MM Part 3.
Definition ogr_core.h:428
@ wkbTINZM
ISO SQL/MM Part 3.
Definition ogr_core.h:447
@ wkbMultiPointZM
ISO SQL/MM Part 3.
Definition ogr_core.h:435
@ wkbPointM
ISO SQL/MM Part 3.
Definition ogr_core.h:414
@ wkbMultiLineString
GeometryCollection of LineStrings, standard WKB.
Definition ogr_core.h:379
@ wkbCompoundCurveM
ISO SQL/MM Part 3.
Definition ogr_core.h:422
@ wkbUnknown
unknown type, non-standard
Definition ogr_core.h:370
@ wkbMultiSurfaceZM
ISO SQL/MM Part 3.
Definition ogr_core.h:443
@ wkbTINZ
ISO SQL/MM Part 3.
Definition ogr_core.h:411
@ wkbCircularStringM
ISO SQL/MM Part 3.
Definition ogr_core.h:421
@ wkbPolygonM
ISO SQL/MM Part 3.
Definition ogr_core.h:416
@ wkbMultiCurveM
ISO SQL/MM Part 3.
Definition ogr_core.h:424
@ wkbLinearRing
non-standard, just for createGeometry()
Definition ogr_core.h:401
@ wkbLineStringM
ISO SQL/MM Part 3.
Definition ogr_core.h:415
@ wkbTIN
a PolyhedralSurface consisting only of Triangle patches ISO SQL/MM Part 3.
Definition ogr_core.h:396
@ wkbGeometryCollection25D
2.5D extension as per 99-402
Definition ogr_core.h:458
@ wkbSurfaceM
ISO SQL/MM Part 3.
Definition ogr_core.h:427
@ wkbCurvePolygonM
ISO SQL/MM Part 3.
Definition ogr_core.h:423
@ wkbPolyhedralSurface
a contiguous collection of polygons, which share common boundary segments, ISO SQL/MM Part 3.
Definition ogr_core.h:394
@ wkbSurface
Surface (abstract type).
Definition ogr_core.h:393
@ wkbMultiCurveZ
wkbMultiCurve with Z component.
Definition ogr_core.h:406
@ wkbCircularStringZ
wkbCircularString with Z component.
Definition ogr_core.h:403
@ wkbPoint
0-dimensional geometric object, standard WKB
Definition ogr_core.h:372
@ wkbCompoundCurve
sequence of contiguous curves, ISO SQL/MM Part 3.
Definition ogr_core.h:386
@ wkbPolyhedralSurfaceZ
ISO SQL/MM Part 3.
Definition ogr_core.h:410
@ wkbGeometryCollection
geometric object that is a collection of 1 or more geometric objects, standard WKB
Definition ogr_core.h:381
@ wkbMultiPolygon
GeometryCollection of Polygons, standard WKB.
Definition ogr_core.h:380
@ wkbMultiPoint
GeometryCollection of Points, standard WKB.
Definition ogr_core.h:378
@ wkbMultiLineStringM
ISO SQL/MM Part 3.
Definition ogr_core.h:418
@ wkbMultiCurveZM
ISO SQL/MM Part 3.
Definition ogr_core.h:442
@ wkbMultiPoint25D
2.5D extension as per 99-402
Definition ogr_core.h:455
@ wkbNone
non-standard, for pure attribute records
Definition ogr_core.h:400
@ wkbMultiPointM
ISO SQL/MM Part 3.
Definition ogr_core.h:417
@ wkbCircularStringZM
ISO SQL/MM Part 3.
Definition ogr_core.h:439
@ wkbCurvePolygonZ
wkbCurvePolygon with Z component.
Definition ogr_core.h:405
@ wkbCompoundCurveZM
ISO SQL/MM Part 3.
Definition ogr_core.h:440
@ wkbTriangleZ
ISO SQL/MM Part 3.
Definition ogr_core.h:412
@ wkbPointZM
ISO SQL/MM Part 3.
Definition ogr_core.h:432
@ wkbCurvePolygon
planar surface, defined by 1 exterior boundary and zero or more interior boundaries,...
Definition ogr_core.h:387
@ wkbLineStringZM
ISO SQL/MM Part 3.
Definition ogr_core.h:433
@ wkbMultiSurface
GeometryCollection of Surfaces, ISO SQL/MM Part 3.
Definition ogr_core.h:391
@ wkbMultiPolygonM
ISO SQL/MM Part 3.
Definition ogr_core.h:419
@ wkbCurveZM
ISO SQL/MM Part 3.
Definition ogr_core.h:444
@ wkbLineString25D
2.5D extension as per 99-402
Definition ogr_core.h:453
@ wkbMultiLineStringZM
ISO SQL/MM Part 3.
Definition ogr_core.h:436
@ wkbPolyhedralSurfaceZM
ISO SQL/MM Part 3.
Definition ogr_core.h:446
@ wkbGeometryCollectionZM
ISO SQL/MM Part 3.
Definition ogr_core.h:438
@ wkbTriangleZM
ISO SQL/MM Part 3.
Definition ogr_core.h:448
@ wkbGeometryCollectionM
ISO SQL/MM Part 3.
Definition ogr_core.h:420
@ wkbCurveM
ISO SQL/MM Part 3.
Definition ogr_core.h:426
@ wkbMultiLineString25D
2.5D extension as per 99-402
Definition ogr_core.h:456
@ wkbTriangleM
ISO SQL/MM Part 3.
Definition ogr_core.h:430
@ wkbMultiPolygonZM
ISO SQL/MM Part 3.
Definition ogr_core.h:437
@ wkbTINM
ISO SQL/MM Part 3.
Definition ogr_core.h:429
@ wkbCurveZ
wkbCurve with Z component.
Definition ogr_core.h:408
@ wkbCurvePolygonZM
ISO SQL/MM Part 3.
Definition ogr_core.h:441
@ wkbMultiCurve
GeometryCollection of Curves, ISO SQL/MM Part 3.
Definition ogr_core.h:390
@ wkbCompoundCurveZ
wkbCompoundCurve with Z component.
Definition ogr_core.h:404
@ wkbMultiSurfaceZ
wkbMultiSurface with Z component.
Definition ogr_core.h:407
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:6758
#define OGRERR_CORRUPT_DATA
Corrupt data.
Definition ogr_core.h:348
ogr_style_tool_param_label_id
List of parameters for use with OGRStyleLabel.
Definition ogr_core.h:967
@ OGRSTLabelUnderline
Underline.
Definition ogr_core.h:981
@ OGRSTLabelPriority
Priority.
Definition ogr_core.h:982
@ OGRSTLabelAdjVert
OBSOLETE; do not use.
Definition ogr_core.h:986
@ OGRSTLabelBold
Bold.
Definition ogr_core.h:979
@ OGRSTLabelStrikeout
Strike out.
Definition ogr_core.h:983
@ OGRSTLabelBColor
Background color.
Definition ogr_core.h:973
@ OGRSTLabelPlacement
Placement.
Definition ogr_core.h:974
@ OGRSTLabelPerp
Perpendicular.
Definition ogr_core.h:978
@ OGRSTLabelOColor
Outline color.
Definition ogr_core.h:988
@ OGRSTLabelDx
Dx.
Definition ogr_core.h:976
@ OGRSTLabelHColor
Highlight color.
Definition ogr_core.h:987
@ OGRSTLabelItalic
Italic.
Definition ogr_core.h:980
@ OGRSTLabelTextString
Text string.
Definition ogr_core.h:970
@ OGRSTLabelSize
Size.
Definition ogr_core.h:969
@ OGRSTLabelAngle
Angle.
Definition ogr_core.h:971
@ OGRSTLabelFColor
Foreground color.
Definition ogr_core.h:972
@ OGRSTLabelDy
Dy.
Definition ogr_core.h:977
@ OGRSTLabelFontName
Font name.
Definition ogr_core.h:968
@ OGRSTLabelStretch
Stretch.
Definition ogr_core.h:984
@ OGRSTLabelAnchor
Anchor.
Definition ogr_core.h:975
@ OGRSTLabelAdjHor
OBSOLETE; do not use.
Definition ogr_core.h:985
ogr_style_tool_units_id
List of units supported by OGRStyleTools.
Definition ogr_core.h:895
@ OGRSTUGround
Ground unit.
Definition ogr_core.h:896
@ OGRSTUMM
Millimeter.
Definition ogr_core.h:899
@ OGRSTUInches
Inch.
Definition ogr_core.h:901
@ OGRSTUCM
Centimeter.
Definition ogr_core.h:900
@ OGRSTUPoints
Points.
Definition ogr_core.h:898
@ OGRSTUPixel
Pixel.
Definition ogr_core.h:897
int OGR_GT_IsSubClassOf(OGRwkbGeometryType eType, OGRwkbGeometryType eSuperType)
Returns if a type is a subclass of another one.
Definition ogrgeometry.cpp:6785
enum ogr_style_tool_class_id OGRSTClassId
OGRStyleTool derived class types (returned by GetType()).
#define OGRERR_NON_EXISTING_FEATURE
Non existing feature.
Definition ogr_core.h:352
const char * OGRGeometryTypeToName(OGRwkbGeometryType eType)
Fetch a human readable name corresponding to an OGRwkbGeometryType value.
Definition ogrgeometry.cpp:2526
enum ogr_style_tool_units_id OGRSTUnitId
List of units supported by OGRStyleTools.
#define OGRERR_INVALID_HANDLE
Invalid handle.
Definition ogr_core.h:351
enum ogr_style_tool_param_brush_id OGRSTBrushParam
List of parameters for use with OGRStyleBrush.
enum ogr_style_tool_param_label_id OGRSTLabelParam
List of parameters for use with OGRStyleLabel.
#define OGRERR_NOT_ENOUGH_DATA
Not enough data to deserialize.
Definition ogr_core.h:344
int OGRErr
Type for a OGR error.
Definition ogr_core.h:341
int OGR_GET_MS(float fSec)
Return the number of milliseconds from a datetime with decimal seconds.
Definition ogr_core.h:815
ogr_style_tool_param_brush_id
List of parameters for use with OGRStyleBrush.
Definition ogr_core.h:926
@ OGRSTBrushAngle
Angle.
Definition ogr_core.h:930
@ OGRSTBrushId
Id.
Definition ogr_core.h:929
@ OGRSTBrushPriority
Priority.
Definition ogr_core.h:934
@ OGRSTBrushBColor
Background color.
Definition ogr_core.h:928
@ OGRSTBrushSize
Size.
Definition ogr_core.h:931
@ OGRSTBrushDy
Dy.
Definition ogr_core.h:933
@ OGRSTBrushFColor
Foreground color.
Definition ogr_core.h:927
@ OGRSTBrushDx
Dx.
Definition ogr_core.h:932
OGRwkbGeometryType OGR_GT_GetCollection(OGRwkbGeometryType eType)
Returns the collection type that can contain the passed geometry type.
Definition ogrgeometry.cpp:6849
OGRwkbGeometryType OGR_GT_SetM(OGRwkbGeometryType eType)
Returns the measured geometry type corresponding to the passed geometry type.
Definition ogrgeometry.cpp:6731
ogr_style_tool_class_id
OGRStyleTool derived class types (returned by GetType()).
Definition ogr_core.h:882
@ OGRSTCBrush
Brush.
Definition ogr_core.h:885
@ OGRSTCVector
Vector.
Definition ogr_core.h:888
@ OGRSTCNone
None.
Definition ogr_core.h:883
@ OGRSTCLabel
Label.
Definition ogr_core.h:887
@ OGRSTCPen
Pen.
Definition ogr_core.h:884
@ OGRSTCSymbol
Symbol.
Definition ogr_core.h:886
OGRwkbGeometryType OGR_GT_Flatten(OGRwkbGeometryType eType)
Returns the 2D geometry type corresponding to the passed geometry type.
Definition ogrgeometry.cpp:6637
ogr_style_tool_param_pen_id
List of parameters for use with OGRStylePen.
Definition ogr_core.h:908
@ OGRSTPenId
Id.
Definition ogr_core.h:912
@ OGRSTPenCap
Cap.
Definition ogr_core.h:914
@ OGRSTPenPerOffset
Perpendicular offset.
Definition ogr_core.h:913
@ OGRSTPenWidth
Width.
Definition ogr_core.h:910
@ OGRSTPenColor
Color.
Definition ogr_core.h:909
@ OGRSTPenJoin
Join.
Definition ogr_core.h:915
@ OGRSTPenPriority
Priority.
Definition ogr_core.h:916
@ OGRSTPenPattern
Pattern.
Definition ogr_core.h:911
int OGR_GT_IsNonLinear(OGRwkbGeometryType)
Return if a geometry type is a non-linear geometry type.
Definition ogrgeometry.cpp:7039
#define OGRERR_UNSUPPORTED_SRS
Unsupported SRS.
Definition ogr_core.h:350
int OGR_GT_HasZ(OGRwkbGeometryType eType)
Return if the geometry type is a 3D geometry type.
Definition ogrgeometry.cpp:6662
OGRFieldDomainSplitPolicy
Split policy for field domains.
Definition ogr_core.h:1033
@ OFDSP_DEFAULT_VALUE
Default value.
Definition ogr_core.h:1035
@ OFDSP_DUPLICATE
Duplicate.
Definition ogr_core.h:1037
@ 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:1039
Associates a code and a value.
Definition ogr_core.h:1003
char * pszValue
Value.
Definition ogr_core.h:1008
char * pszCode
Code.
Definition ogr_core.h:1005
OGRFeature field attribute value union.
Definition ogr_core.h:761