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
48 extern "C++"
49 {
50 #if !defined(DOXYGEN_SKIP)
51 #include <limits>
52 #endif
53
57 class CPL_DLL OGREnvelope
58 {
59 public:
61 OGREnvelope()
62 : MinX(std::numeric_limits<double>::infinity()),
63 MaxX(-std::numeric_limits<double>::infinity()),
64 MinY(std::numeric_limits<double>::infinity()),
65 MaxY(-std::numeric_limits<double>::infinity())
66 {
67 }
68
70 OGREnvelope(const OGREnvelope &oOther)
71 : MinX(oOther.MinX), MaxX(oOther.MaxX), MinY(oOther.MinY),
72 MaxY(oOther.MaxY)
73 {
74 }
75
77 OGREnvelope &operator=(const OGREnvelope &) = default;
78
80 double MinX;
81
83 double MaxX;
84
86 double MinY;
87
89 double MaxY;
90
91 #ifdef HAVE_GCC_DIAGNOSTIC_PUSH
92 #pragma GCC diagnostic push
93 #pragma GCC diagnostic ignored "-Wfloat-equal"
94 #endif
95
97 int IsInit() const
98 {
99 return MinX != std::numeric_limits<double>::infinity();
100 }
101
102 #ifdef HAVE_GCC_DIAGNOSTIC_PUSH
103 #pragma GCC diagnostic pop
104 #endif
105
108 void Merge(OGREnvelope const &sOther)
109 {
110 MinX = MIN(MinX, sOther.MinX);
111 MaxX = MAX(MaxX, sOther.MaxX);
112 MinY = MIN(MinY, sOther.MinY);
113 MaxY = MAX(MaxY, sOther.MaxY);
114 }
115
118 void Merge(double dfX, double dfY)
119 {
120 MinX = MIN(MinX, dfX);
121 MaxX = MAX(MaxX, dfX);
122 MinY = MIN(MinY, dfY);
123 MaxY = MAX(MaxY, dfY);
124 }
125
128 void Intersect(OGREnvelope const &sOther)
129 {
130 if (Intersects(sOther))
131 {
132 if (IsInit())
133 {
134 MinX = MAX(MinX, sOther.MinX);
135 MaxX = MIN(MaxX, sOther.MaxX);
136 MinY = MAX(MinY, sOther.MinY);
137 MaxY = MIN(MaxY, sOther.MaxY);
138 }
139 else
140 {
141 MinX = sOther.MinX;
142 MaxX = sOther.MaxX;
143 MinY = sOther.MinY;
144 MaxY = sOther.MaxY;
145 }
146 }
147 else
148 {
149 *this = OGREnvelope();
150 }
151 }
152
155 int Intersects(OGREnvelope const &other) const
156 {
157 return MinX <= other.MaxX && MaxX >= other.MinX &&
158 MinY <= other.MaxY && MaxY >= other.MinY;
159 }
160
162 int Contains(OGREnvelope const &other) const
163 {
164 return MinX <= other.MinX && MinY <= other.MinY &&
165 MaxX >= other.MaxX && MaxY >= other.MaxY;
166 }
167
170 bool operator==(const OGREnvelope &other) const
171 {
172 #ifdef HAVE_GCC_DIAGNOSTIC_PUSH
173 #pragma GCC diagnostic push
174 #pragma GCC diagnostic ignored "-Wfloat-equal"
175 #endif
176 return MinX == other.MinX && MinY == other.MinY &&
177 MaxX == other.MaxX && MaxY == other.MaxY;
178
179 #ifdef HAVE_GCC_DIAGNOSTIC_PUSH
180 #pragma GCC diagnostic pop
181 #endif
182 }
183
186 bool operator!=(const OGREnvelope &other) const
187 {
188 return !(*this == other);
189 }
190 };
191
192 } // extern "C++"
193
194 #else
195 typedef struct
196 {
197 double MinX;
198 double MaxX;
199 double MinY;
200 double MaxY;
201 } OGREnvelope;
202 #endif
203
204 #if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS)
205
206 extern "C++"
207 {
208
212 class CPL_DLL OGREnvelope3D : public OGREnvelope
213 {
214 public:
216 OGREnvelope3D()
217 : OGREnvelope(), MinZ(std::numeric_limits<double>::infinity()),
218 MaxZ(-std::numeric_limits<double>::infinity())
219 {
220 }
221
223 OGREnvelope3D(const OGREnvelope3D &oOther)
224 : OGREnvelope(oOther), MinZ(oOther.MinZ), MaxZ(oOther.MaxZ)
225 {
226 }
227
229 OGREnvelope3D &operator=(const OGREnvelope3D &) = default;
230
232 double MinZ;
233
235 double MaxZ;
236
237 #ifdef HAVE_GCC_DIAGNOSTIC_PUSH
238 #pragma GCC diagnostic push
239 #pragma GCC diagnostic ignored "-Wfloat-equal"
240 #endif
241
243 int IsInit() const
244 {
245 return MinX != std::numeric_limits<double>::infinity();
246 }
247 #ifdef HAVE_GCC_DIAGNOSTIC_PUSH
248 #pragma GCC diagnostic pop
249 #endif
250
253 void Merge(OGREnvelope3D const &sOther)
254 {
255 MinX = MIN(MinX, sOther.MinX);
256 MaxX = MAX(MaxX, sOther.MaxX);
257 MinY = MIN(MinY, sOther.MinY);
258 MaxY = MAX(MaxY, sOther.MaxY);
259 MinZ = MIN(MinZ, sOther.MinZ);
260 MaxZ = MAX(MaxZ, sOther.MaxZ);
261 }
262
265 void Merge(OGREnvelope const &sOther)
266 {
267 MinX = MIN(MinX, sOther.MinX);
268 MaxX = MAX(MaxX, sOther.MaxX);
269 MinY = MIN(MinY, sOther.MinY);
270 MaxY = MAX(MaxY, sOther.MaxY);
271 }
272
275 void Merge(double dfX, double dfY, double dfZ)
276 {
277 MinX = MIN(MinX, dfX);
278 MaxX = MAX(MaxX, dfX);
279 MinY = MIN(MinY, dfY);
280 MaxY = MAX(MaxY, dfY);
281 MinZ = MIN(MinZ, dfZ);
282 MaxZ = MAX(MaxZ, dfZ);
283 }
284
287 void Intersect(OGREnvelope3D const &sOther)
288 {
289 if (Intersects(sOther))
290 {
291 if (IsInit())
292 {
293 MinX = MAX(MinX, sOther.MinX);
294 MaxX = MIN(MaxX, sOther.MaxX);
295 MinY = MAX(MinY, sOther.MinY);
296 MaxY = MIN(MaxY, sOther.MaxY);
297 MinZ = MAX(MinZ, sOther.MinZ);
298 MaxZ = MIN(MaxZ, sOther.MaxZ);
299 }
300 else
301 {
302 MinX = sOther.MinX;
303 MaxX = sOther.MaxX;
304 MinY = sOther.MinY;
305 MaxY = sOther.MaxY;
306 MinZ = sOther.MinZ;
307 MaxZ = sOther.MaxZ;
308 }
309 }
310 else
311 {
312 *this = OGREnvelope3D();
313 }
314 }
315
318 int Intersects(OGREnvelope3D const &other) const
319 {
320 return MinX <= other.MaxX && MaxX >= other.MinX &&
321 MinY <= other.MaxY && MaxY >= other.MinY &&
322 MinZ <= other.MaxZ && MaxZ >= other.MinZ;
323 }
324
326 int Contains(OGREnvelope3D const &other) const
327 {
328 return MinX <= other.MinX && MinY <= other.MinY &&
329 MaxX >= other.MaxX && MaxY >= other.MaxY &&
330 MinZ <= other.MinZ && MaxZ >= other.MaxZ;
331 }
332 };
333
334 } // extern "C++"
335
336 #else
337 typedef struct
338 {
339 double MinX;
340 double MaxX;
341 double MinY;
342 double MaxY;
343 double MinZ;
344 double MaxZ;
345 } OGREnvelope3D;
346 #endif
347
348 CPL_C_START
349
351 void CPL_DLL *OGRMalloc(size_t) CPL_WARN_DEPRECATED("Use CPLMalloc instead.");
352 void CPL_DLL *OGRCalloc(size_t, size_t)
353 CPL_WARN_DEPRECATED("Use CPLCalloc instead.");
354 void CPL_DLL *OGRRealloc(void *, size_t)
355 CPL_WARN_DEPRECATED("Use CPLRealloc instead.");
356 char CPL_DLL *OGRStrdup(const char *)
357 CPL_WARN_DEPRECATED("Use CPLStrdup instead.");
358 void CPL_DLL OGRFree(void *) CPL_WARN_DEPRECATED("Use CPLFree instead.");
361 #ifdef STRICT_OGRERR_TYPE
362
363 typedef enum
364 {
365 OGRERR_NONE,
366 OGRERR_NOT_ENOUGH_DATA,
367 OGRERR_NOT_ENOUGH_MEMORY,
368 OGRERR_UNSUPPORTED_GEOMETRY_TYPE,
369 OGRERR_UNSUPPORTED_OPERATION,
370 OGRERR_CORRUPT_DATA,
371 OGRERR_FAILURE,
372 OGRERR_UNSUPPORTED_SRS,
373 OGRERR_INVALID_HANDLE,
374 OGRERR_NON_EXISTING_FEATURE
375 } OGRErr;
376 #else
377
378 typedef int OGRErr;
379
380 #define OGRERR_NONE 0
381 #define OGRERR_NOT_ENOUGH_DATA 1
382 #define OGRERR_NOT_ENOUGH_MEMORY 2
383 #define OGRERR_UNSUPPORTED_GEOMETRY_TYPE 3
384 #define OGRERR_UNSUPPORTED_OPERATION 4
385 #define OGRERR_CORRUPT_DATA 5
386 #define OGRERR_FAILURE 6
387 #define OGRERR_UNSUPPORTED_SRS 7
388 #define OGRERR_INVALID_HANDLE 8
389 #define OGRERR_NON_EXISTING_FEATURE \
390 9
392 #endif
393
395 typedef int OGRBoolean;
396
397 /* -------------------------------------------------------------------- */
398 /* ogr_geometry.h related definitions. */
399 /* -------------------------------------------------------------------- */
400
406 typedef enum
407 {
408 wkbUnknown = 0,
410 wkbPoint = 1,
411 wkbLineString = 2,
413 wkbPolygon = 3,
416 wkbMultiPoint = 4,
417 wkbMultiLineString =
418 5,
419 wkbMultiPolygon = 6,
420 wkbGeometryCollection = 7,
423 wkbCircularString = 8,
425 wkbCompoundCurve = 9,
427 wkbCurvePolygon = 10,
430 wkbMultiCurve = 11,
432 wkbMultiSurface = 12,
434 wkbCurve =
435 13,
436 wkbSurface =
437 14,
438 wkbPolyhedralSurface =
439 15,
441 wkbTIN = 16,
443 wkbTriangle = 17,
445 wkbNone = 100,
446 wkbLinearRing = 101,
448 wkbCircularStringZ = 1008,
450 wkbCompoundCurveZ = 1009,
452 wkbCurvePolygonZ = 1010,
454 wkbMultiCurveZ = 1011,
456 wkbMultiSurfaceZ = 1012,
458 wkbCurveZ = 1013,
460 wkbSurfaceZ = 1014,
462 wkbPolyhedralSurfaceZ = 1015,
463 wkbTINZ = 1016,
464 wkbTriangleZ = 1017,
466 wkbPointM = 2001,
467 wkbLineStringM = 2002,
468 wkbPolygonM = 2003,
469 wkbMultiPointM = 2004,
470 wkbMultiLineStringM = 2005,
471 wkbMultiPolygonM = 2006,
472 wkbGeometryCollectionM = 2007,
473 wkbCircularStringM = 2008,
474 wkbCompoundCurveM = 2009,
475 wkbCurvePolygonM = 2010,
476 wkbMultiCurveM = 2011,
477 wkbMultiSurfaceM = 2012,
478 wkbCurveM = 2013,
479 wkbSurfaceM = 2014,
480 wkbPolyhedralSurfaceM = 2015,
481 wkbTINM = 2016,
482 wkbTriangleM = 2017,
484 wkbPointZM = 3001,
485 wkbLineStringZM = 3002,
486 wkbPolygonZM = 3003,
487 wkbMultiPointZM = 3004,
488 wkbMultiLineStringZM = 3005,
489 wkbMultiPolygonZM = 3006,
490 wkbGeometryCollectionZM = 3007,
491 wkbCircularStringZM = 3008,
492 wkbCompoundCurveZM = 3009,
493 wkbCurvePolygonZM = 3010,
494 wkbMultiCurveZM = 3011,
495 wkbMultiSurfaceZM = 3012,
496 wkbCurveZM = 3013,
497 wkbSurfaceZM = 3014,
498 wkbPolyhedralSurfaceZM = 3015,
499 wkbTINZM = 3016,
500 wkbTriangleZM = 3017,
502 #if defined(DOXYGEN_SKIP)
503 // Sphinx doesn't like 0x8000000x constants
504 wkbPoint25D = -2147483647,
505 wkbLineString25D = -2147483646,
506 wkbPolygon25D = -2147483645,
507 wkbMultiPoint25D = -2147483644,
508 wkbMultiLineString25D = -2147483643,
509 wkbMultiPolygon25D = -2147483642,
510 wkbGeometryCollection25D = -2147483641
511 #else
512 wkbPoint25D = 0x80000001,
513 wkbLineString25D = 0x80000002,
514 wkbPolygon25D = 0x80000003,
515 wkbMultiPoint25D = 0x80000004,
516 wkbMultiLineString25D = 0x80000005,
517 wkbMultiPolygon25D = 0x80000006,
518 wkbGeometryCollection25D = 0x80000007
519 #endif
520 } OGRwkbGeometryType;
521
522 /* clang-format off */
538 /* clang-format on */
539
540 typedef enum
541 {
542 wkbVariantOldOgc,
543 wkbVariantIso,
545 wkbVariantPostGIS1
547 } OGRwkbVariant;
548
549 #ifndef GDAL_COMPILATION
550
551 #define wkb25DBit 0x80000000
552 #endif
553
554 #ifndef __cplusplus
555
556 #define wkbFlatten(x) OGR_GT_Flatten((OGRwkbGeometryType)(x))
557 #else
558
559 #define wkbFlatten(x) OGR_GT_Flatten(static_cast<OGRwkbGeometryType>(x))
560 #endif
561
565 #define wkbHasZ(x) (OGR_GT_HasZ(x) != 0)
566
570 #define wkbSetZ(x) OGR_GT_SetZ(x)
571
575 #define wkbHasM(x) (OGR_GT_HasM(x) != 0)
576
581 #define wkbSetM(x) OGR_GT_SetM(x)
582
583 #ifndef DOXYGEN_SKIP
584 #define ogrZMarker 0x21125711
585 #endif
586
587 const char CPL_DLL *OGRGeometryTypeToName(OGRwkbGeometryType eType);
588 OGRwkbGeometryType CPL_DLL OGRMergeGeometryTypes(OGRwkbGeometryType eMain,
589 OGRwkbGeometryType eExtra);
590 OGRwkbGeometryType CPL_DLL OGRMergeGeometryTypesEx(OGRwkbGeometryType eMain,
591 OGRwkbGeometryType eExtra,
592 int bAllowPromotingToCurves);
593 OGRwkbGeometryType CPL_DLL OGR_GT_Flatten(OGRwkbGeometryType eType);
594 OGRwkbGeometryType CPL_DLL OGR_GT_SetZ(OGRwkbGeometryType eType);
595 OGRwkbGeometryType CPL_DLL OGR_GT_SetM(OGRwkbGeometryType eType);
596 OGRwkbGeometryType CPL_DLL OGR_GT_SetModifier(OGRwkbGeometryType eType,
597 int bSetZ, int bSetM);
598 int CPL_DLL OGR_GT_HasZ(OGRwkbGeometryType eType);
599 int CPL_DLL OGR_GT_HasM(OGRwkbGeometryType eType);
600 int CPL_DLL OGR_GT_IsSubClassOf(OGRwkbGeometryType eType,
601 OGRwkbGeometryType eSuperType);
602 int CPL_DLL OGR_GT_IsCurve(OGRwkbGeometryType);
603 int CPL_DLL OGR_GT_IsSurface(OGRwkbGeometryType);
604 int CPL_DLL OGR_GT_IsNonLinear(OGRwkbGeometryType);
605 OGRwkbGeometryType CPL_DLL OGR_GT_GetCollection(OGRwkbGeometryType eType);
606 OGRwkbGeometryType CPL_DLL OGR_GT_GetCurve(OGRwkbGeometryType eType);
607 OGRwkbGeometryType CPL_DLL OGR_GT_GetLinear(OGRwkbGeometryType eType);
608
610 typedef enum
611 {
612 wkbXDR = 0,
613 wkbNDR = 1
614 } OGRwkbByteOrder;
615
616 #ifndef DOXYGEN_SKIP
617
618 #ifndef NO_HACK_FOR_IBM_DB2_V72
619 #define HACK_FOR_IBM_DB2_V72
620 #endif
621
622 #ifdef HACK_FOR_IBM_DB2_V72
623 #define DB2_V72_FIX_BYTE_ORDER(x) ((((x)&0x31) == (x)) ? ((x)&0x1) : (x))
624 #define DB2_V72_UNFIX_BYTE_ORDER(x) \
625 CPL_STATIC_CAST(unsigned char, OGRGeometry::bGenerate_DB2_V72_BYTE_ORDER \
626 ? ((x) | 0x30) \
627 : (x))
628 #else
629 #define DB2_V72_FIX_BYTE_ORDER(x) (x)
630 #define DB2_V72_UNFIX_BYTE_ORDER(x) (x)
631 #endif
632
633 #endif /* #ifndef DOXYGEN_SKIP */
634
638 #define ALTER_NAME_FLAG 0x1
639
643 #define ALTER_TYPE_FLAG 0x2
644
648 #define ALTER_WIDTH_PRECISION_FLAG 0x4
649
654 #define ALTER_NULLABLE_FLAG 0x8
655
660 #define ALTER_DEFAULT_FLAG 0x10
661
666 #define ALTER_UNIQUE_FLAG 0x20
667
672 #define ALTER_DOMAIN_FLAG 0x40
673
678 #define ALTER_ALTERNATIVE_NAME_FLAG 0x80
679
684 #define ALTER_COMMENT_FLAG 0x100
685
689 #define ALTER_ALL_FLAG \
690 (ALTER_NAME_FLAG | ALTER_TYPE_FLAG | ALTER_WIDTH_PRECISION_FLAG | \
691 ALTER_NULLABLE_FLAG | ALTER_DEFAULT_FLAG | ALTER_UNIQUE_FLAG | \
692 ALTER_DOMAIN_FLAG | ALTER_ALTERNATIVE_NAME_FLAG | ALTER_COMMENT_FLAG)
693
698 #define ALTER_GEOM_FIELD_DEFN_NAME_FLAG 0x1000
699
704 #define ALTER_GEOM_FIELD_DEFN_TYPE_FLAG 0x2000
705
710 #define ALTER_GEOM_FIELD_DEFN_NULLABLE_FLAG 0x4000
711
716 #define ALTER_GEOM_FIELD_DEFN_SRS_FLAG 0x8000
717
722 #define ALTER_GEOM_FIELD_DEFN_SRS_COORD_EPOCH_FLAG 0x10000
723
728 #define ALTER_GEOM_FIELD_DEFN_ALL_FLAG \
729 (ALTER_GEOM_FIELD_DEFN_NAME_FLAG | ALTER_GEOM_FIELD_DEFN_TYPE_FLAG | \
730 ALTER_GEOM_FIELD_DEFN_NULLABLE_FLAG | ALTER_GEOM_FIELD_DEFN_SRS_FLAG | \
731 ALTER_GEOM_FIELD_DEFN_SRS_COORD_EPOCH_FLAG)
732
737 #define OGR_F_VAL_NULL 0x00000001
738
743 #define OGR_F_VAL_GEOM_TYPE 0x00000002
744
749 #define OGR_F_VAL_WIDTH 0x00000004
750
757 #define OGR_F_VAL_ALLOW_NULL_WHEN_DEFAULT 0x00000008
758
765 #define OGR_F_VAL_ALLOW_DIFFERENT_GEOM_DIM 0x00000010
766
771 #define OGR_F_VAL_ALL (0x7FFFFFFF & ~OGR_F_VAL_ALLOW_DIFFERENT_GEOM_DIM)
772
773 /************************************************************************/
774 /* ogr_feature.h related definitions. */
775 /************************************************************************/
776
783 typedef enum
784 { 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,
799 OFTMaxType = 13
800 } OGRFieldType;
801
811 typedef enum
812 { OFSTNone = 0,
815 OFSTBoolean = 1,
817 OFSTInt16 = 2,
820 OFSTFloat32 = 3,
824 OFSTJSON = 4,
828 OFSTUUID = 5,
829 OFSTMaxSubType = 5
830 } OGRFieldSubType;
831
836 typedef enum
837 {
838 OJUndefined = 0,
839 OJLeft = 1,
840 OJRight = 2
841 } OGRJustification;
842
844 #define OGRNullFID -1
845
846 /* Special value for an unknown field type. This should only be used
847 * while reading a file. At the end of file any unknown types should
848 * be set to OFTString.
849 */
851 #define OGRUnknownType static_cast<OGRFieldType>(-1)
852
859 #define OGRUnsetMarker -21121
860
867 #define OGRNullMarker -21122
868
873 #define OGR_TZFLAG_UNKNOWN 0
874
876 #define OGR_TZFLAG_LOCALTIME 1
877
882 #define OGR_TZFLAG_MIXED_TZ 2
883
890 #define OGR_TZFLAG_UTC 100
891
892 /************************************************************************/
893 /* OGRField */
894 /************************************************************************/
895
900 typedef union
901 {
903 int Integer;
904 GIntBig Integer64;
905 double Real;
906 char *String;
907
908 struct
909 {
910 int nCount;
911 int *paList;
912 } IntegerList;
913
914 struct
915 {
916 int nCount;
917 GIntBig *paList;
918 } Integer64List;
919
920 struct
921 {
922 int nCount;
923 double *paList;
924 } RealList;
925
926 struct
927 {
928 int nCount;
929 char **paList;
930 } StringList;
931
932 struct
933 {
934 int nCount;
935 GByte *paData;
936 } Binary;
937
938 struct
939 {
940 int nMarker1;
941 int nMarker2;
942 int nMarker3;
943 } Set;
944
945 struct
946 {
947 GInt16 Year;
948 GByte Month;
949 GByte Day;
950 GByte Hour;
951 GByte Minute;
952 GByte TZFlag; /* 0=unknown, 1=localtime(ambiguous),
953 100=GMT, 104=GMT+1, 80=GMT-5, etc */
954 GByte Reserved; /* must be set to 0 */
955 float Second; /* with millisecond accuracy. at the end of the structure,
956 so as to keep it 12 bytes on 32 bit */
957 } Date;
959 } OGRField;
960
961 #ifdef __cplusplus
962
963 inline int OGR_GET_MS(float fSec)
964 {
965 if (CPLIsNan(fSec))
966 return 0;
967 if (fSec >= 999)
968 return 999;
969 if (fSec <= 0)
970 return 0;
971 const float fValue = (fSec - static_cast<int>(fSec)) * 1000 + 0.5f;
972 return static_cast<int>(fValue);
973 }
974 #endif // __cplusplus
975
976 int CPL_DLL OGRParseDate(const char *pszInput, OGRField *psOutput,
977 int nOptions);
978
979 /* -------------------------------------------------------------------- */
980 /* Constants from ogrsf_frmts.h for capabilities. */
981 /* -------------------------------------------------------------------- */
982 #define OLCRandomRead "RandomRead"
983 #define OLCSequentialWrite \
984 "SequentialWrite"
985 #define OLCRandomWrite "RandomWrite"
986 #define OLCFastSpatialFilter \
987 "FastSpatialFilter"
988 #define OLCFastFeatureCount \
989 "FastFeatureCount"
991 #define OLCFastGetExtent \
992 "FastGetExtent"
993 #define OLCCreateField \
994 "CreateField"
996 #define OLCDeleteField \
997 "DeleteField"
999 #define OLCReorderFields \
1000 "ReorderFields"
1001 #define OLCAlterFieldDefn \
1002 "AlterFieldDefn"
1003 #define OLCAlterGeomFieldDefn \
1004 "AlterGeomFieldDefn"
1006 #define OLCTransactions \
1007 "Transactions"
1009 #define OLCDeleteFeature \
1010 "DeleteFeature"
1011 #define OLCUpsertFeature \
1012 "UpsertFeature"
1013 #define OLCUpdateFeature \
1014 "UpdateFeature"
1016 #define OLCFastSetNextByIndex \
1017 "FastSetNextByIndex"
1019 #define OLCStringsAsUTF8 \
1020 "StringsAsUTF8"
1022 #define OLCIgnoreFields \
1023 "IgnoreFields"
1024 #define OLCCreateGeomField \
1025 "CreateGeomField"
1026 #define OLCCurveGeometries \
1027 "CurveGeometries"
1028 #define OLCMeasuredGeometries \
1029 "MeasuredGeometries"
1031 #define OLCZGeometries \
1032 "ZGeometries"
1034 #define OLCRename \
1035 "Rename"
1036 #define OLCFastGetArrowStream \
1037 "FastGetArrowStream"
1039 #define OLCFastWriteArrowBatch \
1040 "FastWriteArrowBatch"
1043 #define ODsCCreateLayer \
1044 "CreateLayer"
1045 #define ODsCDeleteLayer \
1046 "DeleteLayer"
1047 /* Reserved: "RenameLayer" */
1048 #define ODsCCreateGeomFieldAfterCreateLayer \
1049 "CreateGeomFieldAfterCreateLayer"
1051 #define ODsCCurveGeometries \
1052 "CurveGeometries"
1053 #define ODsCTransactions \
1054 "Transactions"
1055 #define ODsCEmulatedTransactions \
1056 "EmulatedTransactions"
1058 #define ODsCMeasuredGeometries \
1059 "MeasuredGeometries"
1061 #define ODsCZGeometries \
1062 "ZGeometries"
1064 #define ODsCRandomLayerRead \
1065 "RandomLayerRead"
1067 /* Note the unfortunate trailing space at the end of the string */
1068 #define ODsCRandomLayerWrite \
1069 "RandomLayerWrite "
1071 #define ODsCAddFieldDomain \
1072 "AddFieldDomain"
1074 #define ODsCDeleteFieldDomain \
1075 "DeleteFieldDomain"
1077 #define ODsCUpdateFieldDomain \
1078 "UpdateFieldDomain"
1081 #define ODrCCreateDataSource \
1082 "CreateDataSource"
1083 #define ODrCDeleteDataSource \
1084 "DeleteDataSource"
1086 /* -------------------------------------------------------------------- */
1087 /* Layer metadata items. */
1088 /* -------------------------------------------------------------------- */
1093 #define OLMD_FID64 "OLMD_FID64"
1094
1095 /************************************************************************/
1096 /* ogr_featurestyle.h related definitions. */
1097 /************************************************************************/
1098
1103 typedef enum ogr_style_tool_class_id
1104 {
1105 OGRSTCNone = 0,
1106 OGRSTCPen = 1,
1107 OGRSTCBrush = 2,
1108 OGRSTCSymbol = 3,
1109 OGRSTCLabel = 4,
1110 OGRSTCVector = 5
1111 } OGRSTClassId;
1112
1116 typedef enum ogr_style_tool_units_id
1117 {
1118 OGRSTUGround = 0,
1119 OGRSTUPixel = 1,
1120 OGRSTUPoints = 2,
1121 OGRSTUMM = 3,
1122 OGRSTUCM = 4,
1123 OGRSTUInches = 5
1124 } OGRSTUnitId;
1125
1129 typedef enum ogr_style_tool_param_pen_id
1130 {
1131 OGRSTPenColor = 0,
1132 OGRSTPenWidth = 1,
1133 OGRSTPenPattern = 2,
1134 OGRSTPenId = 3,
1135 OGRSTPenPerOffset = 4,
1136 OGRSTPenCap = 5,
1137 OGRSTPenJoin = 6,
1138 OGRSTPenPriority = 7,
1139 #ifndef DOXYGEN_SKIP
1140 OGRSTPenLast = 8
1141 #endif
1142 } OGRSTPenParam;
1143
1147 typedef enum ogr_style_tool_param_brush_id
1148 {
1149 OGRSTBrushFColor = 0,
1150 OGRSTBrushBColor = 1,
1151 OGRSTBrushId = 2,
1152 OGRSTBrushAngle = 3,
1153 OGRSTBrushSize = 4,
1154 OGRSTBrushDx = 5,
1155 OGRSTBrushDy = 6,
1156 OGRSTBrushPriority = 7,
1157 #ifndef DOXYGEN_SKIP
1158 OGRSTBrushLast = 8
1159 #endif
1160
1161 } OGRSTBrushParam;
1162
1166 typedef enum ogr_style_tool_param_symbol_id
1167 {
1168 OGRSTSymbolId = 0,
1169 OGRSTSymbolAngle = 1,
1170 OGRSTSymbolColor = 2,
1171 OGRSTSymbolSize = 3,
1172 OGRSTSymbolDx = 4,
1173 OGRSTSymbolDy = 5,
1174 OGRSTSymbolStep = 6,
1175 OGRSTSymbolPerp = 7,
1176 OGRSTSymbolOffset = 8,
1177 OGRSTSymbolPriority = 9,
1178 OGRSTSymbolFontName = 10,
1179 OGRSTSymbolOColor = 11,
1180 #ifndef DOXYGEN_SKIP
1181 OGRSTSymbolLast = 12
1182 #endif
1183 } OGRSTSymbolParam;
1184
1188 typedef enum ogr_style_tool_param_label_id
1189 {
1190 OGRSTLabelFontName = 0,
1191 OGRSTLabelSize = 1,
1192 OGRSTLabelTextString = 2,
1193 OGRSTLabelAngle = 3,
1194 OGRSTLabelFColor = 4,
1195 OGRSTLabelBColor = 5,
1196 OGRSTLabelPlacement = 6,
1197 OGRSTLabelAnchor = 7,
1198 OGRSTLabelDx = 8,
1199 OGRSTLabelDy = 9,
1200 OGRSTLabelPerp = 10,
1201 OGRSTLabelBold = 11,
1202 OGRSTLabelItalic = 12,
1203 OGRSTLabelUnderline = 13,
1204 OGRSTLabelPriority = 14,
1205 OGRSTLabelStrikeout = 15,
1206 OGRSTLabelStretch = 16,
1207 OGRSTLabelAdjHor = 17,
1208 OGRSTLabelAdjVert = 18,
1209 OGRSTLabelHColor = 19,
1210 OGRSTLabelOColor = 20,
1211 #ifndef DOXYGEN_SKIP
1212 OGRSTLabelLast = 21
1213 #endif
1214 } OGRSTLabelParam;
1215
1216 /* -------------------------------------------------------------------- */
1217 /* Field domains */
1218 /* -------------------------------------------------------------------- */
1219
1224 typedef struct
1225 {
1227 char *pszCode;
1228
1230 char *pszValue;
1231 } OGRCodedValue;
1232
1237 typedef enum
1238 {
1240 OFDT_CODED,
1242 OFDT_RANGE,
1244 OFDT_GLOB
1245 } OGRFieldDomainType;
1246
1254 typedef enum
1255 {
1257 OFDSP_DEFAULT_VALUE,
1259 OFDSP_DUPLICATE,
1262 OFDSP_GEOMETRY_RATIO
1263 } OGRFieldDomainSplitPolicy;
1264
1272 typedef enum
1273 {
1275 OFDMP_DEFAULT_VALUE,
1277 OFDMP_SUM,
1279 OFDMP_GEOMETRY_WEIGHTED
1280 } OGRFieldDomainMergePolicy;
1281
1282 /* ------------------------------------------------------------------- */
1283 /* Version checking */
1284 /* -------------------------------------------------------------------- */
1285
1286 #ifndef DOXYGEN_SKIP
1287
1288 /* Note to developers : please keep this section in sync with gdal.h */
1289
1290 #ifndef GDAL_VERSION_INFO_DEFINED
1291 #define GDAL_VERSION_INFO_DEFINED
1292 const char CPL_DLL *CPL_STDCALL GDALVersionInfo(const char *);
1293 #endif
1294
1295 #ifndef GDAL_CHECK_VERSION
1296
1309 int CPL_DLL CPL_STDCALL GDALCheckVersion(int nVersionMajor, int nVersionMinor,
1310 const char *pszCallingComponentName);
1311
1313 #define GDAL_CHECK_VERSION(pszCallingComponentName) \
1314 GDALCheckVersion(GDAL_VERSION_MAJOR, GDAL_VERSION_MINOR, \
1315 pszCallingComponentName)
1316
1317 #endif
1318
1319 #endif /* #ifndef DOXYGEN_SKIP */
1320
1321 CPL_C_END
1322
1323 #endif /* ndef OGR_CORE_H_INCLUDED */
OGRSTSymbolStep
@ OGRSTSymbolStep
Step.
Definition: ogr_core.h:1174
MAX
#define MAX(a, b)
Macro to compute the maximum of 2 values.
Definition: cpl_port.h:385
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:2529
OGRSTLabelStretch
@ OGRSTLabelStretch
Stretch.
Definition: ogr_core.h:1206
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:275
wkbTINM
@ wkbTINM
ISO SQL/MM Part 3.
Definition: ogr_core.h:481
OGREnvelope::OGREnvelope
OGREnvelope(const OGREnvelope &oOther)
Copy constructor.
Definition: ogr_core.h:70
GDALVersionInfo
const char * GDALVersionInfo(const char *)
Get runtime version information.
Definition: gdal_misc.cpp:2362
wkbSurfaceM
@ wkbSurfaceM
ISO SQL/MM Part 3.
Definition: ogr_core.h:479
wkbPointZM
@ wkbPointZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:484
wkbCurvePolygonZM
@ wkbCurvePolygonZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:493
OGRFieldDomainMergePolicy
OGRFieldDomainMergePolicy
Merge policy for field domains.
Definition: ogr_core.h:1272
OFDSP_DEFAULT_VALUE
@ OFDSP_DEFAULT_VALUE
Default value.
Definition: ogr_core.h:1257
OGRFieldDomainType
OGRFieldDomainType
Type of field domain.
Definition: ogr_core.h:1237
OGRSTBrushSize
@ OGRSTBrushSize
Size.
Definition: ogr_core.h:1153
GByte
unsigned char GByte
Unsigned byte type.
Definition: cpl_port.h:196
OGRSTLabelStrikeout
@ OGRSTLabelStrikeout
Strike out.
Definition: ogr_core.h:1205
OFSTFloat32
@ OFSTFloat32
Single precision (32 bit) floating point.
Definition: ogr_core.h:820
OFTWideString
@ OFTWideString
deprecated
Definition: ogr_core.h:791
OGRSTUInches
@ OGRSTUInches
Inch.
Definition: ogr_core.h:1123
OGRERR_UNSUPPORTED_GEOMETRY_TYPE
#define OGRERR_UNSUPPORTED_GEOMETRY_TYPE
Unsupported geometry type.
Definition: ogr_core.h:383
GInt16
short GInt16
Int16 type.
Definition: cpl_port.h:192
OGR_GT_GetCollection
OGRwkbGeometryType OGR_GT_GetCollection(OGRwkbGeometryType eType)
Returns the collection type that can contain the passed geometry type.
Definition: ogrgeometry.cpp:7085
wkbMultiCurveZM
@ wkbMultiCurveZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:494
OGRSTLabelPerp
@ OGRSTLabelPerp
Perpendicular.
Definition: ogr_core.h:1200
OGRSTUCM
@ OGRSTUCM
Centimeter.
Definition: ogr_core.h:1122
OFSTInt16
@ OFSTInt16
Signed 16-bit integer.
Definition: ogr_core.h:817
OGREnvelope3D::Merge
void Merge(OGREnvelope const &sOther)
Update the current object by computing its union with the other rectangle.
Definition: ogr_core.h:265
wkbMultiLineStringZM
@ wkbMultiLineStringZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:488
OFTBinary
@ OFTBinary
Raw Binary data.
Definition: ogr_core.h:793
OGRSTSymbolPriority
@ OGRSTSymbolPriority
Priority.
Definition: ogr_core.h:1177
wkbPoint
@ wkbPoint
0-dimensional geometric object, standard WKB
Definition: ogr_core.h:410
OGREnvelope::MinX
double MinX
Minimum X value.
Definition: ogr_core.h:80
OGRSTLabelBColor
@ OGRSTLabelBColor
Background color.
Definition: ogr_core.h:1195
OFSTBoolean
@ OFSTBoolean
Boolean integer.
Definition: ogr_core.h:815
OGRSTLabelFColor
@ OGRSTLabelFColor
Foreground color.
Definition: ogr_core.h:1194
wkbCurvePolygonZ
@ wkbCurvePolygonZ
wkbCurvePolygon with Z component.
Definition: ogr_core.h:452
wkbMultiSurfaceZM
@ wkbMultiSurfaceZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:495
wkbTriangleZ
@ wkbTriangleZ
ISO SQL/MM Part 3.
Definition: ogr_core.h:464
OGR_GT_IsSubClassOf
int OGR_GT_IsSubClassOf(OGRwkbGeometryType eType, OGRwkbGeometryType eSuperType)
Returns if a type is a subclass of another one.
Definition: ogrgeometry.cpp:7021
wkbCompoundCurveZM
@ wkbCompoundCurveZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:492
wkbMultiSurfaceM
@ wkbMultiSurfaceM
ISO SQL/MM Part 3.
Definition: ogr_core.h:477
wkbMultiPolygon
@ wkbMultiPolygon
GeometryCollection of Polygons, standard WKB.
Definition: ogr_core.h:419
OGR_GT_Flatten
OGRwkbGeometryType OGR_GT_Flatten(OGRwkbGeometryType eType)
Returns the 2D geometry type corresponding to the passed geometry type.
Definition: ogrgeometry.cpp:6871
wkbMultiPoint25D
@ wkbMultiPoint25D
2.5D extension as per 99-402
Definition: ogr_core.h:507
wkbNDR
@ wkbNDR
LSB/Intel/Vax: Least Significant Byte First
Definition: ogr_core.h:613
ogr_style_tool_param_label_id
ogr_style_tool_param_label_id
List of parameters for use with OGRStyleLabel.
Definition: ogr_core.h:1188
OGRSTClassId
enum ogr_style_tool_class_id OGRSTClassId
OGRStyleTool derived class types (returned by GetType()).
OGRSTBrushParam
enum ogr_style_tool_param_brush_id OGRSTBrushParam
List of parameters for use with OGRStyleBrush.
wkbVariantOldOgc
@ wkbVariantOldOgc
Old-style 99-402 extended dimension (Z) WKB types.
Definition: ogr_core.h:542
OGR_GT_IsNonLinear
int OGR_GT_IsNonLinear(OGRwkbGeometryType)
Return if a geometry type is a non-linear geometry type.
Definition: ogrgeometry.cpp:7277
wkbCompoundCurve
@ wkbCompoundCurve
sequence of contiguous curves, ISO SQL/MM Part 3.
Definition: ogr_core.h:425
OGREnvelope::operator!=
bool operator!=(const OGREnvelope &other) const
Return whether the current rectangle is not equal to the other rectangle.
Definition: ogr_core.h:186
OGRSTLabelItalic
@ OGRSTLabelItalic
Italic.
Definition: ogr_core.h:1202
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:7192
OGRMergeGeometryTypes
OGRwkbGeometryType OGRMergeGeometryTypes(OGRwkbGeometryType eMain, OGRwkbGeometryType eExtra)
Find common geometry type.
Definition: ogrgeometry.cpp:2826
wkbPolygon25D
@ wkbPolygon25D
2.5D extension as per 99-402
Definition: ogr_core.h:506
OGRSTPenWidth
@ OGRSTPenWidth
Width.
Definition: ogr_core.h:1132
OFTWideStringList
@ OFTWideStringList
deprecated
Definition: ogr_core.h:792
wkbPolygonZM
@ wkbPolygonZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:486
OGRSTLabelParam
enum ogr_style_tool_param_label_id OGRSTLabelParam
List of parameters for use with OGRStyleLabel.
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:6994
wkbVariantPostGIS1
@ wkbVariantPostGIS1
PostGIS 1.X has different codes for CurvePolygon, MultiCurve and MultiSurface.
Definition: ogr_core.h:545
OFTDateTime
@ OFTDateTime
Date and Time.
Definition: ogr_core.h:796
wkbPolygonM
@ wkbPolygonM
ISO SQL/MM Part 3.
Definition: ogr_core.h:468
wkbTriangleM
@ wkbTriangleM
ISO SQL/MM Part 3.
Definition: ogr_core.h:482
OGREnvelope3D::Contains
int Contains(OGREnvelope3D const &other) const
Return whether the current object contains the other rectangle.
Definition: ogr_core.h:326
OGRSTLabelAdjHor
@ OGRSTLabelAdjHor
OBSOLETE; do not use.
Definition: ogr_core.h:1207
wkbCircularString
@ wkbCircularString
one or more circular arc segments connected end to end, ISO SQL/MM Part 3.
Definition: ogr_core.h:423
OGRSTLabelTextString
@ OGRSTLabelTextString
Text string.
Definition: ogr_core.h:1192
OFDMP_DEFAULT_VALUE
@ OFDMP_DEFAULT_VALUE
Default value.
Definition: ogr_core.h:1275
OFDMP_GEOMETRY_WEIGHTED
@ OFDMP_GEOMETRY_WEIGHTED
New values are computed as the weighted average of the source values.
Definition: ogr_core.h:1279
OGRSTPenParam
enum ogr_style_tool_param_pen_id OGRSTPenParam
List of parameters for use with OGRStylePen.
wkbMultiPolygonZM
@ wkbMultiPolygonZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:489
ogr_style_tool_param_symbol_id
ogr_style_tool_param_symbol_id
List of parameters for use with OGRStyleSymbol.
Definition: ogr_core.h:1166
wkbCurveM
@ wkbCurveM
ISO SQL/MM Part 3.
Definition: ogr_core.h:478
MIN
#define MIN(a, b)
Macro to compute the minimum of 2 values.
Definition: cpl_port.h:383
OGRSTLabelPlacement
@ OGRSTLabelPlacement
Placement.
Definition: ogr_core.h:1196
OGREnvelope3D::MinZ
double MinZ
Minimum Z value.
Definition: ogr_core.h:232
OGRSTCSymbol
@ OGRSTCSymbol
Symbol.
Definition: ogr_core.h:1108
OGRSTCLabel
@ OGRSTCLabel
Label.
Definition: ogr_core.h:1109
wkbPolyhedralSurfaceZM
@ wkbPolyhedralSurfaceZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:498
OGREnvelope::operator==
bool operator==(const OGREnvelope &other) const
Return whether the current rectangle is equal to the other rectangle.
Definition: ogr_core.h:170
wkbPoint25D
@ wkbPoint25D
2.5D extension as per 99-402
Definition: ogr_core.h:504
wkbSurfaceZM
@ wkbSurfaceZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:497
wkbCircularStringZM
@ wkbCircularStringZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:491
OGRSTUnitId
enum ogr_style_tool_units_id OGRSTUnitId
List of units supported by OGRStyleTools.
wkbCircularStringZ
@ wkbCircularStringZ
wkbCircularString with Z component.
Definition: ogr_core.h:448
OGRBoolean
int OGRBoolean
Type for a OGR boolean.
Definition: ogr_core.h:395
wkbCurve
@ wkbCurve
Curve (abstract type).
Definition: ogr_core.h:434
OGRSTCNone
@ OGRSTCNone
None.
Definition: ogr_core.h:1105
wkbMultiPointZM
@ wkbMultiPointZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:487
OGRSTUPixel
@ OGRSTUPixel
Pixel.
Definition: ogr_core.h:1119
OGRSTPenPriority
@ OGRSTPenPriority
Priority.
Definition: ogr_core.h:1138
OGRMergeGeometryTypesEx
OGRwkbGeometryType OGRMergeGeometryTypesEx(OGRwkbGeometryType eMain, OGRwkbGeometryType eExtra, int bAllowPromotingToCurves)
Find common geometry type.
Definition: ogrgeometry.cpp:2862
OGREnvelope3D::Intersects
int Intersects(OGREnvelope3D const &other) const
Return whether the current object intersects with the other rectangle.
Definition: ogr_core.h:318
wkbTINZM
@ wkbTINZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:499
OGR_GT_IsSurface
int OGR_GT_IsSurface(OGRwkbGeometryType)
Return if a geometry type is an instance of Surface.
Definition: ogrgeometry.cpp:7255
OGREnvelope::MaxX
double MaxX
Maximum X value.
Definition: ogr_core.h:83
OGRSTSymbolDx
@ OGRSTSymbolDx
Dx.
Definition: ogr_core.h:1172
wkbLineStringZM
@ wkbLineStringZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:485
CPL_C_START
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:306
OGR_GT_SetM
OGRwkbGeometryType OGR_GT_SetM(OGRwkbGeometryType eType)
Returns the measured geometry type corresponding to the passed geometry type.
Definition: ogrgeometry.cpp:6967
OGRERR_UNSUPPORTED_SRS
#define OGRERR_UNSUPPORTED_SRS
Unsupported SRS.
Definition: ogr_core.h:387
ogr_style_tool_class_id
ogr_style_tool_class_id
OGRStyleTool derived class types (returned by GetType()).
Definition: ogr_core.h:1103
OGRParseDate
int OGRParseDate(const char *pszInput, OGRField *psOutput, int nOptions)
Parse date string.
Definition: ogrutils.cpp:1072
OGRSTLabelOColor
@ OGRSTLabelOColor
Outline color.
Definition: ogr_core.h:1210
OGRwkbByteOrder
OGRwkbByteOrder
Enumeration to describe byte order.
Definition: ogr_core.h:610
OGRField
OGRFeature field attribute value union.
Definition: ogr_core.h:900
OGRSTSymbolAngle
@ OGRSTSymbolAngle
Angle.
Definition: ogr_core.h:1169
OGRSTSymbolFontName
@ OGRSTSymbolFontName
Font name.
Definition: ogr_core.h:1178
OGRERR_UNSUPPORTED_OPERATION
#define OGRERR_UNSUPPORTED_OPERATION
Unsupported operation.
Definition: ogr_core.h:384
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:1262
OGRCodedValue
Associates a code and a value.
Definition: ogr_core.h:1224
wkbCurvePolygon
@ wkbCurvePolygon
planar surface, defined by 1 exterior boundary and zero or more interior boundaries,...
Definition: ogr_core.h:427
OGREnvelope3D::IsInit
int IsInit() const
Return whether the object has been initialized, that is, is non empty.
Definition: ogr_core.h:243
wkbLineStringM
@ wkbLineStringM
ISO SQL/MM Part 3.
Definition: ogr_core.h:467
OGRSTPenColor
@ OGRSTPenColor
Color.
Definition: ogr_core.h:1131
OGRSTLabelDy
@ OGRSTLabelDy
Dy.
Definition: ogr_core.h:1199
OGRERR_FAILURE
#define OGRERR_FAILURE
Failure.
Definition: ogr_core.h:386
OGRSTUMM
@ OGRSTUMM
Millimeter.
Definition: ogr_core.h:1121
OGR_GT_GetCurve
OGRwkbGeometryType OGR_GT_GetCurve(OGRwkbGeometryType eType)
Returns the curve geometry type that can contain the passed geometry type.
Definition: ogrgeometry.cpp:7142
OFTString
@ OFTString
String of ASCII chars.
Definition: ogr_core.h:789
CPLIsNan
#define CPLIsNan(x)
Return whether a floating-pointer number is NaN.
Definition: cpl_port.h:668
wkbMultiPolygon25D
@ wkbMultiPolygon25D
2.5D extension as per 99-402
Definition: ogr_core.h:509
wkbCircularStringM
@ wkbCircularStringM
ISO SQL/MM Part 3.
Definition: ogr_core.h:473
OFTIntegerList
@ OFTIntegerList
List of 32bit integers.
Definition: ogr_core.h:786
wkbMultiSurface
@ wkbMultiSurface
GeometryCollection of Surfaces, ISO SQL/MM Part 3.
Definition: ogr_core.h:432
OGRSTCBrush
@ OGRSTCBrush
Brush.
Definition: ogr_core.h:1107
OGRERR_NOT_ENOUGH_MEMORY
#define OGRERR_NOT_ENOUGH_MEMORY
Not enough memory.
Definition: ogr_core.h:382
OGRSTLabelFontName
@ OGRSTLabelFontName
Font name.
Definition: ogr_core.h:1190
OGRSTLabelPriority
@ OGRSTLabelPriority
Priority.
Definition: ogr_core.h:1204
wkbPolyhedralSurface
@ wkbPolyhedralSurface
a contiguous collection of polygons, which share common boundary segments, ISO SQL/MM Part 3.
Definition: ogr_core.h:438
wkbCurvePolygonM
@ wkbCurvePolygonM
ISO SQL/MM Part 3.
Definition: ogr_core.h:475
OFSTUUID
@ OFSTUUID
UUID string representation.
Definition: ogr_core.h:828
CPL_C_END
#define CPL_C_END
Macro to end a block of C symbols.
Definition: cpl_port.h:310
wkbMultiPointM
@ wkbMultiPointM
ISO SQL/MM Part 3.
Definition: ogr_core.h:469
OGRSTLabelUnderline
@ OGRSTLabelUnderline
Underline.
Definition: ogr_core.h:1203
wkbGeometryCollectionM
@ wkbGeometryCollectionM
ISO SQL/MM Part 3.
Definition: ogr_core.h:472
OGRSTCVector
@ OGRSTCVector
Vector.
Definition: ogr_core.h:1110
OGRSTLabelAnchor
@ OGRSTLabelAnchor
Anchor.
Definition: ogr_core.h:1197
OFTInteger
@ OFTInteger
Simple 32bit integer.
Definition: ogr_core.h:785
wkbVariantIso
@ wkbVariantIso
SFSQL 1.2 and ISO SQL/MM Part 3 extended dimension (Z&M) WKB types.
Definition: ogr_core.h:543
OGRSTLabelAngle
@ OGRSTLabelAngle
Angle.
Definition: ogr_core.h:1193
OGR_GT_IsCurve
int OGR_GT_IsCurve(OGRwkbGeometryType)
Return if a geometry type is an instance of Curve.
Definition: ogrgeometry.cpp:7234
OFDMP_SUM
@ OFDMP_SUM
Sum.
Definition: ogr_core.h:1277
OGRSTSymbolDy
@ OGRSTSymbolDy
Dy.
Definition: ogr_core.h:1173
OGRSTBrushDx
@ OGRSTBrushDx
Dx.
Definition: ogr_core.h:1154
wkbNone
@ wkbNone
non-standard, for pure attribute records
Definition: ogr_core.h:445
OGREnvelope::MaxY
double MaxY
Maximum Y value.
Definition: ogr_core.h:89
OFTInteger64List
@ OFTInteger64List
List of 64bit integers.
Definition: ogr_core.h:798
wkbPolygon
@ wkbPolygon
planar 2-dimensional geometric object defined by 1 exterior boundary and 0 or more interior boundarie...
Definition: ogr_core.h:413
OFDT_RANGE
@ OFDT_RANGE
Range (min/max)
Definition: ogr_core.h:1242
wkbMultiCurveM
@ wkbMultiCurveM
ISO SQL/MM Part 3.
Definition: ogr_core.h:476
OGREnvelope::Intersect
void Intersect(OGREnvelope const &sOther)
Update the current object by computing its intersection with the other rectangle.
Definition: ogr_core.h:128
OGRCodedValue::pszValue
char * pszValue
Value.
Definition: ogr_core.h:1230
wkbMultiLineString25D
@ wkbMultiLineString25D
2.5D extension as per 99-402
Definition: ogr_core.h:508
OFDT_GLOB
@ OFDT_GLOB
Glob (used by GeoPackage)
Definition: ogr_core.h:1244
OGRJustification
OGRJustification
Display justification for field values.
Definition: ogr_core.h:836
wkbCompoundCurveM
@ wkbCompoundCurveM
ISO SQL/MM Part 3.
Definition: ogr_core.h:474
wkbPolyhedralSurfaceM
@ wkbPolyhedralSurfaceM
ISO SQL/MM Part 3.
Definition: ogr_core.h:480
OGRSTSymbolParam
enum ogr_style_tool_param_symbol_id OGRSTSymbolParam
List of parameters for use with OGRStyleSymbol.
OGREnvelope3D::OGREnvelope3D
OGREnvelope3D(const OGREnvelope3D &oOther)
Copy constructor.
Definition: ogr_core.h:223
OFSTNone
@ OFSTNone
No subtype.
Definition: ogr_core.h:813
OFTStringList
@ OFTStringList
Array of strings.
Definition: ogr_core.h:790
OGRSTBrushFColor
@ OGRSTBrushFColor
Foreground color.
Definition: ogr_core.h:1149
wkbSurface
@ wkbSurface
Surface (abstract type).
Definition: ogr_core.h:436
OGREnvelope::Merge
void Merge(double dfX, double dfY)
Update the current object by computing its union with the provided point.
Definition: ogr_core.h:118
OGRSTBrushDy
@ OGRSTBrushDy
Dy.
Definition: ogr_core.h:1155
wkbLinearRing
@ wkbLinearRing
non-standard, just for createGeometry()
Definition: ogr_core.h:446
OGRERR_NOT_ENOUGH_DATA
#define OGRERR_NOT_ENOUGH_DATA
Not enough data to deserialize.
Definition: ogr_core.h:381
OGRSTSymbolId
@ OGRSTSymbolId
Id.
Definition: ogr_core.h:1168
OGRERR_CORRUPT_DATA
#define OGRERR_CORRUPT_DATA
Corrupt data.
Definition: ogr_core.h:385
OGRSTBrushBColor
@ OGRSTBrushBColor
Background color.
Definition: ogr_core.h:1150
OFTTime
@ OFTTime
Time.
Definition: ogr_core.h:795
OGRSTUGround
@ OGRSTUGround
Ground unit.
Definition: ogr_core.h:1118
OFDT_CODED
@ OFDT_CODED
Coded.
Definition: ogr_core.h:1240
OGRSTSymbolSize
@ OGRSTSymbolSize
Size.
Definition: ogr_core.h:1171
OGREnvelope::MinY
double MinY
Minimum Y value.
Definition: ogr_core.h:86
OGRSTLabelHColor
@ OGRSTLabelHColor
Highlight color.
Definition: ogr_core.h:1209
OGRFieldDomainSplitPolicy
OGRFieldDomainSplitPolicy
Split policy for field domains.
Definition: ogr_core.h:1254
OGRErr
int OGRErr
Type for a OGR error.
Definition: ogr_core.h:378
wkbCompoundCurveZ
@ wkbCompoundCurveZ
wkbCompoundCurve with Z component.
Definition: ogr_core.h:450
OGRSTSymbolOffset
@ OGRSTSymbolOffset
Offset.
Definition: ogr_core.h:1176
ogr_style_tool_param_pen_id
ogr_style_tool_param_pen_id
List of parameters for use with OGRStylePen.
Definition: ogr_core.h:1129
GIntBig
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition: cpl_port.h:226
OGRSTBrushId
@ OGRSTBrushId
Id.
Definition: ogr_core.h:1151
ogr_style_tool_param_brush_id
ogr_style_tool_param_brush_id
List of parameters for use with OGRStyleBrush.
Definition: ogr_core.h:1147
wkbCurveZ
@ wkbCurveZ
wkbCurve with Z component.
Definition: ogr_core.h:458
OGR_GT_HasZ
int OGR_GT_HasZ(OGRwkbGeometryType eType)
Return if the geometry type is a 3D geometry type.
Definition: ogrgeometry.cpp:6896
OGRwkbGeometryType
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:406
OGRSTPenCap
@ OGRSTPenCap
Cap.
Definition: ogr_core.h:1136
OGR_GT_HasM
int OGR_GT_HasM(OGRwkbGeometryType eType)
Return if the geometry type is a measured type.
Definition: ogrgeometry.cpp:6920
wkbTINZ
@ wkbTINZ
ISO SQL/MM Part 3.
Definition: ogr_core.h:463
OGRSTCPen
@ OGRSTCPen
Pen.
Definition: ogr_core.h:1106
OGRGeometryTypeToName
const char * OGRGeometryTypeToName(OGRwkbGeometryType eType)
Fetch a human readable name corresponding to an OGRwkbGeometryType value.
Definition: ogrgeometry.cpp:2604
OFTDate
@ OFTDate
Date.
Definition: ogr_core.h:794
cpl_port.h
OGRSTPenPerOffset
@ OGRSTPenPerOffset
Perpendicular offset.
Definition: ogr_core.h:1135
OGRFieldSubType
OGRFieldSubType
List of field subtypes.
Definition: ogr_core.h:811
OGREnvelope3D::Intersect
void Intersect(OGREnvelope3D const &sOther)
Update the current object by computing its intersection with the other rectangle.
Definition: ogr_core.h:287
wkbTriangleZM
@ wkbTriangleZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:500
OGREnvelope::Contains
int Contains(OGREnvelope const &other) const
Return whether the current object contains the other rectangle.
Definition: ogr_core.h:162
OGREnvelope::OGREnvelope
OGREnvelope()
Default constructor.
Definition: ogr_core.h:61
wkbXDR
@ wkbXDR
MSB/Sun/Motorola: Most Significant Byte First
Definition: ogr_core.h:612
OGREnvelope3D
Simple container for a bounding region in 3D.
Definition: ogr_core.h:212
OGRSTBrushPriority
@ OGRSTBrushPriority
Priority.
Definition: ogr_core.h:1156
OFTRealList
@ OFTRealList
List of doubles.
Definition: ogr_core.h:788
OFDSP_DUPLICATE
@ OFDSP_DUPLICATE
Duplicate.
Definition: ogr_core.h:1259
OGREnvelope::IsInit
int IsInit() const
Return whether the object has been initialized, that is, is non empty.
Definition: ogr_core.h:97
wkbGeometryCollection25D
@ wkbGeometryCollection25D
2.5D extension as per 99-402
Definition: ogr_core.h:510
OFSTJSON
@ OFSTJSON
JSON content.
Definition: ogr_core.h:824
ogr_style_tool_units_id
ogr_style_tool_units_id
List of units supported by OGRStyleTools.
Definition: ogr_core.h:1116
wkbGeometryCollection
@ wkbGeometryCollection
geometric object that is a collection of 1 or more geometric objects, standard WKB
Definition: ogr_core.h:420
OGRFieldType
OGRFieldType
List of feature field types.
Definition: ogr_core.h:783
wkbMultiCurveZ
@ wkbMultiCurveZ
wkbMultiCurve with Z component.
Definition: ogr_core.h:454
OGRSTPenJoin
@ OGRSTPenJoin
Join.
Definition: ogr_core.h:1137
wkbPolyhedralSurfaceZ
@ wkbPolyhedralSurfaceZ
ISO SQL/MM Part 3.
Definition: ogr_core.h:462
wkbMultiCurve
@ wkbMultiCurve
GeometryCollection of Curves, ISO SQL/MM Part 3.
Definition: ogr_core.h:430
OGRSTSymbolColor
@ OGRSTSymbolColor
Color.
Definition: ogr_core.h:1170
wkbMultiPolygonM
@ wkbMultiPolygonM
ISO SQL/MM Part 3.
Definition: ogr_core.h:471
wkbLineString25D
@ wkbLineString25D
2.5D extension as per 99-402
Definition: ogr_core.h:505
OFTInteger64
@ OFTInteger64
Single 64bit integer.
Definition: ogr_core.h:797
wkbGeometryCollectionZM
@ wkbGeometryCollectionZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:490
OGREnvelope
Simple container for a bounding region (rectangle)
Definition: ogr_core.h:57
OGRSTUPoints
@ OGRSTUPoints
Points.
Definition: ogr_core.h:1120
OGREnvelope3D::MaxZ
double MaxZ
Maximum Z value.
Definition: ogr_core.h:235
OGRERR_NONE
#define OGRERR_NONE
Success.
Definition: ogr_core.h:380
OGREnvelope3D::Merge
void Merge(OGREnvelope3D const &sOther)
Update the current object by computing its union with the other rectangle.
Definition: ogr_core.h:253
wkbMultiSurfaceZ
@ wkbMultiSurfaceZ
wkbMultiSurface with Z component.
Definition: ogr_core.h:456
OGRSTLabelAdjVert
@ OGRSTLabelAdjVert
OBSOLETE; do not use.
Definition: ogr_core.h:1208
OGREnvelope::operator=
OGREnvelope & operator=(const OGREnvelope &)=default
Assignment operator.
OGRSTSymbolOColor
@ OGRSTSymbolOColor
Outline color.
Definition: ogr_core.h:1179
OGRSTLabelDx
@ OGRSTLabelDx
Dx.
Definition: ogr_core.h:1198
wkbTriangle
@ wkbTriangle
a Triangle.
Definition: ogr_core.h:443
wkbLineString
@ wkbLineString
1-dimensional geometric object with linear interpolation between Points, standard WKB
Definition: ogr_core.h:411
OGRSTPenId
@ OGRSTPenId
Id.
Definition: ogr_core.h:1134
wkbMultiLineString
@ wkbMultiLineString
GeometryCollection of LineStrings, standard WKB.
Definition: ogr_core.h:417
OGRCodedValue::pszCode
char * pszCode
Code.
Definition: ogr_core.h:1227
OGREnvelope3D::OGREnvelope3D
OGREnvelope3D()
Default constructor.
Definition: ogr_core.h:216
wkbCurveZM
@ wkbCurveZM
ISO SQL/MM Part 3.
Definition: ogr_core.h:496
OGR_GET_MS
int OGR_GET_MS(float fSec)
Return the number of milliseconds from a datetime with decimal seconds.
Definition: ogr_core.h:963
OFTReal
@ OFTReal
Double Precision floating point.
Definition: ogr_core.h:787
OGRSTSymbolPerp
@ OGRSTSymbolPerp
Perpendicular.
Definition: ogr_core.h:1175
OGRSTBrushAngle
@ OGRSTBrushAngle
Angle.
Definition: ogr_core.h:1152
OGRERR_NON_EXISTING_FEATURE
#define OGRERR_NON_EXISTING_FEATURE
Non existing feature.
Definition: ogr_core.h:389
OGRSTPenPattern
@ OGRSTPenPattern
Pattern.
Definition: ogr_core.h:1133
wkbMultiLineStringM
@ wkbMultiLineStringM
ISO SQL/MM Part 3.
Definition: ogr_core.h:470
OGRERR_INVALID_HANDLE
#define OGRERR_INVALID_HANDLE
Invalid handle.
Definition: ogr_core.h:388
OGR_GT_SetZ
OGRwkbGeometryType OGR_GT_SetZ(OGRwkbGeometryType eType)
Returns the 3D geometry type corresponding to the passed geometry type.
Definition: ogrgeometry.cpp:6943
OGREnvelope::Merge
void Merge(OGREnvelope const &sOther)
Update the current object by computing its union with the other rectangle.
Definition: ogr_core.h:108
wkbUnknown
@ wkbUnknown
unknown type, non-standard
Definition: ogr_core.h:408
wkbTIN
@ wkbTIN
a PolyhedralSurface consisting only of Triangle patches ISO SQL/MM Part 3.
Definition: ogr_core.h:441
OGRSTLabelSize
@ OGRSTLabelSize
Size.
Definition: ogr_core.h:1191
OGREnvelope::Intersects
int Intersects(OGREnvelope const &other) const
Return whether the current object intersects with the other rectangle.
Definition: ogr_core.h:155
OGRSTLabelBold
@ OGRSTLabelBold
Bold.
Definition: ogr_core.h:1201
OGRwkbVariant
OGRwkbVariant
Output variants of WKB we support.
Definition: ogr_core.h:540
wkbPointM
@ wkbPointM
ISO SQL/MM Part 3.
Definition: ogr_core.h:466
wkbMultiPoint
@ wkbMultiPoint
GeometryCollection of Points, standard WKB.
Definition: ogr_core.h:416
wkbSurfaceZ
@ wkbSurfaceZ
wkbSurface with Z component.
Definition: ogr_core.h:460