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
49#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
55
56class OGRLayerAttrIndex;
57class OGRSFDriver;
58
59struct 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
73class 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(const OGRGeometry *);
113 // int FilterGeometry( OGRGeometry *, OGREnvelope*
114 // psGeometryEnvelope);
115 int InstallFilter(OGRGeometry *);
116 bool
117 ValidateGeometryFieldIndexForSetSpatialFilter(int iGeomField,
118 const OGRGeometry *poGeomIn,
119 bool bIsSelectLayer = false);
120
121 OGRErr GetExtentInternal(int iGeomField, OGREnvelope *psExtent, int bForce);
123
124 virtual OGRErr ISetFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
125 virtual OGRErr ICreateFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
126 virtual OGRErr IUpsertFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
127 virtual OGRErr
128 IUpdateFeature(OGRFeature *poFeature, int nUpdatedFieldsCount,
129 const int *panUpdatedFieldsIdx, int nUpdatedGeomFieldsCount,
130 const int *panUpdatedGeomFieldsIdx,
131 bool bUpdateStyleString) CPL_WARN_UNUSED_RESULT;
132
134 CPLStringList m_aosArrowArrayStreamOptions{};
135
136 struct ArrowArrayStreamPrivateData
137 {
138 bool m_bArrowArrayStreamInProgress = false;
139 bool m_bEOF = false;
140 OGRLayer *m_poLayer = nullptr;
141 std::vector<GIntBig> m_anQueriedFIDs{};
142 size_t m_iQueriedFIDS = 0;
143 std::deque<std::unique_ptr<OGRFeature>> m_oFeatureQueue{};
144 };
145
146 std::shared_ptr<ArrowArrayStreamPrivateData>
147 m_poSharedArrowArrayStreamPrivateData{};
148
149 struct ArrowArrayStreamPrivateDataSharedDataWrapper
150 {
151 std::shared_ptr<ArrowArrayStreamPrivateData> poShared{};
152 };
154
155 friend class OGRArrowArrayHelper;
156 static void ReleaseArray(struct ArrowArray *array);
157 static void ReleaseSchema(struct ArrowSchema *schema);
158 static void ReleaseStream(struct ArrowArrayStream *stream);
159 virtual int GetArrowSchema(struct ArrowArrayStream *,
160 struct ArrowSchema *out_schema);
161 virtual int GetNextArrowArray(struct ArrowArrayStream *,
162 struct ArrowArray *out_array);
163 static int StaticGetArrowSchema(struct ArrowArrayStream *,
164 struct ArrowSchema *out_schema);
165 static int StaticGetNextArrowArray(struct ArrowArrayStream *,
166 struct ArrowArray *out_array);
167 static const char *GetLastErrorArrowArrayStream(struct ArrowArrayStream *);
168
169 static struct ArrowSchema *
170 CreateSchemaForWKBGeometryColumn(const OGRGeomFieldDefn *poFieldDefn,
171 const char *pszArrowFormat,
172 const char *pszExtensionName);
173
174 virtual bool
175 CanPostFilterArrowArray(const struct ArrowSchema *schema) const;
176 void PostFilterArrowArray(const struct ArrowSchema *schema,
177 struct ArrowArray *array,
178 CSLConstList papszOptions) const;
179
181 bool CreateFieldFromArrowSchemaInternal(const struct ArrowSchema *schema,
182 const std::string &osFieldPrefix,
183 CSLConstList papszOptions);
185
186 public:
187 OGRLayer();
188 virtual ~OGRLayer();
189
200 FeatureIterator begin();
201
203 FeatureIterator end();
204
205 virtual OGRGeometry *GetSpatialFilter();
206 virtual void SetSpatialFilter(OGRGeometry *);
207 virtual void SetSpatialFilterRect(double dfMinX, double dfMinY,
208 double dfMaxX, double dfMaxY);
209
210 virtual void SetSpatialFilter(int iGeomField, OGRGeometry *);
211 virtual void SetSpatialFilterRect(int iGeomField, double dfMinX,
212 double dfMinY, double dfMaxX,
213 double dfMaxY);
214
215 virtual OGRErr SetAttributeFilter(const char *);
216
217 virtual void ResetReading() = 0;
219 virtual OGRErr SetNextByIndex(GIntBig nIndex);
220 virtual OGRFeature *GetFeature(GIntBig nFID) CPL_WARN_UNUSED_RESULT;
221
222 virtual GDALDataset *GetDataset();
223 virtual bool GetArrowStream(struct ArrowArrayStream *out_stream,
224 CSLConstList papszOptions = nullptr);
225 virtual bool IsArrowSchemaSupported(const struct ArrowSchema *schema,
226 CSLConstList papszOptions,
227 std::string &osErrorMsg) const;
228 virtual bool
229 CreateFieldFromArrowSchema(const struct ArrowSchema *schema,
230 CSLConstList papszOptions = nullptr);
231 virtual bool WriteArrowBatch(const struct ArrowSchema *schema,
232 struct ArrowArray *array,
233 CSLConstList papszOptions = nullptr);
234
235 OGRErr SetFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
236 OGRErr CreateFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
237 OGRErr UpsertFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
238 OGRErr UpdateFeature(OGRFeature *poFeature, int nUpdatedFieldsCount,
239 const int *panUpdatedFieldsIdx,
240 int nUpdatedGeomFieldsCount,
241 const int *panUpdatedGeomFieldsIdx,
242 bool bUpdateStyleString) CPL_WARN_UNUSED_RESULT;
243
244 virtual OGRErr DeleteFeature(GIntBig nFID) CPL_WARN_UNUSED_RESULT;
245
246 virtual const char *GetName();
247 virtual OGRwkbGeometryType GetGeomType();
248 virtual OGRFeatureDefn *GetLayerDefn() = 0;
249 virtual int FindFieldIndex(const char *pszFieldName, int bExactMatch);
250
251 virtual OGRSpatialReference *GetSpatialRef();
252
254 typedef std::vector<
255 std::unique_ptr<OGRSpatialReference, OGRSpatialReferenceReleaser>>
257 virtual const GetSupportedSRSListRetType &
258 GetSupportedSRSList(int iGeomField);
259 virtual OGRErr SetActiveSRS(int iGeomField,
260 const OGRSpatialReference *poSRS);
261
262 virtual GIntBig GetFeatureCount(int bForce = TRUE);
263 virtual OGRErr GetExtent(OGREnvelope *psExtent,
264 int bForce = TRUE) CPL_WARN_UNUSED_RESULT;
265 virtual OGRErr GetExtent(int iGeomField, OGREnvelope *psExtent,
266 int bForce = TRUE) CPL_WARN_UNUSED_RESULT;
267
268 virtual OGRErr GetExtent3D(int iGeomField, OGREnvelope3D *psExtent3D,
269 int bForce = TRUE) CPL_WARN_UNUSED_RESULT;
270
271 virtual int TestCapability(const char *) = 0;
272
273 virtual OGRErr Rename(const char *pszNewName) CPL_WARN_UNUSED_RESULT;
274
275 virtual OGRErr CreateField(const OGRFieldDefn *poField,
276 int bApproxOK = TRUE);
277 virtual OGRErr DeleteField(int iField);
278 virtual OGRErr ReorderFields(int *panMap);
279 virtual OGRErr AlterFieldDefn(int iField, OGRFieldDefn *poNewFieldDefn,
280 int nFlagsIn);
281 virtual OGRErr
282 AlterGeomFieldDefn(int iGeomField,
283 const OGRGeomFieldDefn *poNewGeomFieldDefn,
284 int nFlagsIn);
285
286 virtual OGRErr CreateGeomField(const OGRGeomFieldDefn *poField,
287 int bApproxOK = TRUE);
288
289 virtual OGRErr SyncToDisk();
290
291 virtual OGRStyleTable *GetStyleTable();
292 virtual void SetStyleTableDirectly(OGRStyleTable *poStyleTable);
293
294 virtual void SetStyleTable(OGRStyleTable *poStyleTable);
295
296 virtual OGRErr StartTransaction() CPL_WARN_UNUSED_RESULT;
297 virtual OGRErr CommitTransaction() CPL_WARN_UNUSED_RESULT;
298 virtual OGRErr RollbackTransaction();
299
300 virtual const char *GetFIDColumn();
301 virtual const char *GetGeometryColumn();
302
303 virtual OGRErr SetIgnoredFields(CSLConstList papszFields);
304
305 virtual OGRGeometryTypeCounter *
306 GetGeometryTypes(int iGeomField, int nFlagsGGT, int &nEntryCountOut,
307 GDALProgressFunc pfnProgress, void *pProgressData);
308
309 OGRErr Intersection(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
310 char **papszOptions = nullptr,
311 GDALProgressFunc pfnProgress = nullptr,
312 void *pProgressArg = nullptr);
313 OGRErr Union(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
314 char **papszOptions = nullptr,
315 GDALProgressFunc pfnProgress = nullptr,
316 void *pProgressArg = nullptr);
317 OGRErr SymDifference(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
318 char **papszOptions, GDALProgressFunc pfnProgress,
319 void *pProgressArg);
320 OGRErr Identity(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
321 char **papszOptions = nullptr,
322 GDALProgressFunc pfnProgress = nullptr,
323 void *pProgressArg = nullptr);
324 OGRErr Update(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
325 char **papszOptions = nullptr,
326 GDALProgressFunc pfnProgress = nullptr,
327 void *pProgressArg = nullptr);
328 OGRErr Clip(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
329 char **papszOptions = nullptr,
330 GDALProgressFunc pfnProgress = nullptr,
331 void *pProgressArg = nullptr);
332 OGRErr Erase(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
333 char **papszOptions = nullptr,
334 GDALProgressFunc pfnProgress = nullptr,
335 void *pProgressArg = nullptr);
336
337 int Reference();
338 int Dereference();
339 int GetRefCount() const;
341 GIntBig GetFeaturesRead();
343
344 /* non virtual : convenience wrapper for ReorderFields() */
345 OGRErr ReorderField(int iOldFieldPos, int iNewFieldPos);
346
348 int AttributeFilterEvaluationNeedsGeometry();
349
350 /* consider these private */
351 OGRErr InitializeIndexSupport(const char *);
352
353 OGRLayerAttrIndex *GetIndex()
354 {
355 return m_poAttrIndex;
356 }
357
358 int GetGeomFieldFilter() const
359 {
360 return m_iGeomFieldFilter;
361 }
362
363 const char *GetAttrQueryString() const
364 {
365 return m_pszAttrQueryString;
366 }
367
369
373 static inline OGRLayerH ToHandle(OGRLayer *poLayer)
374 {
375 return reinterpret_cast<OGRLayerH>(poLayer);
376 }
377
381 static inline OGRLayer *FromHandle(OGRLayerH hLayer)
382 {
383 return reinterpret_cast<OGRLayer *>(hLayer);
384 }
385
387 bool FilterWKBGeometry(const GByte *pabyWKB, size_t nWKBSize,
388 bool bEnvelopeAlreadySet,
389 OGREnvelope &sEnvelope) const;
391
395 static constexpr const char *DEFAULT_ARROW_FID_NAME = "OGC_FID";
396
400 static constexpr const char *DEFAULT_ARROW_GEOMETRY_NAME = "wkb_geometry";
401
402 protected:
404 OGRStyleTable *m_poStyleTable;
405 OGRFeatureQuery *m_poAttrQuery;
406 char *m_pszAttrQueryString;
407 OGRLayerAttrIndex *m_poAttrIndex;
408
409 int m_nRefCount;
410
411 GIntBig m_nFeaturesRead;
413};
414
426inline OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
427{
428 return poLayer->begin();
429}
430
434inline OGRLayer::FeatureIterator end(OGRLayer *poLayer)
435{
436 return poLayer->end();
437}
438
442using OGRLayerUniquePtr = std::unique_ptr<OGRLayer>;
443
444/************************************************************************/
445/* OGRGetNextFeatureThroughRaw */
446/************************************************************************/
447
453template <class BaseLayer> class OGRGetNextFeatureThroughRaw
454{
455 protected:
457
458 public:
462 {
463 const auto poThis = static_cast<BaseLayer *>(this);
464 while (true)
465 {
466 OGRFeature *poFeature = poThis->GetNextRawFeature();
467 if (poFeature == nullptr)
468 return nullptr;
469
470 if ((poThis->m_poFilterGeom == nullptr ||
471 poThis->FilterGeometry(poFeature->GetGeometryRef())) &&
472 (poThis->m_poAttrQuery == nullptr ||
473 poThis->m_poAttrQuery->Evaluate(poFeature)))
474 {
475 return poFeature;
476 }
477 else
478 delete poFeature;
479 }
480 }
481};
482
484#define DEFINE_GET_NEXT_FEATURE_THROUGH_RAW(BaseLayer) \
485 private: \
486 friend class OGRGetNextFeatureThroughRaw<BaseLayer>; \
487 \
488 public: \
489 OGRFeature *GetNextFeature() override \
490 { \
491 return OGRGetNextFeatureThroughRaw<BaseLayer>::GetNextFeature(); \
492 }
493
494/************************************************************************/
495/* OGRDataSource */
496/************************************************************************/
497
517class CPL_DLL OGRDataSource : public GDALDataset
518{
519 public:
522 virtual const char *GetName()
523 OGR_DEPRECATED("Use GDALDataset class instead") = 0;
524
525 static void DestroyDataSource(OGRDataSource *)
526 OGR_DEPRECATED("Use GDALDataset class instead");
528};
529
530/************************************************************************/
531/* OGRSFDriver */
532/************************************************************************/
533
552class CPL_DLL OGRSFDriver : public GDALDriver
553{
554 public:
556 virtual ~OGRSFDriver();
557
558 virtual const char *GetName()
559 OGR_DEPRECATED("Use GDALDriver class instead") = 0;
560
561 virtual OGRDataSource *Open(const char *pszName, int bUpdate = FALSE)
562 OGR_DEPRECATED("Use GDALDriver class instead") = 0;
563
564 virtual int TestCapability(const char *pszCap)
565 OGR_DEPRECATED("Use GDALDriver class instead") = 0;
566
567 virtual OGRDataSource *CreateDataSource(const char *pszName,
568 char ** = nullptr)
569 OGR_DEPRECATED("Use GDALDriver class instead");
570 virtual OGRErr DeleteDataSource(const char *pszName)
571 OGR_DEPRECATED("Use GDALDriver class instead");
573};
574
575/************************************************************************/
576/* OGRSFDriverRegistrar */
577/************************************************************************/
578
593{
594
597
598 static GDALDataset *OpenWithDriverArg(GDALDriver *poDriver,
599 GDALOpenInfo *poOpenInfo);
600 static GDALDataset *CreateVectorOnly(GDALDriver *poDriver,
601 const char *pszName,
602 char **papszOptions);
603 static CPLErr DeleteDataSource(GDALDriver *poDriver, const char *pszName);
604
605 public:
607 static OGRSFDriverRegistrar *GetRegistrar()
608 OGR_DEPRECATED("Use GDALDriverManager class instead");
609
610 // cppcheck-suppress functionStatic
611 void RegisterDriver(OGRSFDriver *poDriver)
612 OGR_DEPRECATED("Use GDALDriverManager class instead");
613
614 // cppcheck-suppress functionStatic
615 int GetDriverCount(void)
616 OGR_DEPRECATED("Use GDALDriverManager class instead");
617 // cppcheck-suppress functionStatic
618 GDALDriver *GetDriver(int iDriver)
619 OGR_DEPRECATED("Use GDALDriverManager class instead");
620 // cppcheck-suppress functionStatic
621 GDALDriver *GetDriverByName(const char *)
622 OGR_DEPRECATED("Use GDALDriverManager class instead");
623
624 // cppcheck-suppress functionStatic
625 int GetOpenDSCount() OGR_DEPRECATED("Use GDALDriverManager class instead");
626 // cppcheck-suppress functionStatic
627 OGRDataSource *GetOpenDS(int)
628 OGR_DEPRECATED("Use GDALDriverManager class instead");
630};
631
632/* -------------------------------------------------------------------- */
633/* Various available registration methods. */
634/* -------------------------------------------------------------------- */
636
638void OGRRegisterAllInternal();
639
640void CPL_DLL RegisterOGRFileGDB();
641void DeclareDeferredOGRFileGDBPlugin();
642void CPL_DLL RegisterOGRShape();
643void CPL_DLL RegisterOGRNTF();
644void CPL_DLL RegisterOGRSDTS();
645void CPL_DLL RegisterOGRTiger();
646void CPL_DLL RegisterOGRS57();
647void CPL_DLL RegisterOGRTAB();
648void CPL_DLL RegisterOGRMIF();
649void CPL_DLL RegisterOGROGDI();
650void DeclareDeferredOGROGDIPlugin();
651void CPL_DLL RegisterOGRODBC();
652void DeclareDeferredOGRODBCPlugin();
653void CPL_DLL RegisterOGRWAsP();
654void CPL_DLL RegisterOGRPG();
655void DeclareDeferredOGRPGPlugin();
656void CPL_DLL RegisterOGRMSSQLSpatial();
657void DeclareDeferredOGRMSSQLSpatialPlugin();
658void CPL_DLL RegisterOGRMySQL();
659void DeclareDeferredOGRMySQLPlugin();
660void CPL_DLL RegisterOGROCI();
661void DeclareDeferredOGROCIPlugin();
662void CPL_DLL RegisterOGRDGN();
663void CPL_DLL RegisterOGRGML();
664void CPL_DLL RegisterOGRLIBKML();
665void DeclareDeferredOGRLIBKMLPlugin();
666void CPL_DLL RegisterOGRKML();
667void CPL_DLL RegisterOGRFlatGeobuf();
668void CPL_DLL RegisterOGRGeoJSON();
669void CPL_DLL RegisterOGRGeoJSONSeq();
670void CPL_DLL RegisterOGRESRIJSON();
671void CPL_DLL RegisterOGRTopoJSON();
672void CPL_DLL RegisterOGRAVCBin();
673void CPL_DLL RegisterOGRAVCE00();
674void CPL_DLL RegisterOGRMEM();
675void CPL_DLL RegisterOGRVRT();
676void CPL_DLL RegisterOGRSQLite();
677void CPL_DLL RegisterOGRCSV();
678void CPL_DLL RegisterOGRILI1();
679void CPL_DLL RegisterOGRILI2();
680void CPL_DLL RegisterOGRPGeo();
681void CPL_DLL RegisterOGRDXF();
682void CPL_DLL RegisterOGRCAD();
683void DeclareDeferredOGRCADPlugin();
684void CPL_DLL RegisterOGRDWG();
685void CPL_DLL RegisterOGRDGNV8();
686void DeclareDeferredOGRDWGPlugin();
687void DeclareDeferredOGRDGNV8Plugin();
688void CPL_DLL RegisterOGRIDB();
689void DeclareDeferredOGRIDBPlugin();
690void CPL_DLL RegisterOGRGMT();
691void CPL_DLL RegisterOGRGPX();
692void CPL_DLL RegisterOGRGeoconcept();
693void CPL_DLL RegisterOGRNAS();
694void CPL_DLL RegisterOGRGeoRSS();
695void CPL_DLL RegisterOGRVFK();
696void DeclareDeferredOGRVFKPlugin();
697void CPL_DLL RegisterOGRPGDump();
698void CPL_DLL RegisterOGROSM();
699void CPL_DLL RegisterOGRGPSBabel();
700void CPL_DLL RegisterOGRPDS();
701void CPL_DLL RegisterOGRWFS();
702void CPL_DLL RegisterOGROAPIF();
703void CPL_DLL RegisterOGRSOSI();
704void DeclareDeferredOGRSOSIPlugin();
705void CPL_DLL RegisterOGREDIGEO();
706void CPL_DLL RegisterOGRSVG();
707void CPL_DLL RegisterOGRIdrisi();
708void CPL_DLL RegisterOGRXLS();
709void DeclareDeferredOGRXLSPlugin();
710void CPL_DLL RegisterOGRODS();
711void CPL_DLL RegisterOGRXLSX();
712void CPL_DLL RegisterOGRElastic();
713void DeclareDeferredOGRElasticPlugin();
714void CPL_DLL RegisterOGRGeoPackage();
715void CPL_DLL RegisterOGRCarto();
716void DeclareDeferredOGRCartoPlugin();
717void CPL_DLL RegisterOGRAmigoCloud();
718void CPL_DLL RegisterOGRSXF();
719void CPL_DLL RegisterOGROpenFileGDB();
720void DeclareDeferredOGROpenFileGDBPlugin();
721void CPL_DLL RegisterOGRSelafin();
722void CPL_DLL RegisterOGRJML();
723void CPL_DLL RegisterOGRPLSCENES();
724void DeclareDeferredOGRPLSCENESPlugin();
725void CPL_DLL RegisterOGRCSW();
726void CPL_DLL RegisterOGRMongoDBv3();
727void DeclareDeferredOGRMongoDBv3Plugin();
728void CPL_DLL RegisterOGRVDV();
729void CPL_DLL RegisterOGRGMLAS();
730void DeclareDeferredOGRGMLASPlugin();
731void CPL_DLL RegisterOGRMVT();
732void CPL_DLL RegisterOGRNGW();
733void CPL_DLL RegisterOGRMapML();
734void CPL_DLL RegisterOGRLVBAG();
735void CPL_DLL RegisterOGRHANA();
736void DeclareDeferredOGRHANAPlugin();
737void CPL_DLL RegisterOGRParquet();
738void DeclareDeferredOGRParquetPlugin();
739void CPL_DLL RegisterOGRArrow();
740void DeclareDeferredOGRArrowPlugin();
741void CPL_DLL RegisterOGRGTFS();
742void CPL_DLL RegisterOGRPMTiles();
743void CPL_DLL RegisterOGRJSONFG();
744void CPL_DLL RegisterOGRMiraMon();
745// @endcond
746
748
749#endif /* ndef OGRSF_FRMTS_H_INCLUDED */
String list class designed around our use of C "char**" string lists.
Definition: cpl_string.h:449
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:490
Format specific driver.
Definition: gdal_priv.h:1949
Object with metadata.
Definition: gdal_priv.h:156
Class for dataset open functions.
Definition: gdal_priv.h:301
LEGACY class.
Definition: ogrsf_frmts.h:518
Simple container for a bounding region in 3D.
Definition: ogr_core.h:216
Simple container for a bounding region (rectangle)
Definition: ogr_core.h:61
Definition of a feature class or feature layer.
Definition: ogr_feature.h:517
A simple feature, including geometry and attributes.
Definition: ogr_feature.h:893
OGRGeometry * GetGeometryRef()
Fetch pointer to feature geometry.
Definition: ogrfeature.cpp:719
Definition of an attribute of an OGRFeatureDefn.
Definition: ogr_feature.h:111
Definition of a geometry field of an OGRFeatureDefn.
Definition: ogr_feature.h:346
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:377
Template class offering a GetNextFeature() implementation relying on GetNextRawFeature()
Definition: ogrsf_frmts.h:454
OGRFeature * GetNextFeature()
Implement OGRLayer::GetNextFeature(), relying on BaseLayer::GetNextRawFeature()
Definition: ogrsf_frmts.h:461
This class represents a layer of simple features, with access methods.
Definition: ogrsf_frmts.h:74
friend FeatureIterator begin(OGRLayer *poLayer)
Return begin of feature iterator.
Definition: ogrsf_frmts.h:426
virtual OGRFeature * GetNextFeature()=0
Fetch the next available feature from this layer.
static OGRLayerH ToHandle(OGRLayer *poLayer)
Convert a OGRLayer* to a OGRLayerH.
Definition: ogrsf_frmts.h:373
std::vector< std::unique_ptr< OGRSpatialReference, OGRSpatialReferenceReleaser > > GetSupportedSRSListRetType
Return type of OGRLayer::GetSupportedSRSList()
Definition: ogrsf_frmts.h:256
friend FeatureIterator end(OGRLayer *poLayer)
Return end of feature iterator.
Definition: ogrsf_frmts.h:434
virtual void ResetReading()=0
Reset feature reading to start on the first feature.
static OGRLayer * FromHandle(OGRLayerH hLayer)
Convert a OGRLayerH to a OGRLayer*.
Definition: ogrsf_frmts.h:381
LEGACY class.
Definition: ogrsf_frmts.h:593
LEGACY class.
Definition: ogrsf_frmts.h:553
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:169
This class represents a style table.
Definition: ogr_featurestyle.h:86
CPLErr
Error category.
Definition: cpl_error.h:53
#define CPL_C_END
Macro to end a block of C symbols.
Definition: cpl_port.h:299
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:295
#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
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1183
#define CPL_WARN_UNUSED_RESULT
Qualifier to warn when the return value of a function is not used.
Definition: cpl_port.h:976
unsigned char GByte
Unsigned byte type.
Definition: cpl_port.h:185
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition: cpl_port.h:215
C++ GDAL entry points.
void * OGRLayerH
Opaque type for a layer (OGRLayer)
Definition: ogr_api.h:688
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:416
int OGRErr
Type for a OGR error.
Definition: ogr_core.h:387
Simple feature classes.
std::unique_ptr< OGRFeature, OGRFeatureUniquePtrDeleter > OGRFeatureUniquePtr
Unique pointer type for OGRFeature.
Definition: ogr_feature.h:1570
Simple feature style classes.
std::unique_ptr< OGRLayer > OGRLayerUniquePtr
Unique pointer type for OGRLayer.
Definition: ogrsf_frmts.h:442
OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
Return begin of feature iterator.
Definition: ogrsf_frmts.h:426
OGRLayer::FeatureIterator end(OGRLayer *poLayer)
Return end of feature iterator.
Definition: ogrsf_frmts.h:434
Result item of OGR_L_GetGeometryTypes.
Definition: ogr_api.h:705