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
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 #if !defined(GDAL_COMPILATION) && !defined(SUPPRESS_DEPRECATION_WARNINGS)
00046 #define OGR_DEPRECATED(x) CPL_WARN_DEPRECATED(x)
00047 #else
00048 #define OGR_DEPRECATED(x)
00049 #endif
00050
00051 class OGRLayerAttrIndex;
00052 class OGRSFDriver;
00053
00054
00055
00056
00057
00063
00064
00065
00066 class CPL_DLL OGRLayer : public GDALMajorObject
00067 {
00068 private:
00069 void ConvertNonLinearGeomsIfNecessary( OGRFeature *poFeature );
00070
00071 protected:
00072 int m_bFilterIsEnvelope;
00073 OGRGeometry *m_poFilterGeom;
00074 OGRPreparedGeometry *m_pPreparedFilterGeom;
00075 OGREnvelope m_sFilterEnvelope;
00076 int m_iGeomFieldFilter;
00077
00078
00079 int FilterGeometry( OGRGeometry * );
00080
00081 int InstallFilter( OGRGeometry * );
00082
00083 OGRErr GetExtentInternal(int iGeomField, OGREnvelope *psExtent, int bForce );
00084
00085 virtual OGRErr ISetFeature( OGRFeature *poFeature );
00086 virtual OGRErr ICreateFeature( OGRFeature *poFeature );
00087
00088 public:
00089 OGRLayer();
00090 virtual ~OGRLayer();
00091
00092 virtual OGRGeometry *GetSpatialFilter();
00093 virtual void SetSpatialFilter( OGRGeometry * );
00094 virtual void SetSpatialFilterRect( double dfMinX, double dfMinY,
00095 double dfMaxX, double dfMaxY );
00096
00097 virtual void SetSpatialFilter( int iGeomField, OGRGeometry * );
00098 virtual void SetSpatialFilterRect( int iGeomField,
00099 double dfMinX, double dfMinY,
00100 double dfMaxX, double dfMaxY );
00101
00102 virtual OGRErr SetAttributeFilter( const char * );
00103
00104 virtual void ResetReading() = 0;
00105 virtual OGRFeature *GetNextFeature() = 0;
00106 virtual OGRErr SetNextByIndex( GIntBig nIndex );
00107 virtual OGRFeature *GetFeature( GIntBig nFID );
00108
00109 OGRErr SetFeature( OGRFeature *poFeature );
00110 OGRErr CreateFeature( OGRFeature *poFeature );
00111
00112 virtual OGRErr DeleteFeature( GIntBig nFID );
00113
00114 virtual const char *GetName();
00115 virtual OGRwkbGeometryType GetGeomType();
00116 virtual OGRFeatureDefn *GetLayerDefn() = 0;
00117 virtual int FindFieldIndex( const char *pszFieldName, int bExactMatch );
00118
00119 virtual OGRSpatialReference *GetSpatialRef();
00120
00121 virtual GIntBig GetFeatureCount( int bForce = TRUE );
00122 virtual OGRErr GetExtent(OGREnvelope *psExtent, int bForce = TRUE);
00123 virtual OGRErr GetExtent(int iGeomField, OGREnvelope *psExtent,
00124 int bForce = TRUE);
00125
00126 virtual int TestCapability( const char * ) = 0;
00127
00128 virtual OGRErr CreateField( OGRFieldDefn *poField,
00129 int bApproxOK = TRUE );
00130 virtual OGRErr DeleteField( int iField );
00131 virtual OGRErr ReorderFields( int* panMap );
00132 virtual OGRErr AlterFieldDefn( int iField, OGRFieldDefn* poNewFieldDefn, int nFlagsIn );
00133
00134 virtual OGRErr CreateGeomField( OGRGeomFieldDefn *poField,
00135 int bApproxOK = TRUE );
00136
00137 virtual OGRErr SyncToDisk();
00138
00139 virtual OGRStyleTable *GetStyleTable();
00140 virtual void SetStyleTableDirectly( OGRStyleTable *poStyleTable );
00141
00142 virtual void SetStyleTable(OGRStyleTable *poStyleTable);
00143
00144 virtual OGRErr StartTransaction();
00145 virtual OGRErr CommitTransaction();
00146 virtual OGRErr RollbackTransaction();
00147
00148 virtual const char *GetFIDColumn();
00149 virtual const char *GetGeometryColumn();
00150
00151 virtual OGRErr SetIgnoredFields( const char **papszFields );
00152
00153 OGRErr Intersection( OGRLayer *pLayerMethod,
00154 OGRLayer *pLayerResult,
00155 char** papszOptions = NULL,
00156 GDALProgressFunc pfnProgress = NULL,
00157 void * pProgressArg = NULL );
00158 OGRErr Union( OGRLayer *pLayerMethod,
00159 OGRLayer *pLayerResult,
00160 char** papszOptions = NULL,
00161 GDALProgressFunc pfnProgress = NULL,
00162 void * pProgressArg = NULL );
00163 OGRErr SymDifference( OGRLayer *pLayerMethod,
00164 OGRLayer *pLayerResult,
00165 char** papszOptions,
00166 GDALProgressFunc pfnProgress,
00167 void * pProgressArg );
00168 OGRErr Identity( OGRLayer *pLayerMethod,
00169 OGRLayer *pLayerResult,
00170 char** papszOptions = NULL,
00171 GDALProgressFunc pfnProgress = NULL,
00172 void * pProgressArg = NULL );
00173 OGRErr Update( OGRLayer *pLayerMethod,
00174 OGRLayer *pLayerResult,
00175 char** papszOptions = NULL,
00176 GDALProgressFunc pfnProgress = NULL,
00177 void * pProgressArg = NULL );
00178 OGRErr Clip( OGRLayer *pLayerMethod,
00179 OGRLayer *pLayerResult,
00180 char** papszOptions = NULL,
00181 GDALProgressFunc pfnProgress = NULL,
00182 void * pProgressArg = NULL );
00183 OGRErr Erase( OGRLayer *pLayerMethod,
00184 OGRLayer *pLayerResult,
00185 char** papszOptions = NULL,
00186 GDALProgressFunc pfnProgress = NULL,
00187 void * pProgressArg = NULL );
00188
00189 int Reference();
00190 int Dereference();
00191 int GetRefCount() const;
00192
00193 GIntBig GetFeaturesRead();
00194
00195
00196 OGRErr ReorderField( int iOldFieldPos, int iNewFieldPos );
00197
00198 int AttributeFilterEvaluationNeedsGeometry();
00199
00200
00201 OGRErr InitializeIndexSupport( const char * );
00202 OGRLayerAttrIndex *GetIndex() { return m_poAttrIndex; }
00203
00204 protected:
00205 OGRStyleTable *m_poStyleTable;
00206 OGRFeatureQuery *m_poAttrQuery;
00207 char *m_pszAttrQueryString;
00208 OGRLayerAttrIndex *m_poAttrIndex;
00209
00210 int m_nRefCount;
00211
00212 GIntBig m_nFeaturesRead;
00213 };
00214
00215
00216
00217
00218
00238 class CPL_DLL OGRDataSource : public GDALDataset
00239 {
00240 public:
00241 OGRDataSource();
00242
00243 virtual const char *GetName() OGR_DEPRECATED("Use GDALDataset class instead") = 0;
00244
00245 static void DestroyDataSource( OGRDataSource * ) OGR_DEPRECATED("Use GDALDataset class instead");
00246 };
00247
00248
00249
00250
00251
00270 class CPL_DLL OGRSFDriver : public GDALDriver
00271 {
00272 public:
00273 virtual ~OGRSFDriver();
00274
00275 virtual const char *GetName() OGR_DEPRECATED("Use GDALDriver class instead") = 0;
00276
00277 virtual OGRDataSource *Open( const char *pszName, int bUpdate=FALSE ) OGR_DEPRECATED("Use GDALDriver class instead") = 0;
00278
00279 virtual int TestCapability( const char *pszCap ) OGR_DEPRECATED("Use GDALDriver class instead") = 0;
00280
00281 virtual OGRDataSource *CreateDataSource( const char *pszName,
00282 char ** = NULL ) OGR_DEPRECATED("Use GDALDriver class instead");
00283 virtual OGRErr DeleteDataSource( const char *pszName ) OGR_DEPRECATED("Use GDALDriver class instead");
00284 };
00285
00286
00287
00288
00289
00290
00304 class CPL_DLL OGRSFDriverRegistrar
00305 {
00306
00307 OGRSFDriverRegistrar();
00308 ~OGRSFDriverRegistrar();
00309
00310 static GDALDataset* OpenWithDriverArg(GDALDriver* poDriver,
00311 GDALOpenInfo* poOpenInfo);
00312 static GDALDataset* CreateVectorOnly( GDALDriver* poDriver,
00313 const char * pszName,
00314 char ** papszOptions );
00315 static CPLErr DeleteDataSource( GDALDriver* poDriver,
00316 const char * pszName );
00317
00318 public:
00319
00320 static OGRSFDriverRegistrar *GetRegistrar() OGR_DEPRECATED("Use GDALDriverManager class instead");
00321
00322 void RegisterDriver( OGRSFDriver * poDriver ) OGR_DEPRECATED("Use GDALDriverManager class instead");
00323
00324 int GetDriverCount( void ) OGR_DEPRECATED("Use GDALDriverManager class instead");
00325 GDALDriver *GetDriver( int iDriver ) OGR_DEPRECATED("Use GDALDriverManager class instead");
00326 GDALDriver *GetDriverByName( const char * ) OGR_DEPRECATED("Use GDALDriverManager class instead");
00327
00328 int GetOpenDSCount() OGR_DEPRECATED("Use GDALDriverManager class instead");
00329 OGRDataSource *GetOpenDS( int ) OGR_DEPRECATED("Use GDALDriverManager class instead");
00330 };
00331
00332
00333
00334
00335 CPL_C_START
00336 void CPL_DLL OGRRegisterAll();
00337 void OGRRegisterAllInternal();
00338
00339 void CPL_DLL RegisterOGRFileGDB();
00340 void CPL_DLL RegisterOGRShape();
00341 void CPL_DLL RegisterOGRNTF();
00342 void CPL_DLL RegisterOGRFME();
00343 void CPL_DLL RegisterOGRSDTS();
00344 void CPL_DLL RegisterOGRTiger();
00345 void CPL_DLL RegisterOGRS57();
00346 void CPL_DLL RegisterOGRTAB();
00347 void CPL_DLL RegisterOGRMIF();
00348 void CPL_DLL RegisterOGROGDI();
00349 void CPL_DLL RegisterOGRODBC();
00350 void CPL_DLL RegisterOGRWAsP();
00351 void CPL_DLL RegisterOGRPG();
00352 void CPL_DLL RegisterOGRMSSQLSpatial();
00353 void CPL_DLL RegisterOGRMySQL();
00354 void CPL_DLL RegisterOGROCI();
00355 void CPL_DLL RegisterOGRDGN();
00356 void CPL_DLL RegisterOGRGML();
00357 void CPL_DLL RegisterOGRLIBKML();
00358 void CPL_DLL RegisterOGRKML();
00359 void CPL_DLL RegisterOGRGeoJSON();
00360 void CPL_DLL RegisterOGRAVCBin();
00361 void CPL_DLL RegisterOGRAVCE00();
00362 void CPL_DLL RegisterOGRREC();
00363 void CPL_DLL RegisterOGRMEM();
00364 void CPL_DLL RegisterOGRVRT();
00365 void CPL_DLL RegisterOGRDODS();
00366 void CPL_DLL RegisterOGRSQLite();
00367 void CPL_DLL RegisterOGRCSV();
00368 void CPL_DLL RegisterOGRILI1();
00369 void CPL_DLL RegisterOGRILI2();
00370 void CPL_DLL RegisterOGRGRASS();
00371 void CPL_DLL RegisterOGRPGeo();
00372 void CPL_DLL RegisterOGRDXFDWG();
00373 void CPL_DLL RegisterOGRDXF();
00374 void CPL_DLL RegisterOGRDWG();
00375 void CPL_DLL RegisterOGRSDE();
00376 void CPL_DLL RegisterOGRIDB();
00377 void CPL_DLL RegisterOGRGMT();
00378 void CPL_DLL RegisterOGRBNA();
00379 void CPL_DLL RegisterOGRGPX();
00380 void CPL_DLL RegisterOGRGeoconcept();
00381 void CPL_DLL RegisterOGRIngres();
00382 void CPL_DLL RegisterOGRXPlane();
00383 void CPL_DLL RegisterOGRNAS();
00384 void CPL_DLL RegisterOGRGeoRSS();
00385 void CPL_DLL RegisterOGRGTM();
00386 void CPL_DLL RegisterOGRVFK();
00387 void CPL_DLL RegisterOGRPGDump();
00388 void CPL_DLL RegisterOGROSM();
00389 void CPL_DLL RegisterOGRGPSBabel();
00390 void CPL_DLL RegisterOGRSUA();
00391 void CPL_DLL RegisterOGROpenAir();
00392 void CPL_DLL RegisterOGRPDS();
00393 void CPL_DLL RegisterOGRWFS();
00394 void CPL_DLL RegisterOGRSOSI();
00395 void CPL_DLL RegisterOGRHTF();
00396 void CPL_DLL RegisterOGRAeronavFAA();
00397 void CPL_DLL RegisterOGRGeomedia();
00398 void CPL_DLL RegisterOGRMDB();
00399 void CPL_DLL RegisterOGREDIGEO();
00400 void CPL_DLL RegisterOGRGFT();
00401 void CPL_DLL RegisterOGRGME();
00402 void CPL_DLL RegisterOGRSVG();
00403 void CPL_DLL RegisterOGRCouchDB();
00404 void CPL_DLL RegisterOGRCloudant();
00405 void CPL_DLL RegisterOGRIdrisi();
00406 void CPL_DLL RegisterOGRARCGEN();
00407 void CPL_DLL RegisterOGRSEGUKOOA();
00408 void CPL_DLL RegisterOGRSEGY();
00409 void CPL_DLL RegisterOGRXLS();
00410 void CPL_DLL RegisterOGRODS();
00411 void CPL_DLL RegisterOGRXLSX();
00412 void CPL_DLL RegisterOGRElastic();
00413 void CPL_DLL RegisterOGRGeoPackage();
00414 void CPL_DLL RegisterOGRWalk();
00415 void CPL_DLL RegisterOGRCartoDB();
00416 void CPL_DLL RegisterOGRSXF();
00417 void CPL_DLL RegisterOGROpenFileGDB();
00418 void CPL_DLL RegisterOGRSelafin();
00419 void CPL_DLL RegisterOGRJML();
00420 void CPL_DLL RegisterOGRPLSCENES();
00421 void CPL_DLL RegisterOGRCSW();
00422 CPL_C_END
00423
00424
00425 #endif