GDAL
ogrsf_frmts.h
Go to the documentation of this file.
1 /******************************************************************************
2  * $Id$
3  *
4  * Project: OpenGIS Simple Features Reference Implementation
5  * Purpose: Classes related to format registration, and file opening.
6  * Author: Frank Warmerdam, warmerda@home.com
7  *
8  ******************************************************************************
9  * Copyright (c) 1999, Les Technologies SoftMap Inc.
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 OGRSF_FRMTS_H_INCLUDED
32 #define OGRSF_FRMTS_H_INCLUDED
33 
34 #include "cpl_progress.h"
35 #include "ogr_feature.h"
36 #include "ogr_featurestyle.h"
37 #include "gdal_priv.h"
38 
39 #include <memory>
40 #include <deque>
41 
48 #if !defined(GDAL_COMPILATION) && !defined(SUPPRESS_DEPRECATION_WARNINGS)
50 #define OGR_DEPRECATED(x) CPL_WARN_DEPRECATED(x)
51 #else
52 #define OGR_DEPRECATED(x)
53 #endif
54 
56 class OGRLayerAttrIndex;
57 class OGRSFDriver;
58 
59 struct ArrowArrayStream;
60 
61 /************************************************************************/
62 /* OGRLayer */
63 /************************************************************************/
64 
70 /* Note: any virtual method added to this class must also be added in the */
71 /* OGRLayerDecorator and OGRMutexedLayer classes. */
72 
73 class CPL_DLL OGRLayer : public GDALMajorObject
74 {
75  private:
76  struct Private;
77  std::unique_ptr<Private> m_poPrivate;
78 
79  void ConvertGeomsIfNecessary(OGRFeature *poFeature);
80 
81  class CPL_DLL FeatureIterator
82  {
83  struct Private;
84  std::unique_ptr<Private> m_poPrivate;
85 
86  public:
87  FeatureIterator(OGRLayer *poLayer, bool bStart);
88  FeatureIterator(
89  FeatureIterator &&oOther) noexcept; // declared but not defined.
90  // Needed for gcc 5.4 at least
91  ~FeatureIterator();
92  OGRFeatureUniquePtr &operator*();
93  FeatureIterator &operator++();
94  bool operator!=(const FeatureIterator &it) const;
95  };
96 
97  friend inline FeatureIterator begin(OGRLayer *poLayer);
98  friend inline FeatureIterator end(OGRLayer *poLayer);
99 
101 
102  protected:
104  int m_bFilterIsEnvelope;
105  OGRGeometry *m_poFilterGeom;
106  OGRPreparedGeometry *m_pPreparedFilterGeom; /* m_poFilterGeom compiled as a
107  prepared geometry */
108  OGREnvelope m_sFilterEnvelope;
109  int m_iGeomFieldFilter; // specify the index on which the spatial
110  // filter is active.
111 
112  int FilterGeometry(OGRGeometry *);
113  // int FilterGeometry( OGRGeometry *, OGREnvelope*
114  // psGeometryEnvelope);
115  int InstallFilter(OGRGeometry *);
116 
117  OGRErr GetExtentInternal(int iGeomField, OGREnvelope *psExtent, int bForce);
119 
120  virtual OGRErr ISetFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
121  virtual OGRErr ICreateFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
122  virtual OGRErr IUpsertFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
123  virtual OGRErr
124  IUpdateFeature(OGRFeature *poFeature, int nUpdatedFieldsCount,
125  const int *panUpdatedFieldsIdx, int nUpdatedGeomFieldsCount,
126  const int *panUpdatedGeomFieldsIdx,
127  bool bUpdateStyleString) CPL_WARN_UNUSED_RESULT;
128 
130  CPLStringList m_aosArrowArrayStreamOptions{};
131  struct ArrowArrayStreamPrivateData
132  {
133  bool m_bArrowArrayStreamInProgress = false;
134  bool m_bEOF = false;
135  OGRLayer *m_poLayer = nullptr;
136  std::vector<GIntBig> m_anQueriedFIDs{};
137  size_t m_iQueriedFIDS = 0;
138  std::deque<std::unique_ptr<OGRFeature>> m_oFeatureQueue{};
139  };
140  std::shared_ptr<ArrowArrayStreamPrivateData>
141  m_poSharedArrowArrayStreamPrivateData{};
142  struct ArrowArrayStreamPrivateDataSharedDataWrapper
143  {
144  std::shared_ptr<ArrowArrayStreamPrivateData> poShared{};
145  };
147 
148  friend class OGRArrowArrayHelper;
149  static void ReleaseArray(struct ArrowArray *array);
150  static void ReleaseSchema(struct ArrowSchema *schema);
151  static void ReleaseStream(struct ArrowArrayStream *stream);
152  virtual int GetArrowSchema(struct ArrowArrayStream *,
153  struct ArrowSchema *out_schema);
154  virtual int GetNextArrowArray(struct ArrowArrayStream *,
155  struct ArrowArray *out_array);
156  static int StaticGetArrowSchema(struct ArrowArrayStream *,
157  struct ArrowSchema *out_schema);
158  static int StaticGetNextArrowArray(struct ArrowArrayStream *,
159  struct ArrowArray *out_array);
160  static const char *GetLastErrorArrowArrayStream(struct ArrowArrayStream *);
161 
162  static struct ArrowSchema *
163  CreateSchemaForWKBGeometryColumn(const OGRGeomFieldDefn *poFieldDefn,
164  const char *pszArrowFormat,
165  const char *pszExtensionName);
166 
167  virtual bool
168  CanPostFilterArrowArray(const struct ArrowSchema *schema) const;
169  void PostFilterArrowArray(const struct ArrowSchema *schema,
170  struct ArrowArray *array,
171  CSLConstList papszOptions) const;
172 
174  bool CreateFieldFromArrowSchemaInternal(const struct ArrowSchema *schema,
175  const std::string &osFieldPrefix,
176  CSLConstList papszOptions);
178 
179  public:
180  OGRLayer();
181  virtual ~OGRLayer();
182 
193  FeatureIterator begin();
194 
196  FeatureIterator end();
197 
198  virtual OGRGeometry *GetSpatialFilter();
199  virtual void SetSpatialFilter(OGRGeometry *);
200  virtual void SetSpatialFilterRect(double dfMinX, double dfMinY,
201  double dfMaxX, double dfMaxY);
202 
203  virtual void SetSpatialFilter(int iGeomField, OGRGeometry *);
204  virtual void SetSpatialFilterRect(int iGeomField, double dfMinX,
205  double dfMinY, double dfMaxX,
206  double dfMaxY);
207 
208  virtual OGRErr SetAttributeFilter(const char *);
209 
210  virtual void ResetReading() = 0;
211  virtual OGRFeature *GetNextFeature() CPL_WARN_UNUSED_RESULT = 0;
212  virtual OGRErr SetNextByIndex(GIntBig nIndex);
213  virtual OGRFeature *GetFeature(GIntBig nFID) CPL_WARN_UNUSED_RESULT;
214 
215  virtual GDALDataset *GetDataset();
216  virtual bool GetArrowStream(struct ArrowArrayStream *out_stream,
217  CSLConstList papszOptions = nullptr);
218  virtual bool IsArrowSchemaSupported(const struct ArrowSchema *schema,
219  CSLConstList papszOptions,
220  std::string &osErrorMsg) const;
221  virtual bool
222  CreateFieldFromArrowSchema(const struct ArrowSchema *schema,
223  CSLConstList papszOptions = nullptr);
224  virtual bool WriteArrowBatch(const struct ArrowSchema *schema,
225  struct ArrowArray *array,
226  CSLConstList papszOptions = nullptr);
227 
228  OGRErr SetFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
229  OGRErr CreateFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
230  OGRErr UpsertFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
231  OGRErr UpdateFeature(OGRFeature *poFeature, int nUpdatedFieldsCount,
232  const int *panUpdatedFieldsIdx,
233  int nUpdatedGeomFieldsCount,
234  const int *panUpdatedGeomFieldsIdx,
235  bool bUpdateStyleString) CPL_WARN_UNUSED_RESULT;
236 
237  virtual OGRErr DeleteFeature(GIntBig nFID) CPL_WARN_UNUSED_RESULT;
238 
239  virtual const char *GetName();
240  virtual OGRwkbGeometryType GetGeomType();
241  virtual OGRFeatureDefn *GetLayerDefn() = 0;
242  virtual int FindFieldIndex(const char *pszFieldName, int bExactMatch);
243 
244  virtual OGRSpatialReference *GetSpatialRef();
245 
247  typedef std::vector<
248  std::unique_ptr<OGRSpatialReference, OGRSpatialReferenceReleaser>>
250  virtual const GetSupportedSRSListRetType &
251  GetSupportedSRSList(int iGeomField);
252  virtual OGRErr SetActiveSRS(int iGeomField,
253  const OGRSpatialReference *poSRS);
254 
255  virtual GIntBig GetFeatureCount(int bForce = TRUE);
256  virtual OGRErr GetExtent(OGREnvelope *psExtent,
257  int bForce = TRUE) CPL_WARN_UNUSED_RESULT;
258  virtual OGRErr GetExtent(int iGeomField, OGREnvelope *psExtent,
259  int bForce = TRUE) CPL_WARN_UNUSED_RESULT;
260 
261  virtual int TestCapability(const char *) = 0;
262 
263  virtual OGRErr Rename(const char *pszNewName) CPL_WARN_UNUSED_RESULT;
264 
265  virtual OGRErr CreateField(OGRFieldDefn *poField, int bApproxOK = TRUE);
266  virtual OGRErr DeleteField(int iField);
267  virtual OGRErr ReorderFields(int *panMap);
268  virtual OGRErr AlterFieldDefn(int iField, OGRFieldDefn *poNewFieldDefn,
269  int nFlagsIn);
270  virtual OGRErr
271  AlterGeomFieldDefn(int iGeomField,
272  const OGRGeomFieldDefn *poNewGeomFieldDefn,
273  int nFlagsIn);
274 
275  virtual OGRErr CreateGeomField(OGRGeomFieldDefn *poField,
276  int bApproxOK = TRUE);
277 
278  virtual OGRErr SyncToDisk();
279 
280  virtual OGRStyleTable *GetStyleTable();
281  virtual void SetStyleTableDirectly(OGRStyleTable *poStyleTable);
282 
283  virtual void SetStyleTable(OGRStyleTable *poStyleTable);
284 
285  virtual OGRErr StartTransaction() CPL_WARN_UNUSED_RESULT;
286  virtual OGRErr CommitTransaction() CPL_WARN_UNUSED_RESULT;
287  virtual OGRErr RollbackTransaction();
288 
289  virtual const char *GetFIDColumn();
290  virtual const char *GetGeometryColumn();
291 
292  virtual OGRErr SetIgnoredFields(const char **papszFields);
293 
294  virtual OGRGeometryTypeCounter *
295  GetGeometryTypes(int iGeomField, int nFlagsGGT, int &nEntryCountOut,
296  GDALProgressFunc pfnProgress, void *pProgressData);
297 
298  OGRErr Intersection(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
299  char **papszOptions = nullptr,
300  GDALProgressFunc pfnProgress = nullptr,
301  void *pProgressArg = nullptr);
302  OGRErr Union(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
303  char **papszOptions = nullptr,
304  GDALProgressFunc pfnProgress = nullptr,
305  void *pProgressArg = nullptr);
306  OGRErr SymDifference(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
307  char **papszOptions, GDALProgressFunc pfnProgress,
308  void *pProgressArg);
309  OGRErr Identity(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
310  char **papszOptions = nullptr,
311  GDALProgressFunc pfnProgress = nullptr,
312  void *pProgressArg = nullptr);
313  OGRErr Update(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
314  char **papszOptions = nullptr,
315  GDALProgressFunc pfnProgress = nullptr,
316  void *pProgressArg = nullptr);
317  OGRErr Clip(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
318  char **papszOptions = nullptr,
319  GDALProgressFunc pfnProgress = nullptr,
320  void *pProgressArg = nullptr);
321  OGRErr Erase(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
322  char **papszOptions = nullptr,
323  GDALProgressFunc pfnProgress = nullptr,
324  void *pProgressArg = nullptr);
325 
326  int Reference();
327  int Dereference();
328  int GetRefCount() const;
330  GIntBig GetFeaturesRead();
332 
333  /* non virtual : convenience wrapper for ReorderFields() */
334  OGRErr ReorderField(int iOldFieldPos, int iNewFieldPos);
335 
337  int AttributeFilterEvaluationNeedsGeometry();
338 
339  /* consider these private */
340  OGRErr InitializeIndexSupport(const char *);
341  OGRLayerAttrIndex *GetIndex()
342  {
343  return m_poAttrIndex;
344  }
345  int GetGeomFieldFilter() const
346  {
347  return m_iGeomFieldFilter;
348  }
349  const char *GetAttrQueryString() const
350  {
351  return m_pszAttrQueryString;
352  }
354 
358  static inline OGRLayerH ToHandle(OGRLayer *poLayer)
359  {
360  return reinterpret_cast<OGRLayerH>(poLayer);
361  }
362 
366  static inline OGRLayer *FromHandle(OGRLayerH hLayer)
367  {
368  return reinterpret_cast<OGRLayer *>(hLayer);
369  }
370 
372  bool FilterWKBGeometry(const GByte *pabyWKB, size_t nWKBSize,
373  bool bEnvelopeAlreadySet,
374  OGREnvelope &sEnvelope) const;
376 
380  static constexpr const char *DEFAULT_ARROW_FID_NAME = "OGC_FID";
381 
385  static constexpr const char *DEFAULT_ARROW_GEOMETRY_NAME = "wkb_geometry";
386 
387  protected:
389  OGRStyleTable *m_poStyleTable;
390  OGRFeatureQuery *m_poAttrQuery;
391  char *m_pszAttrQueryString;
392  OGRLayerAttrIndex *m_poAttrIndex;
393 
394  int m_nRefCount;
395 
396  GIntBig m_nFeaturesRead;
398 };
399 
411 inline OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
412 {
413  return poLayer->begin();
414 }
415 
419 inline OGRLayer::FeatureIterator end(OGRLayer *poLayer)
420 {
421  return poLayer->end();
422 }
423 
427 using OGRLayerUniquePtr = std::unique_ptr<OGRLayer>;
428 
429 /************************************************************************/
430 /* OGRGetNextFeatureThroughRaw */
431 /************************************************************************/
432 
438 template <class BaseLayer> class OGRGetNextFeatureThroughRaw
439 {
440  protected:
441  ~OGRGetNextFeatureThroughRaw() = default;
442 
443  public:
447  {
448  const auto poThis = static_cast<BaseLayer *>(this);
449  while (true)
450  {
451  OGRFeature *poFeature = poThis->GetNextRawFeature();
452  if (poFeature == nullptr)
453  return nullptr;
454 
455  if ((poThis->m_poFilterGeom == nullptr ||
456  poThis->FilterGeometry(poFeature->GetGeometryRef())) &&
457  (poThis->m_poAttrQuery == nullptr ||
458  poThis->m_poAttrQuery->Evaluate(poFeature)))
459  {
460  return poFeature;
461  }
462  else
463  delete poFeature;
464  }
465  }
466 };
467 
469 #define DEFINE_GET_NEXT_FEATURE_THROUGH_RAW(BaseLayer) \
470  private: \
471  friend class OGRGetNextFeatureThroughRaw<BaseLayer>; \
472  \
473  public: \
474  OGRFeature *GetNextFeature() override \
475  { \
476  return OGRGetNextFeatureThroughRaw<BaseLayer>::GetNextFeature(); \
477  }
478 
479 /************************************************************************/
480 /* OGRDataSource */
481 /************************************************************************/
482 
502 class CPL_DLL OGRDataSource : public GDALDataset
503 {
504  public:
505  OGRDataSource();
507  virtual const char *GetName()
508  OGR_DEPRECATED("Use GDALDataset class instead") = 0;
509 
510  static void DestroyDataSource(OGRDataSource *)
511  OGR_DEPRECATED("Use GDALDataset class instead");
513 };
514 
515 /************************************************************************/
516 /* OGRSFDriver */
517 /************************************************************************/
518 
537 class CPL_DLL OGRSFDriver : public GDALDriver
538 {
539  public:
541  virtual ~OGRSFDriver();
542 
543  virtual const char *GetName()
544  OGR_DEPRECATED("Use GDALDriver class instead") = 0;
545 
546  virtual OGRDataSource *Open(const char *pszName, int bUpdate = FALSE)
547  OGR_DEPRECATED("Use GDALDriver class instead") = 0;
548 
549  virtual int TestCapability(const char *pszCap)
550  OGR_DEPRECATED("Use GDALDriver class instead") = 0;
551 
552  virtual OGRDataSource *CreateDataSource(const char *pszName,
553  char ** = nullptr)
554  OGR_DEPRECATED("Use GDALDriver class instead");
555  virtual OGRErr DeleteDataSource(const char *pszName)
556  OGR_DEPRECATED("Use GDALDriver class instead");
558 };
559 
560 /************************************************************************/
561 /* OGRSFDriverRegistrar */
562 /************************************************************************/
563 
577 class CPL_DLL OGRSFDriverRegistrar
578 {
579 
582 
583  static GDALDataset *OpenWithDriverArg(GDALDriver *poDriver,
584  GDALOpenInfo *poOpenInfo);
585  static GDALDataset *CreateVectorOnly(GDALDriver *poDriver,
586  const char *pszName,
587  char **papszOptions);
588  static CPLErr DeleteDataSource(GDALDriver *poDriver, const char *pszName);
589 
590  public:
592  static OGRSFDriverRegistrar *GetRegistrar()
593  OGR_DEPRECATED("Use GDALDriverManager class instead");
594 
595  // cppcheck-suppress functionStatic
596  void RegisterDriver(OGRSFDriver *poDriver)
597  OGR_DEPRECATED("Use GDALDriverManager class instead");
598 
599  // cppcheck-suppress functionStatic
600  int GetDriverCount(void)
601  OGR_DEPRECATED("Use GDALDriverManager class instead");
602  // cppcheck-suppress functionStatic
603  GDALDriver *GetDriver(int iDriver)
604  OGR_DEPRECATED("Use GDALDriverManager class instead");
605  // cppcheck-suppress functionStatic
606  GDALDriver *GetDriverByName(const char *)
607  OGR_DEPRECATED("Use GDALDriverManager class instead");
608 
609  // cppcheck-suppress functionStatic
610  int GetOpenDSCount() OGR_DEPRECATED("Use GDALDriverManager class instead");
611  // cppcheck-suppress functionStatic
612  OGRDataSource *GetOpenDS(int)
613  OGR_DEPRECATED("Use GDALDriverManager class instead");
615 };
616 
617 /* -------------------------------------------------------------------- */
618 /* Various available registration methods. */
619 /* -------------------------------------------------------------------- */
621 
623 void OGRRegisterAllInternal();
624 
625 void CPL_DLL RegisterOGRFileGDB();
626 void CPL_DLL RegisterOGRShape();
627 void CPL_DLL RegisterOGRNTF();
628 void CPL_DLL RegisterOGRSDTS();
629 void CPL_DLL RegisterOGRTiger();
630 void CPL_DLL RegisterOGRS57();
631 void CPL_DLL RegisterOGRTAB();
632 void CPL_DLL RegisterOGRMIF();
633 void CPL_DLL RegisterOGROGDI();
634 void CPL_DLL RegisterOGRODBC();
635 void CPL_DLL RegisterOGRWAsP();
636 void CPL_DLL RegisterOGRPG();
637 void CPL_DLL RegisterOGRMSSQLSpatial();
638 void CPL_DLL RegisterOGRMySQL();
639 void CPL_DLL RegisterOGROCI();
640 void CPL_DLL RegisterOGRDGN();
641 void CPL_DLL RegisterOGRGML();
642 void CPL_DLL RegisterOGRLIBKML();
643 void CPL_DLL RegisterOGRKML();
644 void CPL_DLL RegisterOGRFlatGeobuf();
645 void CPL_DLL RegisterOGRGeoJSON();
646 void CPL_DLL RegisterOGRGeoJSONSeq();
647 void CPL_DLL RegisterOGRESRIJSON();
648 void CPL_DLL RegisterOGRTopoJSON();
649 void CPL_DLL RegisterOGRAVCBin();
650 void CPL_DLL RegisterOGRAVCE00();
651 void CPL_DLL RegisterOGRMEM();
652 void CPL_DLL RegisterOGRVRT();
653 void CPL_DLL RegisterOGRSQLite();
654 void CPL_DLL RegisterOGRCSV();
655 void CPL_DLL RegisterOGRILI1();
656 void CPL_DLL RegisterOGRILI2();
657 void CPL_DLL RegisterOGRPGeo();
658 void CPL_DLL RegisterOGRDXF();
659 void CPL_DLL RegisterOGRCAD();
660 void CPL_DLL RegisterOGRDWG();
661 void CPL_DLL RegisterOGRDGNV8();
662 void CPL_DLL RegisterOGRIDB();
663 void CPL_DLL RegisterOGRGMT();
664 void CPL_DLL RegisterOGRGPX();
665 void CPL_DLL RegisterOGRGeoconcept();
666 void CPL_DLL RegisterOGRNAS();
667 void CPL_DLL RegisterOGRGeoRSS();
668 void CPL_DLL RegisterOGRVFK();
669 void CPL_DLL RegisterOGRPGDump();
670 void CPL_DLL RegisterOGROSM();
671 void CPL_DLL RegisterOGRGPSBabel();
672 void CPL_DLL RegisterOGRPDS();
673 void CPL_DLL RegisterOGRWFS();
674 void CPL_DLL RegisterOGROAPIF();
675 void CPL_DLL RegisterOGRSOSI();
676 void CPL_DLL RegisterOGREDIGEO();
677 void CPL_DLL RegisterOGRSVG();
678 void CPL_DLL RegisterOGRIdrisi();
679 void CPL_DLL RegisterOGRXLS();
680 void CPL_DLL RegisterOGRODS();
681 void CPL_DLL RegisterOGRXLSX();
682 void CPL_DLL RegisterOGRElastic();
683 void CPL_DLL RegisterOGRGeoPackage();
684 void CPL_DLL RegisterOGRCarto();
685 void CPL_DLL RegisterOGRAmigoCloud();
686 void CPL_DLL RegisterOGRSXF();
687 void CPL_DLL RegisterOGROpenFileGDB();
688 void CPL_DLL RegisterOGRSelafin();
689 void CPL_DLL RegisterOGRJML();
690 void CPL_DLL RegisterOGRPLSCENES();
691 void CPL_DLL RegisterOGRCSW();
692 void CPL_DLL RegisterOGRMongoDBv3();
693 void CPL_DLL RegisterOGRVDV();
694 void CPL_DLL RegisterOGRGMLAS();
695 void CPL_DLL RegisterOGRMVT();
696 void CPL_DLL RegisterOGRNGW();
697 void CPL_DLL RegisterOGRMapML();
698 void CPL_DLL RegisterOGRLVBAG();
699 void CPL_DLL RegisterOGRHANA();
700 void CPL_DLL RegisterOGRParquet();
701 void CPL_DLL RegisterOGRArrow();
702 void CPL_DLL RegisterOGRGTFS();
703 void CPL_DLL RegisterOGRPMTiles();
704 void CPL_DLL RegisterOGRJSONFG();
705 // @endcond
706 
707 CPL_C_END
708 
709 #endif /* ndef OGRSF_FRMTS_H_INCLUDED */
GByte
unsigned char GByte
Unsigned byte type.
Definition: cpl_port.h:196
GDALOpenInfo
Class for dataset open functions.
Definition: gdal_priv.h:277
begin
OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
Return begin of feature iterator.
Definition: ogrsf_frmts.h:411
OGRStyleTable
This class represents a style table.
Definition: ogr_featurestyle.h:84
CPLStringList
String list class designed around our use of C "char**" string lists.
Definition: cpl_string.h:437
OGRLayer::begin
friend FeatureIterator begin(OGRLayer *poLayer)
Return begin of feature iterator.
Definition: ogrsf_frmts.h:411
GDALDriver
Format specific driver.
Definition: gdal_priv.h:1700
OGRSpatialReference
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:166
OGRGeometry
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:334
OGRLayer
This class represents a layer of simple features, with access methods.
Definition: ogrsf_frmts.h:73
OGRFeatureUniquePtr
std::unique_ptr< OGRFeature, OGRFeatureUniquePtrDeleter > OGRFeatureUniquePtr
Unique pointer type for OGRFeature.
Definition: ogr_feature.h:1301
OGRGetNextFeatureThroughRaw
Template class offering a GetNextFeature() implementation relying on GetNextRawFeature()
Definition: ogrsf_frmts.h:438
OGRSFDriverRegistrar
LEGACY class.
Definition: ogrsf_frmts.h:577
OGRGeometryTypeCounter
Result item of OGR_L_GetGeometryTypes.
Definition: ogr_api.h:636
GDALDataset
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:348
CPL_C_START
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:306
OGRLayer::end
friend FeatureIterator end(OGRLayer *poLayer)
Return end of feature iterator.
Definition: ogrsf_frmts.h:419
CSLConstList
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1178
OGRLayer::ToHandle
static OGRLayerH ToHandle(OGRLayer *poLayer)
Convert a OGRLayer* to a OGRLayerH.
Definition: ogrsf_frmts.h:358
CPL_C_END
#define CPL_C_END
Macro to end a block of C symbols.
Definition: cpl_port.h:310
OGRGetNextFeatureThroughRaw::GetNextFeature
OGRFeature * GetNextFeature()
Implement OGRLayer::GetNextFeature(), relying on BaseLayer::GetNextRawFeature()
Definition: ogrsf_frmts.h:446
OGRFieldDefn
Definition of an attribute of an OGRFeatureDefn.
Definition: ogr_feature.h:103
ogr_featurestyle.h
ogr_feature.h
OGRDataSource
LEGACY class.
Definition: ogrsf_frmts.h:502
OGRGeomFieldDefn
Definition of a geometry field of an OGRFeatureDefn.
Definition: ogr_feature.h:286
OGRLayer::FromHandle
static OGRLayer * FromHandle(OGRLayerH hLayer)
Convert a OGRLayerH to a OGRLayer*.
Definition: ogrsf_frmts.h:366
end
OGRLayer::FeatureIterator end(OGRLayer *poLayer)
Return end of feature iterator.
Definition: ogrsf_frmts.h:419
OGRSFDriver
LEGACY class.
Definition: ogrsf_frmts.h:537
gdal_priv.h
OGRErr
int OGRErr
Type for a OGR error.
Definition: ogr_core.h:378
GIntBig
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition: cpl_port.h:226
OGRwkbGeometryType
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:406
CPL_WARN_UNUSED_RESULT
#define CPL_WARN_UNUSED_RESULT
Qualifier to warn when the return value of a function is not used.
Definition: cpl_port.h:976
OGRLayerUniquePtr
std::unique_ptr< OGRLayer > OGRLayerUniquePtr
Unique pointer type for OGRLayer.
Definition: ogrsf_frmts.h:427
OGRFeature
A simple feature, including geometry and attributes.
Definition: ogr_feature.h:680
OGRLayer::GetSupportedSRSListRetType
std::vector< std::unique_ptr< OGRSpatialReference, OGRSpatialReferenceReleaser > > GetSupportedSRSListRetType
Return type of OGRLayer::GetSupportedSRSList()
Definition: ogrsf_frmts.h:249
OGRFeature::GetGeometryRef
OGRGeometry * GetGeometryRef()
Fetch pointer to feature geometry.
Definition: ogrfeature.cpp:712
GDALMajorObject
Object with metadata.
Definition: gdal_priv.h:138
CPLErr
CPLErr
Error category.
Definition: cpl_error.h:52
OGREnvelope
Simple container for a bounding region (rectangle)
Definition: ogr_core.h:57
OGRFeatureDefn
Definition of a feature class or feature layer.
Definition: ogr_feature.h:385
OGRLayerH
void * OGRLayerH
Opaque type for a layer (OGRLayer)
Definition: ogr_api.h:623
CPL_DISALLOW_COPY_ASSIGN
#define CPL_DISALLOW_COPY_ASSIGN(ClassName)
Helper to remove the copy and assignment constructors so that the compiler will not generate the defa...
Definition: cpl_port.h:1042