32 #ifndef GDAL_PRIV_H_INCLUDED
33 #define GDAL_PRIV_H_INCLUDED
61 #include "gdal_frmts.h"
66 #include "cpl_multiproc.h"
67 #include "cpl_atomic_ops.h"
72 #define GMO_VALID 0x0001
73 #define GMO_IGNORE_UNIMPLEMENTED 0x0002
74 #define GMO_SUPPORT_MD 0x0004
75 #define GMO_SUPPORT_MDMD 0x0008
76 #define GMO_MD_DIRTY 0x0010
77 #define GMO_PAM_CLASS 0x0020
86 char **papszDomainList;
93 int XMLInit(
CPLXMLNode *psMetadata,
int bMerge );
96 char **GetDomainList() {
return papszDomainList; }
98 char **GetMetadata(
const char * pszDomain =
"" );
99 CPLErr SetMetadata(
char ** papszMetadata,
100 const char * pszDomain =
"" );
101 const char *GetMetadataItem(
const char * pszName,
102 const char * pszDomain =
"" );
103 CPLErr SetMetadataItem(
const char * pszName,
104 const char * pszValue,
105 const char * pszDomain =
"" );
129 char **BuildMetadataDomainList(
char** papszList,
int bCheckNonEmpty, ...) CPL_NULL_TERMINATED;
136 void SetMOFlags(
int nFlagsIn);
138 virtual const char *GetDescription()
const;
139 virtual void SetDescription(
const char * );
141 virtual char **GetMetadataDomainList();
143 virtual char **GetMetadata(
const char * pszDomain =
"" );
144 virtual CPLErr SetMetadata(
char ** papszMetadata,
145 const char * pszDomain =
"" );
146 virtual const char *GetMetadataItem(
const char * pszName,
147 const char * pszDomain =
"" );
148 virtual CPLErr SetMetadataItem(
const char * pszName,
149 const char * pszValue,
150 const char * pszDomain =
"" );
176 bool bCheckedForOverviews;
180 char **papszInitSiblingFiles;
186 void Initialize(
GDALDataset *poDSIn,
const char *pszName = NULL,
187 char **papszSiblingFiles = NULL,
188 int bNameIsOVR = FALSE );
190 void TransferSiblingFiles(
char** papszSiblingFiles);
198 int GetOverviewCount(
int);
202 const char * pszResampling,
203 int nOverviews,
int * panOverviewList,
204 int nBands,
int * panBandList,
205 GDALProgressFunc pfnProgress,
206 void *pProgressData );
208 CPLErr BuildOverviewsSubDataset(
const char * pszPhysicalFile,
209 const char * pszResampling,
210 int nOverviews,
int * panOverviewList,
211 int nBands,
int * panBandList,
212 GDALProgressFunc pfnProgress,
213 void *pProgressData );
215 CPLErr CleanOverviews();
221 int GetMaskFlags(
int nBand );
223 int HaveMaskFile(
char **papszSiblings = NULL,
224 const char *pszBasename = NULL );
226 char** GetSiblingFiles() {
return papszInitSiblingFiles; }
240 bool bHasGotSiblingFiles;
241 char **papszSiblingFiles;
242 int nHeaderBytesTried;
246 char **papszSiblingFiles = NULL );
250 char** papszOpenOptions;
263 int TryToIngest(
int nBytes);
264 char **GetSiblingFiles();
265 char **StealSiblingFiles();
266 bool AreSiblingFilesLoaded()
const;
282 typedef struct GDALSQLParseInfo GDALSQLParseInfo;
284 #ifdef DETECT_OLD_IRASTERIO
285 typedef void signature_changed;
288 #ifdef GDAL_COMPILATION
289 #define OPTIONAL_OUTSIDE_GDAL(val)
291 #define OPTIONAL_OUTSIDE_GDAL(val) = val
299 unsigned int nOpenFlags,
300 const char*
const* papszAllowedDrivers,
301 const char*
const* papszOpenOptions,
302 const char*
const* papszSiblingFiles );
310 void AddToDatasetOpenList();
312 void Init(
int bForceCachedIO);
327 GByte bForceCachedIO;
330 GByte bSuppressOnClose;
335 void RasterInitialize(
int,
int );
340 virtual CPLErr IBuildOverviews(
const char *,
int,
int *,
341 int,
int *, GDALProgressFunc,
void * );
343 #ifdef DETECT_OLD_IRASTERIO
344 virtual signature_changed IRasterIO(
GDALRWFlag,
int,
int,
int,
int,
346 int,
int *,
int,
int,
int ) {};
349 virtual CPLErr IRasterIO(
GDALRWFlag,
int,
int,
int,
int,
354 CPLErr BlockBasedRasterIO(
GDALRWFlag,
int,
int,
int,
int,
358 void BlockBasedFlushCache();
361 int nXOff,
int nYOff,
int nXSize,
int nYSize,
362 void * pData,
int nBufXSize,
int nBufYSize,
364 int nBandCount,
int *panBandMap,
370 int nXOff,
int nYOff,
int nXSize,
int nYSize,
371 void * pData,
int nBufXSize,
int nBufYSize,
373 int nBandCount,
int *panBandMap,
378 CPLErr ValidateRasterIOOrAdviseReadParameters(
379 const char* pszCallingFunc,
380 int* pbStopProcessingOnCENone,
381 int nXOff,
int nYOff,
int nXSize,
int nYSize,
382 int nBufXSize,
int nBufYSize,
383 int nBandCount,
int *panBandMap);
385 CPLErr TryOverviewRasterIO(
GDALRWFlag eRWFlag,
386 int nXOff,
int nYOff,
int nXSize,
int nYSize,
387 void * pData,
int nBufXSize,
int nBufYSize,
389 int nBandCount,
int *panBandMap,
395 virtual int CloseDependentDatasets();
397 int ValidateLayerCreationOptions(
const char*
const* papszLCO );
399 char **papszOpenOptions;
406 void LeaveReadWrite();
408 void TemporarilyDropReadWriteLock();
409 void ReacquireReadWriteLock();
411 void DisableReadWriteMutex();
419 int GetRasterXSize(
void );
420 int GetRasterYSize(
void );
421 int GetRasterCount(
void );
426 virtual const char *GetProjectionRef(
void);
427 virtual CPLErr SetProjection(
const char * );
429 virtual CPLErr GetGeoTransform(
double * );
430 virtual CPLErr SetGeoTransform(
double * );
433 char **papszOptions=NULL );
435 virtual void *GetInternalHandle(
const char * );
437 virtual char **GetFileList(
void);
439 virtual const char* GetDriverName();
441 virtual int GetGCPCount();
442 virtual const char *GetGCPProjection();
444 virtual CPLErr SetGCPs(
int nGCPCount,
const GDAL_GCP *pasGCPList,
445 const char *pszGCPProjection );
447 virtual CPLErr
AdviseRead(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
448 int nBufXSize,
int nBufYSize,
450 int nBandCount,
int *panBandList,
451 char **papszOptions );
456 BeginAsyncReader(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
457 void *pBuf,
int nBufXSize,
int nBufYSize,
459 int nBandCount,
int* panBandMap,
460 int nPixelSpace,
int nLineSpace,
int nBandSpace,
461 char **papszOptions);
469 OPTIONAL_OUTSIDE_GDAL(NULL)
471 ) CPL_WARN_UNUSED_RESULT;
480 void MarkSuppressOnClose() { bSuppressOnClose = TRUE; }
482 char **GetOpenOptions() {
return papszOpenOptions; }
484 static GDALDataset **GetOpenDatasets(
int *pnDatasetCount );
487 int,
int *, GDALProgressFunc,
void * );
489 void ReportError(CPLErr eErrClass, CPLErrorNum err_no,
const char *fmt, ...) CPL_PRINT_FUNC_FORMAT (4, 5);
492 void *m_hPrivateData;
496 const char *pszDialect,
501 virtual int GetLayerCount();
503 virtual OGRLayer *GetLayerByName(
const char *);
504 virtual OGRErr DeleteLayer(
int);
506 virtual int TestCapability(
const char * );
508 virtual OGRLayer *CreateLayer(
const char *pszName,
511 char ** papszOptions = NULL );
513 const char *pszNewName,
514 char **papszOptions = NULL );
517 virtual void SetStyleTableDirectly(
OGRStyleTable *poStyleTable );
521 virtual OGRLayer * ExecuteSQL(
const char *pszStatement,
523 const char *pszDialect );
524 virtual void ReleaseResultSet(
OGRLayer * poResultsSet );
526 int GetRefCount()
const;
527 int GetSummaryRefCount()
const;
530 virtual OGRErr StartTransaction(
int bForce=FALSE);
531 virtual OGRErr CommitTransaction();
532 virtual OGRErr RollbackTransaction();
534 static int IsGenericSQLDialect(
const char* pszDialect);
537 GDALSQLParseInfo* BuildParseInfo(
swq_select* psSelectInfo,
539 void DestroyParseInfo(GDALSQLParseInfo* psParseInfo );
540 OGRLayer * ExecuteSQL(
const char *pszStatement,
542 const char *pszDialect,
547 virtual OGRLayer *ICreateLayer(
const char *pszName,
550 char ** papszOptions = NULL );
552 OGRErr ProcessSQLCreateIndex(
const char * );
553 OGRErr ProcessSQLDropIndex(
const char * );
554 OGRErr ProcessSQLDropTable(
const char * );
555 OGRErr ProcessSQLAlterTableAddColumn(
const char * );
556 OGRErr ProcessSQLAlterTableDropColumn(
const char * );
557 OGRErr ProcessSQLAlterTableAlterColumn(
const char * );
558 OGRErr ProcessSQLAlterTableRenameColumn(
const char * );
581 volatile int nLockCount;
598 void Detach_unlocked(
void );
599 void Touch_unlocked(
void );
601 void RecycleFor(
int nXOffIn,
int nYOffIn );
608 CPLErr Internalize(
void );
610 void MarkDirty(
void );
611 void MarkClean(
void );
612 int AddLock(
void ) {
return CPLAtomicInc(&nLockCount); }
613 int DropLock(
void ) {
return CPLAtomicDec(&nLockCount); }
619 int GetXOff()
const {
return nXOff; }
620 int GetYOff()
const {
return nYOff; }
621 int GetXSize()
const {
return nXSize; }
622 int GetYSize()
const {
return nYSize; }
623 int GetDirty()
const {
return bDirty; }
625 void *GetDataRef(
void ) {
return pData; }
626 int GetBlockSize()
const {
630 int DropLockForRemovalFromStorage();
636 static void FlushDirtyBlocks();
637 static int FlushCacheBlock(
int bDirtyBlocksOnly = FALSE);
638 static void Verify();
643 static void DumpAll();
647 static void DestroyRBMutex();
663 std::vector<GDALColorEntry> aoEntries;
674 int GetColorEntryCount()
const;
698 CPLMutex *hCondMutex;
699 volatile int nKeepAliveCounter;
704 void FreeDanglingBlocks();
705 void UnreferenceBlockBase();
706 void WaitKeepAliveCounter();
715 virtual bool Init() = 0;
716 virtual bool IsInitOK() = 0;
717 virtual CPLErr FlushCache() = 0;
720 int nYBlockYOff ) = 0;
722 virtual CPLErr FlushBlock(
int nXBlockOff,
int nYBlockOff,
723 int bWriteDirtyBlock ) = 0;
738 friend class GDALArrayBandBlockCache;
739 friend class GDALHashSetBandBlockCache;
742 CPLErr eFlushBlockErr;
745 void SetFlushBlockErr( CPLErr eErr );
748 void Init(
int bForceCachedIO);
764 int nBlocksPerColumn;
773 void InvalidateMaskBand();
779 CPLErr RasterIOResampled(
GDALRWFlag,
int,
int,
int,
int,
784 void LeaveReadWrite();
787 virtual CPLErr IReadBlock(
int,
int,
void * ) = 0;
788 virtual CPLErr IWriteBlock(
int,
int,
void * );
790 #ifdef DETECT_OLD_IRASTERIO
791 virtual signature_changed IRasterIO(
GDALRWFlag,
int,
int,
int,
int,
796 virtual CPLErr IRasterIO(
GDALRWFlag,
int,
int,
int,
int,
799 CPLErr OverviewRasterIO(
GDALRWFlag,
int,
int,
int,
int,
803 CPLErr TryOverviewRasterIO(
GDALRWFlag eRWFlag,
804 int nXOff,
int nYOff,
int nXSize,
int nYSize,
805 void * pData,
int nBufXSize,
int nBufYSize,
814 GDALRasterBlock *TryGetLockedBlockRef(
int nXBlockOff,
int nYBlockYOff );
829 void GetBlockSize(
int *,
int * );
832 CPLErr RasterIO(
GDALRWFlag,
int,
int,
int,
int,
836 OPTIONAL_OUTSIDE_GDAL(NULL)
838 ) CPL_WARN_UNUSED_RESULT;
839 CPLErr ReadBlock(
int,
int,
void * ) CPL_WARN_UNUSED_RESULT;
841 CPLErr WriteBlock(
int,
int,
void * ) CPL_WARN_UNUSED_RESULT;
844 int bJustInitialize = FALSE ) CPL_WARN_UNUSED_RESULT;
845 CPLErr FlushBlock(
int,
int,
int bWriteDirtyBlock = TRUE );
847 unsigned char* GetIndexColorTranslationTo(
GDALRasterBand* poReferenceBand,
848 unsigned char* pTranslationTable = NULL,
849 int* pApproximateMatching = NULL);
853 virtual CPLErr FlushCache();
854 virtual char **GetCategoryNames();
855 virtual double GetNoDataValue(
int *pbSuccess = NULL );
856 virtual double GetMinimum(
int *pbSuccess = NULL );
857 virtual double GetMaximum(
int *pbSuccess = NULL );
858 virtual double GetOffset(
int *pbSuccess = NULL );
859 virtual double GetScale(
int *pbSuccess = NULL );
860 virtual const char *GetUnitType();
863 virtual CPLErr Fill(
double dfRealValue,
double dfImaginaryValue = 0);
865 virtual CPLErr SetCategoryNames(
char ** );
866 virtual CPLErr SetNoDataValue(
double );
867 virtual CPLErr DeleteNoDataValue();
870 virtual CPLErr SetOffset(
double );
871 virtual CPLErr SetScale(
double );
872 virtual CPLErr SetUnitType(
const char * );
874 virtual CPLErr GetStatistics(
int bApproxOK,
int bForce,
875 double *pdfMin,
double *pdfMax,
876 double *pdfMean,
double *padfStdDev );
877 virtual CPLErr ComputeStatistics(
int bApproxOK,
878 double *pdfMin,
double *pdfMax,
879 double *pdfMean,
double *pdfStdDev,
880 GDALProgressFunc,
void *pProgressData );
881 virtual CPLErr SetStatistics(
double dfMin,
double dfMax,
882 double dfMean,
double dfStdDev );
883 virtual CPLErr ComputeRasterMinMax(
int,
double* );
885 virtual int HasArbitraryOverviews();
886 virtual int GetOverviewCount();
889 virtual CPLErr BuildOverviews(
const char *,
int,
int *,
890 GDALProgressFunc,
void * );
892 virtual CPLErr AdviseRead(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
893 int nBufXSize,
int nBufYSize,
896 virtual CPLErr GetHistogram(
double dfMin,
double dfMax,
897 int nBuckets, GUIntBig * panHistogram,
898 int bIncludeOutOfRange,
int bApproxOK,
899 GDALProgressFunc,
void *pProgressData );
901 virtual CPLErr GetDefaultHistogram(
double *pdfMin,
double *pdfMax,
902 int *pnBuckets, GUIntBig ** ppanHistogram,
904 GDALProgressFunc,
void *pProgressData);
905 virtual CPLErr SetDefaultHistogram(
double dfMin,
double dfMax,
906 int nBuckets, GUIntBig *panHistogram );
912 virtual int GetMaskFlags();
913 virtual CPLErr CreateMaskBand(
int nFlagsIn );
917 GIntBig *pnLineSpace,
918 char **papszOptions ) CPL_WARN_UNUSED_RESULT;
920 void ReportError(CPLErr eErrClass, CPLErrorNum err_no,
const char *fmt, ...) CPL_PRINT_FUNC_FORMAT (4, 5);
933 virtual CPLErr IReadBlock(
int,
int,
void * );
949 double dfNoDataValue;
953 virtual CPLErr IReadBlock(
int,
int,
void * );
954 virtual CPLErr IRasterIO(
GDALRWFlag,
int,
int,
int,
int,
969 double *padfNodataValues;
972 virtual CPLErr IReadBlock(
int,
int,
void * );
989 virtual CPLErr IReadBlock(
int,
int,
void * );
990 virtual CPLErr IRasterIO(
GDALRWFlag,
int,
int,
int,
int,
1041 const char * pszValue,
1042 const char * pszDomain =
"" );
1048 int nXSize,
int nYSize,
int nBands,
1049 GDALDataType eType,
char ** papszOptions ) CPL_WARN_UNUSED_RESULT;
1051 CPLErr Delete(
const char * pszName );
1052 CPLErr Rename(
const char * pszNewName,
1053 const char * pszOldName );
1054 CPLErr CopyFiles(
const char * pszNewName,
1055 const char * pszOldName );
1059 GDALProgressFunc pfnProgress,
1060 void * pProgressData ) CPL_WARN_UNUSED_RESULT;
1070 int nXSize,
int nYSize,
int nBands,
1072 char ** papszOptions );
1074 CPLErr (*pfnDelete)(
const char * pszName );
1078 GDALProgressFunc pfnProgress,
1079 void * pProgressData );
1094 CPLErr (*pfnRename)(
const char * pszNewName,
1095 const char * pszOldName );
1096 CPLErr (*pfnCopyFiles)(
const char * pszNewName,
1097 const char * pszOldName );
1102 const char * pszName,
1103 char ** papszOptions );
1105 const char * pszName );
1112 GDALProgressFunc pfnProgress,
1113 void * pProgressData ) CPL_WARN_UNUSED_RESULT;
1114 static CPLErr DefaultCopyMasks(
GDALDataset *poSrcDS,
1117 static CPLErr QuietDelete(
const char * pszName );
1119 CPLErr DefaultRename(
const char * pszNewName,
1120 const char * pszOldName );
1121 CPLErr DefaultCopyFiles(
const char * pszNewName,
1122 const char * pszOldName );
1142 std::map<CPLString, GDALDriver*> oMapNameToDrivers;
1144 GDALDriver *GetDriver_unlocked(
int iDriver )
1145 {
return (iDriver >= 0 && iDriver < nDrivers) ? papoDrivers[iDriver] : NULL; }
1147 GDALDriver *GetDriverByName_unlocked(
const char * pszName )
1154 int GetDriverCount(
void );
1162 void AutoLoadDrivers();
1163 void AutoSkipDrivers();
1202 int GetXOffset()
const {
return nXOff; }
1203 int GetYOffset()
const {
return nYOff; }
1204 int GetXSize()
const {
return nXSize; }
1205 int GetYSize()
const {
return nYSize; }
1206 void * GetBuffer() {
return pBuf;}
1207 int GetBufferXSize()
const {
return nBufXSize; }
1208 int GetBufferYSize()
const {
return nBufYSize; }
1209 GDALDataType GetBufferType()
const {
return eBufType; }
1210 int GetBandCount()
const {
return nBandCount; }
1211 int* GetBandMap() {
return panBandMap; }
1212 int GetPixelSpace()
const {
return nPixelSpace; }
1213 int GetLineSpace()
const {
return nLineSpace; }
1214 int GetBandSpace()
const {
return nBandSpace; }
1217 GetNextUpdatedRegion(
double dfTimeout,
1218 int* pnBufXOff,
int* pnBufYOff,
1219 int* pnBufXSize,
int* pnBufYSize) = 0;
1220 virtual int LockBuffer(
double dfTimeout = -1.0 );
1221 virtual void UnlockBuffer();
1233 const char * pszResampling,
1234 GDALProgressFunc pfnProgress,
void * pProgressData );
1236 typedef CPLErr (*GDALResampleFunction)
1237 (
double dfXRatioDstToSrc,
1238 double dfYRatioDstToSrc,
1243 GByte * pabyChunkNodataMask,
1244 int nChunkXOff,
int nChunkXSize,
1245 int nChunkYOff,
int nChunkYSize,
1246 int nDstXOff,
int nDstXOff2,
1247 int nDstYOff,
int nDstYOff2,
1249 const char * pszResampling,
1250 int bHasNoData,
float fNoDataValue,
1254 GDALResampleFunction GDALGetResampleFunction(
const char* pszResampling,
1257 #ifdef GDAL_ENABLE_RESAMPLING_MULTIBAND
1258 typedef CPLErr (*GDALResampleFunctionMultiBands)
1259 (
double dfXRatioDstToSrc,
1260 double dfYRatioDstToSrc,
1264 void * pChunk,
int nBands,
1265 GByte * pabyChunkNodataMask,
1266 int nChunkXOff,
int nChunkXSize,
1267 int nChunkYOff,
int nChunkYSize,
1268 int nDstXOff,
int nDstXOff2,
1269 int nDstYOff,
int nDstYOff2,
1271 const char * pszResampling,
1272 int bHasNoData,
float fNoDataValue,
1276 GDALResampleFunctionMultiBands GDALGetResampleFunctionMultiBands(
const char* pszResampling,
1280 GDALDataType GDALGetOvrWorkDataType(
const char* pszResampling,
1286 HFAAuxBuildOverviews(
const char *pszOvrFilename,
GDALDataset *poParentDS,
1288 int nBands,
int *panBandList,
1289 int nNewOverviews,
int *panNewOverviewList,
1290 const char *pszResampling,
1291 GDALProgressFunc pfnProgress,
1292 void *pProgressData );
1295 GTIFFBuildOverviews(
const char * pszFilename,
1297 int nOverviews,
int * panOverviewList,
1298 const char * pszResampling,
1299 GDALProgressFunc pfnProgress,
void * pProgressData );
1302 GDALDefaultBuildOverviews(
GDALDataset *hSrcDS,
const char * pszBasename,
1303 const char * pszResampling,
1304 int nOverviews,
int * panOverviewList,
1305 int nBands,
int * panBandList,
1306 GDALProgressFunc pfnProgress,
void * pProgressData);
1309 int &nXOff,
int &nYOff,
1310 int &nXSize,
int &nYSize,
1311 int nBufXSize,
int nBufYSize) CPL_WARN_DEPRECATED(
"Use GDALBandGetBestOverviewLevel2 instead");
1312 int CPL_DLL GDALBandGetBestOverviewLevel2(
GDALRasterBand* poBand,
1313 int &nXOff,
int &nYOff,
1314 int &nXSize,
int &nYSize,
1315 int nBufXSize,
int nBufYSize,
1318 int CPL_DLL GDALOvLevelAdjust(
int nOvLevel,
int nXSize ) CPL_WARN_DEPRECATED(
"Use GDALOvLevelAdjust2 instead");
1319 int CPL_DLL GDALOvLevelAdjust2(
int nOvLevel,
int nXSize,
int nYSize );
1320 int CPL_DLL GDALComputeOvFactor(
int nOvrXSize,
int nRasterXSize,
1321 int nOvrYSize,
int nRasterYSize );
1324 GDALFindAssociatedAuxFile(
const char *pszBasefile,
GDALAccess eAccess,
1331 CPLErr CPL_DLL GDALParseGMLCoverage(
CPLXMLNode *psTree,
1332 int *pnXSize,
int *pnYSize,
1333 double *padfGeoTransform,
1334 char **ppszProjection );
1346 #define ARE_REAL_EQUAL(dfVal1, dfVal2) \
1347 (dfVal1 == dfVal2 || fabs(dfVal1 - dfVal2) < 1e-10 || (dfVal2 != 0 && fabs(1 - dfVal1 / dfVal2) < 1e-10 ))
1352 int CPL_DLL GDALReadWorldFile2(
const char *pszBaseFilename,
const char *pszExtension,
1353 double *padfGeoTransform,
char** papszSiblingFiles,
1354 char** ppszWorldFileNameOut);
1355 int GDALReadTabFile2(
const char * pszBaseFilename,
1356 double *padfGeoTransform,
char **ppszWKT,
1357 int *pnGCPCount,
GDAL_GCP **ppasGCPs,
1358 char** papszSiblingFiles,
char** ppszTabFileNameOut );
1365 void GDALNullifyOpenDatasetsList();
1366 CPLMutex** GDALGetphDMMutex();
1367 CPLMutex** GDALGetphDLMutex();
1368 void GDALNullifyProxyPoolSingleton();
1370 void GDALSetResponsiblePIDForCurrentThread(GIntBig responsiblePID);
1371 GIntBig GDALGetResponsiblePIDForCurrentThread();
1374 char **papszSiblingFiles,
int nFlags );
1376 CPLErr EXIFExtractMetadata(
char**& papszMetadata,
1377 void *fpL,
int nOffset,
1378 int bSwabflag,
int nTIFFHEADER,
1379 int& nExifOffset,
int& nInterOffset,
int& nGPSOffset);
1382 const char*
const* papszOptionOptions);
1383 int GDALValidateOptions(
const char* pszOptionList,
1384 const char*
const* papszOptionsToValidate,
1385 const char* pszErrorMessageOptionType,
1386 const char* pszErrorMessageContainerName);
1392 int nXSize,
int nYSize,
1393 int nBufXSize,
int nBufYSize);
1397 int bThisLevelOnly,
int bOwnDS);
1399 #define DIV_ROUND_UP(a, b) ( ((a) % (b)) == 0 ? ((a) / (b)) : (((a) / (b)) + 1) )
1403 #define GDALSTAT_APPROX_NUMSAMPLES 2500
1408 void GDALSerializeGCPListToXML(
CPLXMLNode* psParentNode,
1411 const char* pszGCPProjection );
1412 void GDALDeserializeGCPListFromXML(
CPLXMLNode* psGCPList,
1415 char** ppszGCPProjection );
1418 void GDALSerializeOpenOptionsToXML(
CPLXMLNode* psParentNode,
char** papszOpenOptions);
1419 char** GDALDeserializeOpenOptionsFromXML(
CPLXMLNode* psParentNode );
1421 int GDALCanFileAcceptSidecarFile(
const char* pszFilename);
The GDALRasterAttributeTable (or RAT) class is used to encapsulate a table used to provide attribute ...
Definition: gdal_rat.h:46
GDALDatasetH GDALOpenEx(const char *pszFilename, unsigned int nOpenFlags, const char *const *papszAllowedDrivers, const char *const *papszOpenOptions, const char *const *papszSiblingFiles) CPL_WARN_UNUSED_RESULT
Open a raster or vector file as a GDALDataset.
Definition: gdaldataset.cpp:2618
virtual CPLErr AdviseRead(int nXOff, int nYOff, int nXSize, int nYSize, int nBufXSize, int nBufYSize, GDALDataType eDT, char **papszOptions)
Advise driver of upcoming read requests.
Definition: gdalrasterband.cpp:3390
GDALDataType
Definition: gdal.h:57
Definition: gdal_priv.h:967
Identify could not determine if the file is recognized or not by the probed driver.
Definition: gdal_priv.h:1011
Document node structure.
Definition: cpl_minixml.h:65
virtual GDALRasterBand * GetMaskBand()
Return the mask band associated with the band.
Definition: gdalrasterband.cpp:4618
Definitions for CPL mini XML Parser/Serializer.
int GDALCheckBandCount(int nBands, int bIsZeroAllowed)
Return TRUE if the band count is valid.
Definition: gdal_misc.cpp:3178
Definition: gdal_proxy.h:104
int GDALCheckDatasetDimensions(int nXSize, int nYSize)
Return TRUE if the dataset dimensions are valid.
Definition: gdal_misc.cpp:3154
This manages how a raster band store its cached block.
Definition: gdal_priv.h:690
void ReportError(CPLErr eErrClass, CPLErrorNum err_no, const char *fmt,...) CPL_PRINT_FUNC_FORMAT(4
Emits an error related to a raster band.
Definition: gdalrasterband.cpp:5144
GDALRIOResampleAlg
RasterIO() resampling method.
Definition: gdal.h:113
GDALRWFlag
Definition: gdal.h:104
CPLErr GDALRegenerateOverviewsMultiBand(int nBands, GDALRasterBand **papoSrcBands, int nOverviews, GDALRasterBand ***papapoOverviewBands, const char *pszResampling, GDALProgressFunc pfnProgress, void *pProgressData)
Variant of GDALRegenerateOverviews, specially dedicated for generating compressed pixel-interleaved o...
Definition: overview.cpp:2689
void * GDALDatasetH
Opaque type used for the C bindings of the C++ GDALDataset class.
Definition: gdal.h:230
Definition: gdal_priv.h:947
Color tuple.
Definition: gdal.h:925
A single raster block in the block cache.
Definition: gdal_priv.h:574
virtual int GetMaskFlags()
Return the status flags of the mask band associated with the band.
Definition: gdalrasterband.cpp:4852
Convenient string class based on std::string.
Definition: cpl_string.h:283
virtual CPLErr BuildOverviews(const char *, int, int *, GDALProgressFunc, void *)
Build raster overview(s)
Definition: gdalrasterband.cpp:2180
CPLErr RasterIO(GDALRWFlag, int, int, int, int, void *, int, int, GDALDataType, GSpacing, GSpacing, GDALRasterIOExtraArg *psExtraArg) CPL_WARN_UNUSED_RESULT
Read/write a region of image data for this band.
Definition: gdalrasterband.cpp:181
unknown type, non-standard
Definition: ogr_core.h:335
struct CPLVirtualMem CPLVirtualMem
Opaque type that represents a virtual memory mapping.
Definition: cpl_virtualmem.h:60
CPLErr BuildOverviews(const char *, int, int *, int, int *, GDALProgressFunc, void *)
Build raster overview(s)
Definition: gdaldataset.cpp:1415
Various convenience functions for working with strings and string lists.
Definition: gdal_priv.h:156
virtual CPLErr FlushCache()
Flush raster data cache.
Definition: gdalrasterband.cpp:849
GIntBig GSpacing
Type to express pixel, line or band spacing.
Definition: gdal.h:248
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:333
Public (C callable) GDAL entry points.
GDALAsyncStatusType
status of the asynchronous stream
Definition: gdal.h:85
Definition: gdal_proxy.h:44
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:104
GDALRasterBand * GetBand()
Accessor to source GDALRasterBand object.
Definition: gdal_priv.h:634
Definition: gdal_priv.h:238
Definition: gdal_priv.h:930
CPLString GDALFindAssociatedFile(const char *pszBasename, const char *pszExt, char **papszSiblingFiles, int nFlags)
Find file with alternate extension.
Definition: gdal_misc.cpp:967
String list class designed around our use of C "char**" string lists.
Definition: cpl_string.h:362
Identify determined the file is recognized by the probed driver.
Definition: gdal_priv.h:1015
GDALPaletteInterp
Definition: gdal.h:199
Core portability services for cross-platform OGR code.
virtual int CloseDependentDatasets()
Drop references to any other datasets referenced by this dataset.
Definition: gdaldataset.cpp:3280
virtual CPLErr CreateMaskBand(int nFlagsIn)
Adds a mask band to the dataset.
Definition: gdaldataset.cpp:2431
Various convenience functions for CPL.
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:129
void * GDALDriverH
Opaque type used for the C bindings of the C++ GDALDriver class.
Definition: gdal.h:236
void GDALClose(GDALDatasetH)
Close GDAL dataset.
Definition: gdaldataset.cpp:2973
Object with metadata.
Definition: gdal_priv.h:122
This class represents a layer of simple features, with access methods.
Definition: ogrsf_frmts.h:66
A single raster band (or channel).
Definition: gdal_priv.h:735
GDALAccess
Definition: gdal.h:98
Definition: gdal_priv.h:83
virtual CPLErr CreateMaskBand(int nFlagsIn)
Adds a mask band to the current band.
Definition: gdalrasterband.cpp:4925
This class represents a style table.
Definition: ogr_featurestyle.h:82
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:296
GDALAccess GetAccess()
Find out if we have update permission for this band.
Definition: gdalrasterband.cpp:1289
Class for managing the registration of file format drivers.
Definition: gdal_priv.h:1138
Definition: gdal_priv.h:983
CPLString & toupper(void)
Convert to upper case in place.
Definition: cplstring.cpp:298
GDALIdentifyEnum
Enumeration used by GDALDriver::pfnIdentify().
Definition: gdal_priv.h:1008
GDALColorInterp
Definition: gdal.h:173
int GDALGetDataTypeSizeBytes(GDALDataType)
Get data type size in bytes.
Definition: gdal_misc.cpp:204
virtual CPLErr SetMetadataItem(const char *pszName, const char *pszValue, const char *pszDomain="")
Set single metadata item.
Definition: gdalmajorobject.cpp:374
Identify determined the file is not recognized by the probed driver.
Definition: gdal_priv.h:1013
Format specific driver.
Definition: gdal_priv.h:1034
Definition: gdal_priv.h:659
Ground Control Point.
Definition: gdal.h:492
GDALDriverManager * GetGDALDriverManager(void)
Fetch the global GDAL driver manager.
Definition: gdaldrivermanager.cpp:75
Class used as a session object for asynchronous requests.
Definition: gdal_priv.h:1179