ogrsf_frmts.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _OGRSF_FRMTS_H_INCLUDED
00031 #define _OGRSF_FRMTS_H_INCLUDED
00032
00033 #include "ogr_feature.h"
00034 #include "ogr_featurestyle.h"
00035
00042 class OGRLayerAttrIndex;
00043 class OGRSFDriver;
00044
00045
00046
00047
00048
00054 class CPL_DLL OGRLayer
00055 {
00056 protected:
00057 int m_bFilterIsEnvelope;
00058 OGRGeometry *m_poFilterGeom;
00059 OGREnvelope m_sFilterEnvelope;
00060
00061 int FilterGeometry( OGRGeometry * );
00062 int InstallFilter( OGRGeometry * );
00063
00064 public:
00065 OGRLayer();
00066 virtual ~OGRLayer();
00067
00068 virtual OGRGeometry *GetSpatialFilter();
00069 virtual void SetSpatialFilter( OGRGeometry * );
00070 virtual void SetSpatialFilterRect( double dfMinX, double dfMinY,
00071 double dfMaxX, double dfMaxY );
00072
00073 virtual OGRErr SetAttributeFilter( const char * );
00074
00075 virtual void ResetReading() = 0;
00076 virtual OGRFeature *GetNextFeature() = 0;
00077 virtual OGRErr SetNextByIndex( long nIndex );
00078 virtual OGRFeature *GetFeature( long nFID );
00079 virtual OGRErr SetFeature( OGRFeature *poFeature );
00080 virtual OGRErr CreateFeature( OGRFeature *poFeature );
00081 virtual OGRErr DeleteFeature( long nFID );
00082
00083 virtual const char *GetName();
00084 virtual OGRwkbGeometryType GetGeomType();
00085 virtual OGRFeatureDefn *GetLayerDefn() = 0;
00086
00087 virtual OGRSpatialReference *GetSpatialRef() { return NULL; }
00088
00089 virtual int GetFeatureCount( int bForce = TRUE );
00090 virtual OGRErr GetExtent(OGREnvelope *psExtent, int bForce = TRUE);
00091
00092 virtual int TestCapability( const char * ) = 0;
00093
00094 virtual const char *GetInfo( const char * );
00095
00096 virtual OGRErr CreateField( OGRFieldDefn *poField,
00097 int bApproxOK = TRUE );
00098
00099 virtual OGRErr SyncToDisk();
00100
00101 virtual OGRStyleTable *GetStyleTable();
00102 virtual void SetStyleTableDirectly( OGRStyleTable *poStyleTable );
00103
00104 virtual void SetStyleTable(OGRStyleTable *poStyleTable);
00105
00106 virtual OGRErr StartTransaction();
00107 virtual OGRErr CommitTransaction();
00108 virtual OGRErr RollbackTransaction();
00109
00110 virtual const char *GetFIDColumn();
00111 virtual const char *GetGeometryColumn();
00112
00113 virtual OGRErr SetIgnoredFields( const char **papszFields );
00114
00115 int Reference();
00116 int Dereference();
00117 int GetRefCount() const;
00118
00119 GIntBig GetFeaturesRead();
00120
00121
00122 OGRErr InitializeIndexSupport( const char * );
00123 OGRLayerAttrIndex *GetIndex() { return m_poAttrIndex; }
00124
00125 protected:
00126 OGRStyleTable *m_poStyleTable;
00127 OGRFeatureQuery *m_poAttrQuery;
00128 OGRLayerAttrIndex *m_poAttrIndex;
00129
00130 int m_nRefCount;
00131
00132 GIntBig m_nFeaturesRead;
00133 };
00134
00135
00136
00137
00138
00139
00150 class CPL_DLL OGRDataSource
00151 {
00152 friend class OGRSFDriverRegistrar;
00153
00154 void *m_hMutex;
00155
00156 public:
00157
00158 OGRDataSource();
00159 virtual ~OGRDataSource();
00160 static void DestroyDataSource( OGRDataSource * );
00161
00162 virtual const char *GetName() = 0;
00163
00164 virtual int GetLayerCount() = 0;
00165 virtual OGRLayer *GetLayer(int) = 0;
00166 virtual OGRLayer *GetLayerByName(const char *);
00167 virtual OGRErr DeleteLayer(int);
00168
00169 virtual int TestCapability( const char * ) = 0;
00170
00171 virtual OGRLayer *CreateLayer( const char *pszName,
00172 OGRSpatialReference *poSpatialRef = NULL,
00173 OGRwkbGeometryType eGType = wkbUnknown,
00174 char ** papszOptions = NULL );
00175 virtual OGRLayer *CopyLayer( OGRLayer *poSrcLayer,
00176 const char *pszNewName,
00177 char **papszOptions = NULL );
00178
00179 virtual OGRStyleTable *GetStyleTable();
00180 virtual void SetStyleTableDirectly( OGRStyleTable *poStyleTable );
00181
00182 virtual void SetStyleTable(OGRStyleTable *poStyleTable);
00183
00184 virtual OGRLayer * ExecuteSQL( const char *pszStatement,
00185 OGRGeometry *poSpatialFilter,
00186 const char *pszDialect );
00187 virtual void ReleaseResultSet( OGRLayer * poResultsSet );
00188
00189 virtual OGRErr SyncToDisk();
00190
00191 int Reference();
00192 int Dereference();
00193 int GetRefCount() const;
00194 int GetSummaryRefCount() const;
00195 OGRErr Release();
00196
00197 OGRSFDriver *GetDriver() const;
00198 void SetDriver( OGRSFDriver *poDriver );
00199
00200 protected:
00201
00202 OGRErr ProcessSQLCreateIndex( const char * );
00203 OGRErr ProcessSQLDropIndex( const char * );
00204
00205 OGRStyleTable *m_poStyleTable;
00206 int m_nRefCount;
00207 OGRSFDriver *m_poDriver;
00208 };
00209
00210
00211
00212
00213
00223 class CPL_DLL OGRSFDriver
00224 {
00225 public:
00226 virtual ~OGRSFDriver();
00227
00228 virtual const char *GetName() = 0;
00229
00230 virtual OGRDataSource *Open( const char *pszName, int bUpdate=FALSE ) = 0;
00231
00232 virtual int TestCapability( const char * ) = 0;
00233
00234 virtual OGRDataSource *CreateDataSource( const char *pszName,
00235 char ** = NULL );
00236 virtual OGRErr DeleteDataSource( const char *pszName );
00237
00238 virtual OGRDataSource *CopyDataSource( OGRDataSource *poSrcDS,
00239 const char *pszNewName,
00240 char **papszOptions = NULL );
00241 };
00242
00243
00244
00245
00246
00247
00256 class CPL_DLL OGRSFDriverRegistrar
00257 {
00258 int nDrivers;
00259 OGRSFDriver **papoDrivers;
00260
00261 OGRSFDriverRegistrar();
00262
00263 int nOpenDSCount;
00264 char **papszOpenDSRawName;
00265 OGRDataSource **papoOpenDS;
00266 OGRSFDriver **papoOpenDSDriver;
00267 GIntBig *panOpenDSPID;
00268
00269 public:
00270
00271 ~OGRSFDriverRegistrar();
00272
00273 static OGRSFDriverRegistrar *GetRegistrar();
00274 static OGRDataSource *Open( const char *pszName, int bUpdate=FALSE,
00275 OGRSFDriver ** ppoDriver = NULL );
00276
00277 OGRDataSource *OpenShared( const char *pszName, int bUpdate=FALSE,
00278 OGRSFDriver ** ppoDriver = NULL );
00279 OGRErr ReleaseDataSource( OGRDataSource * );
00280
00281 void RegisterDriver( OGRSFDriver * poDriver );
00282 void DeregisterDriver( OGRSFDriver * poDriver );
00283
00284 int GetDriverCount( void );
00285 OGRSFDriver *GetDriver( int iDriver );
00286 OGRSFDriver *GetDriverByName( const char * );
00287
00288 int GetOpenDSCount() { return nOpenDSCount; }
00289 OGRDataSource *GetOpenDS( int );
00290
00291 void AutoLoadDrivers();
00292 };
00293
00294
00295
00296
00297 CPL_C_START
00298 void CPL_DLL OGRRegisterAll();
00299
00300 void CPL_DLL RegisterOGRShape();
00301 void CPL_DLL RegisterOGRNTF();
00302 void CPL_DLL RegisterOGRFME();
00303 void CPL_DLL RegisterOGRSDTS();
00304 void CPL_DLL RegisterOGRTiger();
00305 void CPL_DLL RegisterOGRS57();
00306 void CPL_DLL RegisterOGRTAB();
00307 void CPL_DLL RegisterOGRMIF();
00308 void CPL_DLL RegisterOGROGDI();
00309 void CPL_DLL RegisterOGRODBC();
00310 void CPL_DLL RegisterOGRPG();
00311 void CPL_DLL RegisterOGRMSSQLSpatial();
00312 void CPL_DLL RegisterOGRMySQL();
00313 void CPL_DLL RegisterOGROCI();
00314 void CPL_DLL RegisterOGRDGN();
00315 void CPL_DLL RegisterOGRGML();
00316 void CPL_DLL RegisterOGRLIBKML();
00317 void CPL_DLL RegisterOGRKML();
00318 void CPL_DLL RegisterOGRGeoJSON();
00319 void CPL_DLL RegisterOGRAVCBin();
00320 void CPL_DLL RegisterOGRAVCE00();
00321 void CPL_DLL RegisterOGRREC();
00322 void CPL_DLL RegisterOGRMEM();
00323 void CPL_DLL RegisterOGRVRT();
00324 void CPL_DLL RegisterOGRDODS();
00325 void CPL_DLL RegisterOGRSQLite();
00326 void CPL_DLL RegisterOGRCSV();
00327 void CPL_DLL RegisterOGRILI1();
00328 void CPL_DLL RegisterOGRILI2();
00329 void CPL_DLL RegisterOGRGRASS();
00330 void CPL_DLL RegisterOGRPGeo();
00331 void CPL_DLL RegisterOGRDXFDWG();
00332 void CPL_DLL RegisterOGRDXF();
00333 void CPL_DLL RegisterOGRSDE();
00334 void CPL_DLL RegisterOGRIDB();
00335 void CPL_DLL RegisterOGRGMT();
00336 void CPL_DLL RegisterOGRBNA();
00337 void CPL_DLL RegisterOGRGPX();
00338 void CPL_DLL RegisterOGRGeoconcept();
00339 void CPL_DLL RegisterOGRIngres();
00340 void CPL_DLL RegisterOGRPCIDSK();
00341 void CPL_DLL RegisterOGRXPlane();
00342 void CPL_DLL RegisterOGRNAS();
00343 void CPL_DLL RegisterOGRGeoRSS();
00344 void CPL_DLL RegisterOGRGTM();
00345 void CPL_DLL RegisterOGRVFK();
00346 void CPL_DLL RegisterOGRPGDump();
00347 void CPL_DLL RegisterOGRGPSBabel();
00348 void CPL_DLL RegisterOGRSUA();
00349 void CPL_DLL RegisterOGROpenAir();
00350 void CPL_DLL RegisterOGRPDS();
00351 void CPL_DLL RegisterOGRWFS();
00352 void CPL_DLL RegisterOGRSOSI();
00353 void CPL_DLL RegisterOGRHTF();
00354 void CPL_DLL RegisterOGRAeronavFAA();
00355 CPL_C_END
00356
00357
00358 #endif