GDAL
ogrsf_frmts.h
Go to the documentation of this file.
00001 /******************************************************************************
00002  * $Id: ogrsf_frmts.h 37968 2017-04-12 07:16:55Z rouault $
00003  *
00004  * Project:  OpenGIS Simple Features Reference Implementation
00005  * Purpose:  Classes related to format registration, and file opening.
00006  * Author:   Frank Warmerdam, warmerda@home.com
00007  *
00008  ******************************************************************************
00009  * Copyright (c) 1999,  Les Technologies SoftMap Inc.
00010  * Copyright (c) 2007-2014, Even Rouault <even dot rouault at mines-paris dot org>
00011  *
00012  * Permission is hereby granted, free of charge, to any person obtaining a
00013  * copy of this software and associated documentation files (the "Software"),
00014  * to deal in the Software without restriction, including without limitation
00015  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
00016  * and/or sell copies of the Software, and to permit persons to whom the
00017  * Software is furnished to do so, subject to the following conditions:
00018  *
00019  * The above copyright notice and this permission notice shall be included
00020  * in all copies or substantial portions of the Software.
00021  *
00022  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00023  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00024  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
00025  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00026  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
00027  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
00028  * DEALINGS IN THE SOFTWARE.
00029  ****************************************************************************/
00030 
00031 #ifndef OGRSF_FRMTS_H_INCLUDED
00032 #define OGRSF_FRMTS_H_INCLUDED
00033 
00034 #include "cpl_progress.h"
00035 #include "ogr_feature.h"
00036 #include "ogr_featurestyle.h"
00037 #include "gdal_priv.h"
00038 
00045 
00046 #if !defined(GDAL_COMPILATION) && !defined(SUPPRESS_DEPRECATION_WARNINGS)
00047 #define OGR_DEPRECATED(x) CPL_WARN_DEPRECATED(x)
00048 #else
00049 #define OGR_DEPRECATED(x)
00050 #endif
00051 
00052 
00053 class OGRLayerAttrIndex;
00054 class OGRSFDriver;
00055 
00056 /************************************************************************/
00057 /*                               OGRLayer                               */
00058 /************************************************************************/
00059 
00065 /* Note: any virtual method added to this class must also be added in the */
00066 /* OGRLayerDecorator and OGRMutexedLayer classes. */
00067 
00068 class CPL_DLL OGRLayer : public GDALMajorObject
00069 {
00070   private:
00071     void         ConvertGeomsIfNecessary( OGRFeature *poFeature );
00072 
00073   protected:
00075     int          m_bFilterIsEnvelope;
00076     OGRGeometry *m_poFilterGeom;
00077     OGRPreparedGeometry *m_pPreparedFilterGeom; /* m_poFilterGeom compiled as a prepared geometry */
00078     OGREnvelope  m_sFilterEnvelope;
00079     int          m_iGeomFieldFilter; // specify the index on which the spatial
00080                                      // filter is active.
00081 
00082     int          FilterGeometry( OGRGeometry * );
00083     //int          FilterGeometry( OGRGeometry *, OGREnvelope* psGeometryEnvelope);
00084     int          InstallFilter( OGRGeometry * );
00085 
00086     OGRErr       GetExtentInternal(int iGeomField, OGREnvelope *psExtent, int bForce );
00088 
00089     virtual OGRErr      ISetFeature( OGRFeature *poFeature ) CPL_WARN_UNUSED_RESULT;
00090     virtual OGRErr      ICreateFeature( OGRFeature *poFeature )  CPL_WARN_UNUSED_RESULT;
00091 
00092   public:
00093     OGRLayer();
00094     virtual     ~OGRLayer();
00095 
00096     virtual OGRGeometry *GetSpatialFilter();
00097     virtual void        SetSpatialFilter( OGRGeometry * );
00098     virtual void        SetSpatialFilterRect( double dfMinX, double dfMinY,
00099                                               double dfMaxX, double dfMaxY );
00100 
00101     virtual void        SetSpatialFilter( int iGeomField, OGRGeometry * );
00102     virtual void        SetSpatialFilterRect( int iGeomField,
00103                                             double dfMinX, double dfMinY,
00104                                             double dfMaxX, double dfMaxY );
00105 
00106     virtual OGRErr      SetAttributeFilter( const char * );
00107 
00108     virtual void        ResetReading() = 0;
00109     virtual OGRFeature *GetNextFeature() CPL_WARN_UNUSED_RESULT = 0;
00110     virtual OGRErr      SetNextByIndex( GIntBig nIndex );
00111     virtual OGRFeature *GetFeature( GIntBig nFID )  CPL_WARN_UNUSED_RESULT;
00112 
00113     OGRErr      SetFeature( OGRFeature *poFeature )  CPL_WARN_UNUSED_RESULT;
00114     OGRErr      CreateFeature( OGRFeature *poFeature ) CPL_WARN_UNUSED_RESULT;
00115 
00116     virtual OGRErr      DeleteFeature( GIntBig nFID )  CPL_WARN_UNUSED_RESULT;
00117 
00118     virtual const char *GetName();
00119     virtual OGRwkbGeometryType GetGeomType();
00120     virtual OGRFeatureDefn *GetLayerDefn() = 0;
00121     virtual int         FindFieldIndex( const char *pszFieldName, int bExactMatch );
00122 
00123     virtual OGRSpatialReference *GetSpatialRef();
00124 
00125     virtual GIntBig     GetFeatureCount( int bForce = TRUE );
00126     virtual OGRErr      GetExtent(OGREnvelope *psExtent, int bForce = TRUE)  CPL_WARN_UNUSED_RESULT;
00127     virtual OGRErr      GetExtent(int iGeomField, OGREnvelope *psExtent,
00128                                   int bForce = TRUE)  CPL_WARN_UNUSED_RESULT;
00129 
00130     virtual int         TestCapability( const char * ) = 0;
00131 
00132     virtual OGRErr      CreateField( OGRFieldDefn *poField,
00133                                      int bApproxOK = TRUE );
00134     virtual OGRErr      DeleteField( int iField );
00135     virtual OGRErr      ReorderFields( int* panMap );
00136     virtual OGRErr      AlterFieldDefn( int iField, OGRFieldDefn* poNewFieldDefn, int nFlagsIn );
00137 
00138     virtual OGRErr      CreateGeomField( OGRGeomFieldDefn *poField,
00139                                      int bApproxOK = TRUE );
00140 
00141     virtual OGRErr      SyncToDisk();
00142 
00143     virtual OGRStyleTable *GetStyleTable();
00144     virtual void        SetStyleTableDirectly( OGRStyleTable *poStyleTable );
00145 
00146     virtual void        SetStyleTable(OGRStyleTable *poStyleTable);
00147 
00148     virtual OGRErr      StartTransaction() CPL_WARN_UNUSED_RESULT;
00149     virtual OGRErr      CommitTransaction() CPL_WARN_UNUSED_RESULT;
00150     virtual OGRErr      RollbackTransaction();
00151 
00152     virtual const char *GetFIDColumn();
00153     virtual const char *GetGeometryColumn();
00154 
00155     virtual OGRErr      SetIgnoredFields( const char **papszFields );
00156 
00157     OGRErr              Intersection( OGRLayer *pLayerMethod,
00158                                       OGRLayer *pLayerResult,
00159                                       char** papszOptions = NULL,
00160                                       GDALProgressFunc pfnProgress = NULL,
00161                                       void * pProgressArg = NULL );
00162     OGRErr              Union( OGRLayer *pLayerMethod,
00163                                OGRLayer *pLayerResult,
00164                                char** papszOptions = NULL,
00165                                GDALProgressFunc pfnProgress = NULL,
00166                                void * pProgressArg = NULL );
00167     OGRErr              SymDifference( OGRLayer *pLayerMethod,
00168                                        OGRLayer *pLayerResult,
00169                                        char** papszOptions,
00170                                        GDALProgressFunc pfnProgress,
00171                                        void * pProgressArg );
00172     OGRErr              Identity( OGRLayer *pLayerMethod,
00173                                   OGRLayer *pLayerResult,
00174                                   char** papszOptions = NULL,
00175                                   GDALProgressFunc pfnProgress = NULL,
00176                                   void * pProgressArg = NULL );
00177     OGRErr              Update( OGRLayer *pLayerMethod,
00178                                 OGRLayer *pLayerResult,
00179                                 char** papszOptions = NULL,
00180                                 GDALProgressFunc pfnProgress = NULL,
00181                                 void * pProgressArg = NULL );
00182     OGRErr              Clip( OGRLayer *pLayerMethod,
00183                               OGRLayer *pLayerResult,
00184                               char** papszOptions = NULL,
00185                               GDALProgressFunc pfnProgress = NULL,
00186                               void * pProgressArg = NULL );
00187     OGRErr              Erase( OGRLayer *pLayerMethod,
00188                                OGRLayer *pLayerResult,
00189                                char** papszOptions = NULL,
00190                                GDALProgressFunc pfnProgress = NULL,
00191                                void * pProgressArg = NULL );
00192 
00193     int                 Reference();
00194     int                 Dereference();
00195     int                 GetRefCount() const;
00197     GIntBig             GetFeaturesRead();
00199 
00200     /* non virtual : convenience wrapper for ReorderFields() */
00201     OGRErr              ReorderField( int iOldFieldPos, int iNewFieldPos );
00202 
00204     int                 AttributeFilterEvaluationNeedsGeometry();
00205 
00206     /* consider these private */
00207     OGRErr               InitializeIndexSupport( const char * );
00208     OGRLayerAttrIndex   *GetIndex() { return m_poAttrIndex; }
00210 
00211  protected:
00213     OGRStyleTable       *m_poStyleTable;
00214     OGRFeatureQuery     *m_poAttrQuery;
00215     char                *m_pszAttrQueryString;
00216     OGRLayerAttrIndex   *m_poAttrIndex;
00217 
00218     int                  m_nRefCount;
00219 
00220     GIntBig              m_nFeaturesRead;
00222 };
00223 
00224 /************************************************************************/
00225 /*                            OGRDataSource                             */
00226 /************************************************************************/
00227 
00247 class CPL_DLL OGRDataSource : public GDALDataset
00248 {
00249 public:
00250                         OGRDataSource();
00252     virtual const char  *GetName() OGR_DEPRECATED("Use GDALDataset class instead") = 0;
00253 
00254     static void         DestroyDataSource( OGRDataSource * ) OGR_DEPRECATED("Use GDALDataset class instead");
00256 };
00257 
00258 /************************************************************************/
00259 /*                             OGRSFDriver                              */
00260 /************************************************************************/
00261 
00280 class CPL_DLL OGRSFDriver : public GDALDriver
00281 {
00282   public:
00284     virtual     ~OGRSFDriver();
00285 
00286     virtual const char  *GetName() OGR_DEPRECATED("Use GDALDriver class instead") = 0;
00287 
00288     virtual OGRDataSource *Open( const char *pszName, int bUpdate=FALSE ) OGR_DEPRECATED("Use GDALDriver class instead") = 0;
00289 
00290     virtual int            TestCapability( const char *pszCap ) OGR_DEPRECATED("Use GDALDriver class instead") = 0;
00291 
00292     virtual OGRDataSource *CreateDataSource( const char *pszName,
00293                                              char ** = NULL ) OGR_DEPRECATED("Use GDALDriver class instead");
00294     virtual OGRErr      DeleteDataSource( const char *pszName ) OGR_DEPRECATED("Use GDALDriver class instead");
00296 };
00297 
00298 /************************************************************************/
00299 /*                         OGRSFDriverRegistrar                         */
00300 /************************************************************************/
00301 
00315 class CPL_DLL OGRSFDriverRegistrar
00316 {
00317 
00318                 OGRSFDriverRegistrar();
00319                 ~OGRSFDriverRegistrar();
00320 
00321     static GDALDataset* OpenWithDriverArg(GDALDriver* poDriver,
00322                                                  GDALOpenInfo* poOpenInfo);
00323     static GDALDataset* CreateVectorOnly( GDALDriver* poDriver,
00324                                           const char * pszName,
00325                                           char ** papszOptions );
00326     static CPLErr       DeleteDataSource( GDALDriver* poDriver,
00327                                           const char * pszName );
00328 
00329   public:
00331     static OGRSFDriverRegistrar *GetRegistrar() OGR_DEPRECATED("Use GDALDriverManager class instead");
00332 
00333     // cppcheck-suppress functionStatic
00334     void        RegisterDriver( OGRSFDriver * poDriver ) OGR_DEPRECATED("Use GDALDriverManager class instead");
00335 
00336     // cppcheck-suppress functionStatic
00337     int         GetDriverCount( void ) OGR_DEPRECATED("Use GDALDriverManager class instead");
00338     // cppcheck-suppress functionStatic
00339     GDALDriver *GetDriver( int iDriver ) OGR_DEPRECATED("Use GDALDriverManager class instead");
00340     // cppcheck-suppress functionStatic
00341     GDALDriver *GetDriverByName( const char * ) OGR_DEPRECATED("Use GDALDriverManager class instead");
00342 
00343     // cppcheck-suppress functionStatic
00344     int         GetOpenDSCount() OGR_DEPRECATED("Use GDALDriverManager class instead");
00345     // cppcheck-suppress functionStatic
00346     OGRDataSource *GetOpenDS( int ) OGR_DEPRECATED("Use GDALDriverManager class instead");
00348 };
00349 
00350 /* -------------------------------------------------------------------- */
00351 /*      Various available registration methods.                         */
00352 /* -------------------------------------------------------------------- */
00353 CPL_C_START
00354 void CPL_DLL OGRRegisterAll();
00355 
00357 void OGRRegisterAllInternal();
00358 
00359 void CPL_DLL RegisterOGRFileGDB();
00360 void CPL_DLL RegisterOGRShape();
00361 void CPL_DLL RegisterOGRDB2();
00362 void CPL_DLL RegisterOGRNTF();
00363 void CPL_DLL RegisterOGRFME();
00364 void CPL_DLL RegisterOGRSDTS();
00365 void CPL_DLL RegisterOGRTiger();
00366 void CPL_DLL RegisterOGRS57();
00367 void CPL_DLL RegisterOGRTAB();
00368 void CPL_DLL RegisterOGRMIF();
00369 void CPL_DLL RegisterOGROGDI();
00370 void CPL_DLL RegisterOGRODBC();
00371 void CPL_DLL RegisterOGRWAsP();
00372 void CPL_DLL RegisterOGRPG();
00373 void CPL_DLL RegisterOGRMSSQLSpatial();
00374 void CPL_DLL RegisterOGRMySQL();
00375 void CPL_DLL RegisterOGROCI();
00376 void CPL_DLL RegisterOGRDGN();
00377 void CPL_DLL RegisterOGRGML();
00378 void CPL_DLL RegisterOGRLIBKML();
00379 void CPL_DLL RegisterOGRKML();
00380 void CPL_DLL RegisterOGRGeoJSON();
00381 void CPL_DLL RegisterOGRAVCBin();
00382 void CPL_DLL RegisterOGRAVCE00();
00383 void CPL_DLL RegisterOGRREC();
00384 void CPL_DLL RegisterOGRMEM();
00385 void CPL_DLL RegisterOGRVRT();
00386 void CPL_DLL RegisterOGRDODS();
00387 void CPL_DLL RegisterOGRSQLite();
00388 void CPL_DLL RegisterOGRCSV();
00389 void CPL_DLL RegisterOGRILI1();
00390 void CPL_DLL RegisterOGRILI2();
00391 void CPL_DLL RegisterOGRGRASS();
00392 void CPL_DLL RegisterOGRPGeo();
00393 void CPL_DLL RegisterOGRDXF();
00394 void CPL_DLL RegisterOGRCAD();
00395 void CPL_DLL RegisterOGRDWG();
00396 void CPL_DLL RegisterOGRDGNV8();
00397 void CPL_DLL RegisterOGRSDE();
00398 void CPL_DLL RegisterOGRIDB();
00399 void CPL_DLL RegisterOGRGMT();
00400 void CPL_DLL RegisterOGRBNA();
00401 void CPL_DLL RegisterOGRGPX();
00402 void CPL_DLL RegisterOGRGeoconcept();
00403 void CPL_DLL RegisterOGRIngres();
00404 void CPL_DLL RegisterOGRXPlane();
00405 void CPL_DLL RegisterOGRNAS();
00406 void CPL_DLL RegisterOGRGeoRSS();
00407 void CPL_DLL RegisterOGRGTM();
00408 void CPL_DLL RegisterOGRVFK();
00409 void CPL_DLL RegisterOGRPGDump();
00410 void CPL_DLL RegisterOGROSM();
00411 void CPL_DLL RegisterOGRGPSBabel();
00412 void CPL_DLL RegisterOGRSUA();
00413 void CPL_DLL RegisterOGROpenAir();
00414 void CPL_DLL RegisterOGRPDS();
00415 void CPL_DLL RegisterOGRWFS();
00416 void CPL_DLL RegisterOGRSOSI();
00417 void CPL_DLL RegisterOGRHTF();
00418 void CPL_DLL RegisterOGRAeronavFAA();
00419 void CPL_DLL RegisterOGRGeomedia();
00420 void CPL_DLL RegisterOGRMDB();
00421 void CPL_DLL RegisterOGREDIGEO();
00422 void CPL_DLL RegisterOGRGFT();
00423 void CPL_DLL RegisterOGRSVG();
00424 void CPL_DLL RegisterOGRCouchDB();
00425 void CPL_DLL RegisterOGRCloudant();
00426 void CPL_DLL RegisterOGRIdrisi();
00427 void CPL_DLL RegisterOGRARCGEN();
00428 void CPL_DLL RegisterOGRSEGUKOOA();
00429 void CPL_DLL RegisterOGRSEGY();
00430 void CPL_DLL RegisterOGRXLS();
00431 void CPL_DLL RegisterOGRODS();
00432 void CPL_DLL RegisterOGRXLSX();
00433 void CPL_DLL RegisterOGRElastic();
00434 void CPL_DLL RegisterOGRGeoPackage();
00435 void CPL_DLL RegisterOGRWalk();
00436 void CPL_DLL RegisterOGRCarto();
00437 void CPL_DLL RegisterOGRAmigoCloud();
00438 void CPL_DLL RegisterOGRSXF();
00439 void CPL_DLL RegisterOGROpenFileGDB();
00440 void CPL_DLL RegisterOGRSelafin();
00441 void CPL_DLL RegisterOGRJML();
00442 void CPL_DLL RegisterOGRPLSCENES();
00443 void CPL_DLL RegisterOGRCSW();
00444 void CPL_DLL RegisterOGRMongoDB();
00445 void CPL_DLL RegisterOGRVDV();
00446 void CPL_DLL RegisterOGRGMLAS();
00447 // @endcond
00448 
00449 CPL_C_END
00450 
00451 #endif /* ndef OGRSF_FRMTS_H_INCLUDED */

Generated for GDAL by doxygen 1.7.6.1.