31 #ifndef OGR_CORE_H_INCLUDED 32 #define OGR_CORE_H_INCLUDED 35 #if defined(GDAL_COMPILATION) 36 #define DO_NOT_DEFINE_GDAL_RELEASE_DATE_AND_GDAL_RELEASE_NAME 38 #include "gdal_version.h" 51 #if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS) && !defined(DOXYGEN_SKIP) 58 class CPL_DLL OGREnvelope
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())
68 OGREnvelope(
const OGREnvelope& oOther) :
69 MinX(oOther.MinX),MaxX(oOther.MaxX), MinY(oOther.MinY), MaxY(oOther.MaxY)
78 #ifdef HAVE_GCC_DIAGNOSTIC_PUSH 79 #pragma GCC diagnostic push 80 #pragma GCC diagnostic ignored "-Wfloat-equal" 82 int IsInit()
const {
return MinX != std::numeric_limits<double>::infinity(); }
84 #ifdef HAVE_GCC_DIAGNOSTIC_PUSH 85 #pragma GCC diagnostic pop 88 void Merge( OGREnvelope
const& sOther ) {
89 MinX =
MIN(MinX,sOther.MinX);
90 MaxX =
MAX(MaxX,sOther.MaxX);
91 MinY =
MIN(MinY,sOther.MinY);
92 MaxY =
MAX(MaxY,sOther.MaxY);
95 void Merge(
double dfX,
double dfY ) {
102 void Intersect( OGREnvelope
const& sOther ) {
103 if(Intersects(sOther))
107 MinX =
MAX(MinX,sOther.MinX);
108 MaxX =
MIN(MaxX,sOther.MaxX);
109 MinY =
MAX(MinY,sOther.MinY);
110 MaxY =
MIN(MaxY,sOther.MaxY);
122 *
this = OGREnvelope();
126 int Intersects(OGREnvelope
const& other)
const 128 return MinX <= other.MaxX && MaxX >= other.MinX &&
129 MinY <= other.MaxY && MaxY >= other.MinY;
132 int Contains(OGREnvelope
const& other)
const 134 return MinX <= other.MinX && MinY <= other.MinY &&
135 MaxX >= other.MaxX && MaxY >= other.MaxY;
155 #if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS) && !defined(DOXYGEN_SKIP) 160 class CPL_DLL OGREnvelope3D :
public OGREnvelope
163 OGREnvelope3D() : OGREnvelope(),
164 MinZ(std::numeric_limits<double>::infinity()),
165 MaxZ(-std::numeric_limits<double>::infinity())
169 OGREnvelope3D(
const OGREnvelope3D& oOther) :
171 MinZ(oOther.MinZ), MaxZ(oOther.MaxZ)
178 #ifdef HAVE_GCC_DIAGNOSTIC_PUSH 179 #pragma GCC diagnostic push 180 #pragma GCC diagnostic ignored "-Wfloat-equal" 182 int IsInit()
const {
return MinX != std::numeric_limits<double>::infinity(); }
183 #ifdef HAVE_GCC_DIAGNOSTIC_PUSH 184 #pragma GCC diagnostic pop 187 void Merge( OGREnvelope3D
const& sOther ) {
188 MinX =
MIN(MinX,sOther.MinX);
189 MaxX =
MAX(MaxX,sOther.MaxX);
190 MinY =
MIN(MinY,sOther.MinY);
191 MaxY =
MAX(MaxY,sOther.MaxY);
192 MinZ =
MIN(MinZ,sOther.MinZ);
193 MaxZ =
MAX(MaxZ,sOther.MaxZ);
196 void Merge(
double dfX,
double dfY,
double dfZ ) {
197 MinX =
MIN(MinX,dfX);
198 MaxX =
MAX(MaxX,dfX);
199 MinY =
MIN(MinY,dfY);
200 MaxY =
MAX(MaxY,dfY);
201 MinZ =
MIN(MinZ,dfZ);
202 MaxZ =
MAX(MaxZ,dfZ);
205 void Intersect( OGREnvelope3D
const& sOther ) {
206 if(Intersects(sOther))
210 MinX =
MAX(MinX,sOther.MinX);
211 MaxX =
MIN(MaxX,sOther.MaxX);
212 MinY =
MAX(MinY,sOther.MinY);
213 MaxY =
MIN(MaxY,sOther.MaxY);
214 MinZ =
MAX(MinZ,sOther.MinZ);
215 MaxZ =
MIN(MaxZ,sOther.MaxZ);
229 *
this = OGREnvelope3D();
233 int Intersects(OGREnvelope3D
const& other)
const 235 return MinX <= other.MaxX && MaxX >= other.MinX &&
236 MinY <= other.MaxY && MaxY >= other.MinY &&
237 MinZ <= other.MaxZ && MaxZ >= other.MinZ;
240 int Contains(OGREnvelope3D
const& other)
const 242 return MinX <= other.MinX && MinY <= other.MinY &&
243 MaxX >= other.MaxX && MaxY >= other.MaxY &&
244 MinZ <= other.MinZ && MaxZ >= other.MaxZ;
266 void CPL_DLL *OGRMalloc(
size_t ) CPL_WARN_DEPRECATED(
"Use CPLMalloc instead.");
267 void CPL_DLL *OGRCalloc(
size_t,
size_t ) CPL_WARN_DEPRECATED(
"Use CPLCalloc instead.");
268 void CPL_DLL *OGRRealloc(
void *,
size_t ) CPL_WARN_DEPRECATED(
"Use CPLRealloc instead.");
269 char CPL_DLL *OGRStrdup(
const char * ) CPL_WARN_DEPRECATED(
"Use CPLStrdup instead.");
270 void CPL_DLL OGRFree(
void * ) CPL_WARN_DEPRECATED(
"Use CPLFree instead.");
273 #ifdef STRICT_OGRERR_TYPE 292 #define OGRERR_NONE 0 293 #define OGRERR_NOT_ENOUGH_DATA 1 294 #define OGRERR_NOT_ENOUGH_MEMORY 2 295 #define OGRERR_UNSUPPORTED_GEOMETRY_TYPE 3 296 #define OGRERR_UNSUPPORTED_OPERATION 4 297 #define OGRERR_CORRUPT_DATA 5 298 #define OGRERR_FAILURE 6 299 #define OGRERR_UNSUPPORTED_SRS 7 300 #define OGRERR_INVALID_HANDLE 8 301 #define OGRERR_NON_EXISTING_FEATURE 9 430 #ifndef GDAL_COMPILATION 432 #define wkb25DBit 0x80000000 437 #define wkbFlatten(x) OGR_GT_Flatten((OGRwkbGeometryType)(x)) 440 #define wkbFlatten(x) OGR_GT_Flatten(static_cast<OGRwkbGeometryType>(x)) 446 #define wkbHasZ(x) (OGR_GT_HasZ(x) != 0) 451 #define wkbSetZ(x) OGR_GT_SetZ(x) 456 #define wkbHasM(x) (OGR_GT_HasM(x) != 0) 461 #define wkbSetM(x) OGR_GT_SetM(x) 464 #define ogrZMarker 0x21125711 472 int bAllowPromotingToCurves );
497 #ifndef NO_HACK_FOR_IBM_DB2_V72 498 # define HACK_FOR_IBM_DB2_V72 501 #ifdef HACK_FOR_IBM_DB2_V72 502 # define DB2_V72_FIX_BYTE_ORDER(x) ((((x) & 0x31) == (x)) ? ((x) & 0x1) : (x)) 503 # define DB2_V72_UNFIX_BYTE_ORDER(x) CPL_STATIC_CAST(unsigned char, OGRGeometry::bGenerate_DB2_V72_BYTE_ORDER ? ((x) | 0x30) : (x)) 505 # define DB2_V72_FIX_BYTE_ORDER(x) (x) 506 # define DB2_V72_UNFIX_BYTE_ORDER(x) (x) 514 #define ALTER_NAME_FLAG 0x1 519 #define ALTER_TYPE_FLAG 0x2 524 #define ALTER_WIDTH_PRECISION_FLAG 0x4 530 #define ALTER_NULLABLE_FLAG 0x8 536 #define ALTER_DEFAULT_FLAG 0x10 541 #define ALTER_ALL_FLAG (ALTER_NAME_FLAG | ALTER_TYPE_FLAG | ALTER_WIDTH_PRECISION_FLAG | ALTER_NULLABLE_FLAG | ALTER_DEFAULT_FLAG) 547 #define OGR_F_VAL_NULL 0x00000001 553 #define OGR_F_VAL_GEOM_TYPE 0x00000002 559 #define OGR_F_VAL_WIDTH 0x00000004 568 #define OGR_F_VAL_ALLOW_NULL_WHEN_DEFAULT 0x00000008 576 #define OGR_F_VAL_ALLOW_DIFFERENT_GEOM_DIM 0x00000010 582 #define OGR_F_VAL_ALL (0x7FFFFFFF & ~OGR_F_VAL_ALLOW_DIFFERENT_GEOM_DIM) 595 {
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,
646 #define OGRNullFID -1 653 #define OGRUnknownType static_cast<OGRFieldType>(-1) 661 #define OGRUnsetMarker -21121 669 #define OGRNullMarker -21122 734 if( CPLIsNan(fSec) )
return 0;
735 if( fSec >= 999 )
return 999;
736 if( fSec <= 0 )
return 0;
737 const float fValue = (fSec -
static_cast<int>(fSec)) * 1000 + 0.5f;
738 return static_cast<int>(fValue);
740 #endif // __cplusplus 742 int CPL_DLL OGRParseDate(
const char *pszInput,
OGRField *psOutput,
748 #define OLCRandomRead "RandomRead" 749 #define OLCSequentialWrite "SequentialWrite" 750 #define OLCRandomWrite "RandomWrite" 751 #define OLCFastSpatialFilter "FastSpatialFilter" 752 #define OLCFastFeatureCount "FastFeatureCount" 753 #define OLCFastGetExtent "FastGetExtent" 754 #define OLCCreateField "CreateField" 755 #define OLCDeleteField "DeleteField" 756 #define OLCReorderFields "ReorderFields" 757 #define OLCAlterFieldDefn "AlterFieldDefn" 758 #define OLCTransactions "Transactions" 759 #define OLCDeleteFeature "DeleteFeature" 760 #define OLCFastSetNextByIndex "FastSetNextByIndex" 761 #define OLCStringsAsUTF8 "StringsAsUTF8" 762 #define OLCIgnoreFields "IgnoreFields" 763 #define OLCCreateGeomField "CreateGeomField" 764 #define OLCCurveGeometries "CurveGeometries" 765 #define OLCMeasuredGeometries "MeasuredGeometries" 767 #define ODsCCreateLayer "CreateLayer" 768 #define ODsCDeleteLayer "DeleteLayer" 769 #define ODsCCreateGeomFieldAfterCreateLayer "CreateGeomFieldAfterCreateLayer" 770 #define ODsCCurveGeometries "CurveGeometries" 771 #define ODsCTransactions "Transactions" 772 #define ODsCEmulatedTransactions "EmulatedTransactions" 773 #define ODsCMeasuredGeometries "MeasuredGeometries" 774 #define ODsCRandomLayerRead "RandomLayerRead" 775 #define ODsCRandomLayerWrite "RandomLayerWrite " 777 #define ODrCCreateDataSource "CreateDataSource" 778 #define ODrCDeleteDataSource "DeleteDataSource" 787 #define OLMD_FID64 "OLMD_FID64" 918 #ifndef GDAL_VERSION_INFO_DEFINED 919 #define GDAL_VERSION_INFO_DEFINED 920 const char CPL_DLL * CPL_STDCALL GDALVersionInfo(
const char * );
923 #ifndef GDAL_CHECK_VERSION 936 int CPL_DLL CPL_STDCALL GDALCheckVersion(
int nVersionMajor,
int nVersionMinor,
937 const char* pszCallingComponentName);
940 #define GDAL_CHECK_VERSION(pszCallingComponentName) \ 941 GDALCheckVersion(GDAL_VERSION_MAJOR, GDAL_VERSION_MINOR, pszCallingComponentName) Definition: ogr_core.h:386
Definition: ogr_core.h:349
Definition: ogr_core.h:426
Definition: ogr_core.h:867
Definition: ogr_core.h:904
Definition: ogr_core.h:862
Definition: ogr_core.h:848
Definition: ogr_core.h:884
enum ogr_style_tool_param_symbol_id OGRSTSymbolParam
Definition: ogr_core.h:903
Definition: ogr_core.h:843
Definition: ogr_core.h:370
Definition: ogr_core.h:373
Definition: ogr_core.h:364
OGRFieldSubType
Definition: ogr_core.h:622
Definition: ogr_core.h:357
#define OGRERR_CORRUPT_DATA
Definition: ogr_core.h:297
Definition: ogr_core.h:825
ogr_style_tool_param_label_id
Definition: ogr_core.h:882
Definition: ogr_core.h:844
int OGR_GET_MS(float fSec)
Definition: ogr_core.h:733
Definition: ogr_core.h:360
Definition: ogr_core.h:356
#define CPL_C_START
Definition: cpl_port.h:335
Definition: ogr_core.h:372
Definition: ogr_core.h:369
Definition: ogr_core.h:891
Definition: ogr_core.h:404
Definition: ogr_core.h:624
Definition: ogr_core.h:865
Definition: ogr_core.h:609
Definition: ogr_core.h:850
Definition: ogr_core.h:870
Definition: ogr_core.h:403
Definition: ogr_core.h:887
Definition: ogr_core.h:831
Definition: ogr_core.h:324
Definition: ogr_core.h:864
Definition: ogr_core.h:343
Definition: ogr_core.h:355
Definition: ogr_core.h:366
Definition: ogr_core.h:606
Definition: ogr_core.h:897
Definition: ogr_core.h:350
Definition: ogr_core.h:605
enum ogr_style_tool_param_brush_id OGRSTBrushParam
Definition: ogr_core.h:387
OGRwkbGeometryType OGR_GT_SetM(OGRwkbGeometryType eType)
Returns the measured geometry type corresponding to the passed geometry type.
Definition: ogrgeometry.cpp:6234
Definition: ogr_core.h:902
short GInt16
Definition: cpl_port.h:209
Definition: ogr_core.h:849
int OGRBoolean
Definition: ogr_core.h:306
Definition: ogr_core.h:353
Definition: ogr_core.h:400
#define OGRERR_NONE
Definition: ogr_core.h:292
enum ogr_style_tool_param_label_id OGRSTLabelParam
Definition: ogr_core.h:895
Definition: ogr_core.h:377
ogr_style_tool_param_pen_id
Definition: ogr_core.h:823
unsigned char GByte
Definition: cpl_port.h:213
Definition: ogr_core.h:800
Definition: ogr_core.h:812
Definition: ogr_core.h:845
Definition: ogr_core.h:830
Definition: ogr_core.h:599
ogr_style_tool_param_symbol_id
Definition: ogr_core.h:860
Definition: ogr_core.h:397
Definition: ogr_core.h:330
Definition: ogr_core.h:322
Definition: ogr_core.h:869
OGRwkbByteOrder
Definition: ogr_core.h:489
Definition: ogr_core.h:598
OGRwkbGeometryType OGR_GT_Flatten(OGRwkbGeometryType eType)
Returns the 2D geometry type corresponding to the passed geometry type.
Definition: ogrgeometry.cpp:6140
#define OGRERR_UNSUPPORTED_OPERATION
Definition: ogr_core.h:296
Definition: ogr_core.h:319
Definition: ogr_core.h:829
Definition: ogr_core.h:405
Definition: ogr_core.h:367
Definition: ogr_core.h:892
Definition: ogr_core.h:342
#define OGRERR_UNSUPPORTED_GEOMETRY_TYPE
Definition: ogr_core.h:295
Definition: ogr_core.h:390
int OGR_GT_IsSurface(OGRwkbGeometryType)
Return if a geometry type is an instance of Surface.
Definition: ogrgeometry.cpp:6520
Definition: ogr_core.h:846
Definition: ogr_core.h:393
Definition: ogr_core.h:347
Definition: ogr_core.h:885
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:6261
Definition: ogr_core.h:327
OGRwkbGeometryType OGR_GT_SetZ(OGRwkbGeometryType eType)
Returns the 3D geometry type corresponding to the passed geometry type.
Definition: ogrgeometry.cpp:6211
int OGR_GT_HasM(OGRwkbGeometryType eType)
Return if the geometry type is a measured type.
Definition: ogrgeometry.cpp:6189
Definition: ogr_core.h:491
enum ogr_style_tool_class_id OGRSTClassId
Definition: ogr_core.h:604
Definition: ogr_core.h:873
Definition: ogr_core.h:608
#define MAX(a, b)
Definition: cpl_port.h:397
int OGR_GT_IsSubClassOf(OGRwkbGeometryType eType, OGRwkbGeometryType eSuperType)
Returns if a type is a subclass of another one.
Definition: ogrgeometry.cpp:6288
Definition: ogr_core.h:339
Definition: ogr_core.h:358
Definition: ogr_core.h:402
Definition: ogr_core.h:828
enum ogr_style_tool_param_pen_id OGRSTPenParam
enum ogr_style_tool_units_id OGRSTUnitId
OGRwkbGeometryType
Definition: ogr_core.h:317
Definition: ogr_core.h:363
Definition: ogr_core.h:814
Definition: ogr_core.h:868
Definition: ogr_core.h:871
int OGR_GT_IsNonLinear(OGRwkbGeometryType)
Return if a geometry type is a non-linear geometry type.
Definition: ogrgeometry.cpp:6542
#define OGRERR_NOT_ENOUGH_MEMORY
Definition: ogr_core.h:294
OGRwkbGeometryType OGRMergeGeometryTypes(OGRwkbGeometryType eMain, OGRwkbGeometryType eExtra)
Find common geometry type.
Definition: ogrgeometry.cpp:2641
Definition: ogr_core.h:378
#define OGRERR_NON_EXISTING_FEATURE
Definition: ogr_core.h:301
OGRwkbGeometryType OGRMergeGeometryTypesEx(OGRwkbGeometryType eMain, OGRwkbGeometryType eExtra, int bAllowPromotingToCurves)
Find common geometry type.
Definition: ogrgeometry.cpp:2678
Definition: ogr_core.h:381
Definition: ogr_core.h:354
Definition: ogr_core.h:628
Definition: ogr_core.h:345
Definition: ogr_core.h:847
Definition: ogr_core.h:389
Definition: ogr_core.h:816
Definition: ogr_core.h:376
#define OGRERR_INVALID_HANDLE
Definition: ogr_core.h:300
Definition: ogr_core.h:359
Definition: ogr_core.h:626
Definition: ogr_core.h:368
Definition: ogr_core.h:401
#define MIN(a, b)
Definition: cpl_port.h:395
Definition: ogr_core.h:803
Definition: ogr_core.h:827
Definition: ogr_core.h:392
Definition: ogr_core.h:832
Definition: ogr_core.h:328
Definition: ogr_core.h:383
Definition: ogr_core.h:335
Definition: ogr_core.h:901
Definition: ogr_core.h:492
OGRJustification
Definition: ogr_core.h:638
Definition: ogr_core.h:899
ogr_style_tool_units_id
Definition: ogr_core.h:810
Definition: ogr_core.h:427
Definition: ogr_core.h:603
Definition: ogr_core.h:333
Definition: ogr_core.h:900
Definition: ogr_core.h:321
Definition: ogr_core.h:630
Definition: ogr_core.h:813
Definition: ogr_core.h:890
OGRFieldType
Definition: ogr_core.h:594
Definition: ogr_core.h:374
Definition: ogr_core.h:385
Definition: ogr_core.h:607
Definition: ogr_core.h:886
Definition: ogr_core.h:425
Definition: ogr_core.h:888
Definition: ogr_core.h:361
OGRwkbGeometryType OGR_GT_GetLinear(OGRwkbGeometryType eType)
Returns the non-curve geometry type that can contain the passed geometry type.
Definition: ogrgeometry.cpp:6457
Definition: ogr_core.h:866
OGRwkbVariant
Definition: ogr_core.h:423
Definition: ogr_core.h:894
Definition: ogr_core.h:352
Definition: ogr_core.h:602
Definition: ogr_core.h:896
ogr_style_tool_param_brush_id
Definition: ogr_core.h:841
Definition: ogr_core.h:394
Definition: ogr_core.h:396
Definition: ogr_core.h:679
#define OGRERR_NOT_ENOUGH_DATA
Definition: ogr_core.h:293
Definition: ogr_core.h:395
Definition: ogr_core.h:384
Definition: ogr_core.h:817
Definition: ogr_core.h:365
Definition: ogr_core.h:826
Definition: ogr_core.h:391
OGRwkbGeometryType OGR_GT_GetCollection(OGRwkbGeometryType eType)
Returns the collection type that can contain the passed geometry type.
Definition: ogrgeometry.cpp:6352
Definition: ogr_core.h:802
Definition: ogr_core.h:863
Definition: ogr_core.h:340
ogr_style_tool_class_id
Definition: ogr_core.h:797
#define CPL_C_END
Definition: cpl_port.h:337
Definition: ogr_core.h:889
long long GIntBig
Definition: cpl_port.h:246
Definition: ogr_core.h:804
Definition: ogr_core.h:379
Definition: ogr_core.h:382
Definition: ogr_core.h:388
Definition: ogr_core.h:336
Definition: ogr_core.h:872
Definition: ogr_core.h:801
#define OGRERR_FAILURE
Definition: ogr_core.h:298
#define OGRERR_UNSUPPORTED_SRS
Definition: ogr_core.h:299
OGRwkbGeometryType OGR_GT_GetCurve(OGRwkbGeometryType eType)
Returns the curve geometry type that can contain the passed geometry type.
Definition: ogrgeometry.cpp:6408
Definition: ogr_core.h:799
int OGRErr
Definition: ogr_core.h:290
Definition: ogr_core.h:329
Definition: ogr_core.h:893
Definition: ogr_core.h:600
int OGR_GT_HasZ(OGRwkbGeometryType eType)
Return if the geometry type is a 3D geometry type.
Definition: ogrgeometry.cpp:6165
Definition: ogr_core.h:399
const char * OGRGeometryTypeToName(OGRwkbGeometryType eType)
Fetch a human readable name corresponding to an OGRwkbGeometryType value. The returned value should n...
Definition: ogrgeometry.cpp:2418
Definition: ogr_core.h:601
Definition: ogr_core.h:375
Definition: ogr_core.h:597
Definition: ogr_core.h:371
Definition: ogr_core.h:815
Definition: ogr_core.h:596
Definition: ogr_core.h:898
Definition: ogr_core.h:341
int OGR_GT_IsCurve(OGRwkbGeometryType)
Return if a geometry type is an instance of Curve.
Definition: ogrgeometry.cpp:6499