QGIS API Documentation  3.0.2-Girona (307d082)
qgsogrutils.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsogrutils.h
3  -------------
4  begin : February 2016
5  copyright : (C) 2016 Nyall Dawson
6  email : nyall dot dawson at gmail dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGSOGRUTILS_H
17 #define QGSOGRUTILS_H
18 
19 #define SIP_NO_FILE
20 
21 #include "qgis_core.h"
22 #include "qgsfeature.h"
23 
24 #include <ogr_api.h>
25 #include <gdal.h>
26 #include <gdalwarper.h>
27 #include "cpl_conv.h"
28 #include "cpl_string.h"
29 
30 namespace gdal
31 {
32 
37  {
38 
42  void CORE_EXPORT operator()( void *source );
43 
44  };
45 
50  {
51 
55  void CORE_EXPORT operator()( void *geometry );
56 
57  };
58 
63  {
64 
68  void CORE_EXPORT operator()( void *definition );
69 
70  };
71 
76  {
77 
81  void CORE_EXPORT operator()( void *feature );
82 
83  };
84 
89  {
90 
94  void CORE_EXPORT operator()( void *dataset );
95 
96  };
97 
102  {
103 
107  void CORE_EXPORT operator()( GDALWarpOptions *options );
108 
109  };
110 
114  using ogr_datasource_unique_ptr = std::unique_ptr< void, OGRDataSourceDeleter>;
115 
119  using ogr_geometry_unique_ptr = std::unique_ptr< void, OGRGeometryDeleter>;
120 
124  using ogr_field_def_unique_ptr = std::unique_ptr< void, OGRFldDeleter >;
125 
129  using ogr_feature_unique_ptr = std::unique_ptr< void, OGRFeatureDeleter >;
130 
134  using dataset_unique_ptr = std::unique_ptr< void, GDALDatasetCloser >;
135 
144  void CORE_EXPORT fast_delete_and_close( dataset_unique_ptr &dataset, GDALDriverH driver, const QString &path );
145 
149  using warp_options_unique_ptr = std::unique_ptr< GDALWarpOptions, GDALWarpOptionsDeleter >;
150 }
151 
161 class CORE_EXPORT QgsOgrUtils
162 {
163  public:
164 
172  static QgsFeature readOgrFeature( OGRFeatureH ogrFet, const QgsFields &fields, QTextCodec *encoding );
173 
180  static QgsFields readOgrFields( OGRFeatureH ogrFet, QTextCodec *encoding );
181 
192  static QVariant getOgrFeatureAttribute( OGRFeatureH ogrFet, const QgsFields &fields, int attIndex, QTextCodec *encoding, bool *ok = nullptr );
193 
203  static bool readOgrFeatureAttributes( OGRFeatureH ogrFet, const QgsFields &fields, QgsFeature &feature, QTextCodec *encoding );
204 
213  static bool readOgrFeatureGeometry( OGRFeatureH ogrFet, QgsFeature &feature );
214 
222  static QgsGeometry ogrGeometryToQgsGeometry( OGRGeometryH geom );
223 
233  static QgsFeatureList stringToFeatureList( const QString &string, const QgsFields &fields, QTextCodec *encoding );
234 
242  static QgsFields stringToFields( const QString &string, QTextCodec *encoding );
243 };
244 
245 #endif // QGSOGRUTILS_H
Closes and cleanups GDAL dataset.
Definition: qgsogrutils.h:88
Destroys OGR data sources.
Definition: qgsogrutils.h:36
QList< QgsFeature > QgsFeatureList
Definition: qgsfeature.h:549
Container of fields for a vector layer.
Definition: qgsfields.h:42
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:111
Closes and cleanups GDAL warp options.
Definition: qgsogrutils.h:101
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition: qgsfeature.h:62
std::unique_ptr< GDALWarpOptions, GDALWarpOptionsDeleter > warp_options_unique_ptr
Scoped GDAL warp options.
Definition: qgsogrutils.h:149
Utilities for working with OGR features and layers.
Definition: qgsogrutils.h:161
std::unique_ptr< void, OGRGeometryDeleter > ogr_geometry_unique_ptr
Scoped OGR geometry.
Definition: qgsogrutils.h:119
void CORE_EXPORT operator()(void *source)
Destroys an OGR data source, using the correct gdal calls.
Definition: qgsogrutils.cpp:34
void CORE_EXPORT fast_delete_and_close(dataset_unique_ptr &dataset, GDALDriverH driver, const QString &path)
Performs a fast close of an unwanted GDAL dataset handle by deleting the underlying data store...
Definition: qgsogrutils.cpp:60
Destroys OGR geometries.
Definition: qgsogrutils.h:49
Destroys OGR feature.
Definition: qgsogrutils.h:75
std::unique_ptr< void, GDALDatasetCloser > dataset_unique_ptr
Scoped GDAL dataset.
Definition: qgsogrutils.h:134
std::unique_ptr< void, OGRFldDeleter > ogr_field_def_unique_ptr
Scoped OGR field definition.
Definition: qgsogrutils.h:124
std::unique_ptr< void, OGRDataSourceDeleter > ogr_datasource_unique_ptr
Scoped OGR data source.
Definition: qgsogrutils.h:114
Destroys OGR field definition.
Definition: qgsogrutils.h:62
std::unique_ptr< void, OGRFeatureDeleter > ogr_feature_unique_ptr
Scoped OGR feature.
Definition: qgsogrutils.h:129