Go to the documentation of this file.
32 #ifndef GDAL_PRIV_H_INCLUDED
33 #define GDAL_PRIV_H_INCLUDED
50 class GDALProxyDataset;
51 class GDALProxyRasterBand;
61 #include "gdal_frmts.h"
66 #include "cpl_multiproc.h"
67 #include "cpl_atomic_ops.h"
80 #define GMO_VALID 0x0001
81 #define GMO_IGNORE_UNIMPLEMENTED 0x0002
82 #define GMO_SUPPORT_MD 0x0004
83 #define GMO_SUPPORT_MDMD 0x0008
84 #define GMO_MD_DIRTY 0x0010
85 #define GMO_PAM_CLASS 0x0020
93 class CPL_DLL GDALMultiDomainMetadata
96 char **papszDomainList;
100 GDALMultiDomainMetadata();
101 ~GDALMultiDomainMetadata();
103 int XMLInit(
CPLXMLNode *psMetadata,
int bMerge );
106 char **GetDomainList() {
return papszDomainList; }
108 char **GetMetadata(
const char * pszDomain =
"" );
109 CPLErr SetMetadata(
char ** papszMetadata,
110 const char * pszDomain =
"" );
111 const char *GetMetadataItem(
const char * pszName,
112 const char * pszDomain =
"" );
113 CPLErr SetMetadataItem(
const char * pszName,
114 const char * pszValue,
115 const char * pszDomain =
"" );
138 GDALMultiDomainMetadata oMDMD{};
142 char **BuildMetadataDomainList(
char** papszList,
148 int GetMOFlags()
const;
149 void SetMOFlags(
int nFlagsIn );
151 virtual const char *GetDescription()
const;
152 virtual void SetDescription(
const char * );
154 virtual char **GetMetadataDomainList();
156 virtual char **GetMetadata(
const char * pszDomain =
"" );
157 virtual CPLErr SetMetadata(
char ** papszMetadata,
158 const char * pszDomain =
"" );
159 virtual const char *GetMetadataItem(
const char * pszName,
160 const char * pszDomain =
"" );
161 virtual CPLErr SetMetadataItem(
const char * pszName,
162 const char * pszValue,
163 const char * pszDomain =
"" );
183 class CPL_DLL GDALDefaultOverviews
194 bool bCheckedForMask;
203 bool bCheckedForOverviews;
207 char **papszInitSiblingFiles;
210 GDALDefaultOverviews();
211 ~GDALDefaultOverviews();
213 void Initialize(
GDALDataset *poDSIn,
const char *pszName =
nullptr,
214 char **papszSiblingFiles =
nullptr,
215 int bNameIsOVR = FALSE );
217 void TransferSiblingFiles(
char** papszSiblingFiles );
225 int GetOverviewCount(
int nBand );
229 const char * pszResampling,
230 int nOverviews,
int * panOverviewList,
231 int nBands,
int * panBandList,
232 GDALProgressFunc pfnProgress,
233 void *pProgressData );
235 CPLErr BuildOverviewsSubDataset(
const char * pszPhysicalFile,
236 const char * pszResampling,
237 int nOverviews,
int * panOverviewList,
238 int nBands,
int * panBandList,
239 GDALProgressFunc pfnProgress,
240 void *pProgressData );
248 int GetMaskFlags(
int nBand );
250 int HaveMaskFile(
char **papszSiblings =
nullptr,
251 const char *pszBasename =
nullptr );
253 char** GetSiblingFiles() {
return papszInitSiblingFiles; }
267 bool bHasGotSiblingFiles;
268 char **papszSiblingFiles;
269 int nHeaderBytesTried;
273 const char *
const * papszSiblingFiles =
nullptr );
302 int TryToIngest(
int nBytes);
303 char **GetSiblingFiles();
304 char **StealSiblingFiles();
305 bool AreSiblingFilesLoaded()
const;
320 class swq_select_parse_options;
323 typedef struct GDALSQLParseInfo GDALSQLParseInfo;
327 #ifdef GDAL_COMPILATION
328 #define OPTIONAL_OUTSIDE_GDAL(val)
330 #define OPTIONAL_OUTSIDE_GDAL(val) = val
338 unsigned int nOpenFlags,
339 const char*
const* papszAllowedDrivers,
340 const char*
const* papszOpenOptions,
341 const char*
const* papszSiblingFiles );
345 friend class GDALDefaultOverviews;
346 friend class GDALProxyDataset;
349 CPL_INTERNAL
void AddToDatasetOpenList();
357 int nRasterXSize = 512;
358 int nRasterYSize = 512;
365 bool bForceCachedIO =
false;
366 bool bShared =
false;
367 bool bIsInternal =
true;
368 bool bSuppressOnClose =
false;
373 void RasterInitialize(
int,
int );
376 GDALDefaultOverviews oOvManager{};
378 virtual CPLErr IBuildOverviews(
const char *,
int,
int *,
379 int,
int *, GDALProgressFunc,
void * );
390 void BlockBasedFlushCache();
393 int nXOff,
int nYOff,
int nXSize,
int nYSize,
394 void * pData,
int nBufXSize,
int nBufYSize,
396 int nBandCount,
int *panBandMap,
402 int nXOff,
int nYOff,
int nXSize,
int nYSize,
403 void * pData,
int nBufXSize,
int nBufYSize,
405 int nBandCount,
int *panBandMap,
410 CPLErr ValidateRasterIOOrAdviseReadParameters(
411 const char* pszCallingFunc,
412 int* pbStopProcessingOnCENone,
413 int nXOff,
int nYOff,
int nXSize,
int nYSize,
414 int nBufXSize,
int nBufYSize,
415 int nBandCount,
int *panBandMap);
418 int nXOff,
int nYOff,
int nXSize,
int nYSize,
419 void * pData,
int nBufXSize,
int nBufYSize,
421 int nBandCount,
int *panBandMap,
427 void ShareLockWithParentDataset(
GDALDataset* poParentDataset);
430 virtual int CloseDependentDatasets();
432 int ValidateLayerCreationOptions(
const char*
const* papszLCO );
434 char **papszOpenOptions =
nullptr;
441 void LeaveReadWrite();
444 void TemporarilyDropReadWriteLock();
445 void ReacquireReadWriteLock();
447 void DisableReadWriteMutex();
456 int GetRasterXSize();
457 int GetRasterYSize();
458 int GetRasterCount();
470 class CPL_DLL Iterator
473 std::unique_ptr<Private> m_poPrivate;
476 Iterator(
const Iterator& oOther);
477 Iterator(Iterator&& oOther) noexcept;
480 Iterator& operator++();
481 bool operator!=(
const Iterator& it)
const;
486 const Iterator
begin()
const;
488 const Iterator
end()
const;
498 virtual void FlushCache(
void);
504 const char *GetProjectionRef(
void)
const;
505 CPLErr SetProjection(
const char * pszProjection );
507 virtual CPLErr GetGeoTransform(
double * padfTransform );
508 virtual CPLErr SetGeoTransform(
double * padfTransform );
511 char **papszOptions=
nullptr );
513 virtual void *GetInternalHandle(
const char * pszHandleName );
515 virtual char **GetFileList(
void);
517 virtual const char* GetDriverName();
520 virtual int GetGCPCount();
522 virtual CPLErr SetGCPs(
int nGCPCount,
const GDAL_GCP *pasGCPList,
526 const char *GetGCPProjection();
528 const char *pszGCPProjection );
530 virtual CPLErr AdviseRead(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
531 int nBufXSize,
int nBufYSize,
533 int nBandCount,
int *panBandList,
534 char **papszOptions );
536 virtual CPLErr CreateMaskBand(
int nFlagsIn );
539 BeginAsyncReader(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
540 void *pBuf,
int nBufXSize,
int nBufYSize,
542 int nBandCount,
int* panBandMap,
543 int nPixelSpace,
int nLineSpace,
int nBandSpace,
544 char **papszOptions);
552 OPTIONAL_OUTSIDE_GDAL(
nullptr)
565 int GetShared()
const;
576 static GDALDataset **GetOpenDatasets(
int *pnDatasetCount );
578 CPLErr BuildOverviews(
const char *,
int,
int *,
579 int,
int *, GDALProgressFunc,
void * );
583 char ** GetMetadata(const
char * pszDomain = "") override;
587 CPLErr SetMetadata(
char ** papszMetadata,
588 const char * pszDomain )
override;
589 const char *GetMetadataItem(
const char * pszName,
590 const char * pszDomain )
override;
591 CPLErr SetMetadataItem(
const char * pszName,
592 const char * pszValue,
593 const char * pszDomain )
override;
596 char **GetMetadataDomainList()
override;
614 unsigned int nOpenFlags = 0,
615 const char*
const* papszAllowedDrivers =
nullptr,
616 const char*
const* papszOpenOptions =
nullptr,
617 const char*
const* papszSiblingFiles =
nullptr )
619 return FromHandle(
GDALOpenEx(pszFilename, nOpenFlags,
637 Private *m_poPrivate;
639 CPL_INTERNAL
OGRLayer* BuildLayerFromSelectInfo(swq_select* psSelectInfo,
641 const char *pszDialect,
642 swq_select_parse_options* poSelectParseOptions);
647 virtual int GetLayerCount();
648 virtual OGRLayer *GetLayer(
int iLayer);
669 std::unique_ptr<Private> m_poPrivate;
690 bool operator!=(
const Iterator& it)
const;
699 OGRLayer* operator[](
size_t iLayer);
700 OGRLayer* operator[](
const char* pszLayername);
705 virtual OGRLayer *GetLayerByName(
const char *);
706 virtual OGRErr DeleteLayer(
int iLayer);
708 virtual void ResetReading();
710 double* pdfProgressPct,
711 GDALProgressFunc pfnProgress,
712 void* pProgressData );
724 class CPL_DLL Iterator
727 std::unique_ptr<Private> m_poPrivate;
730 Iterator(
const Iterator& oOther);
731 Iterator(Iterator&& oOther) noexcept;
734 Iterator& operator++();
735 bool operator!=(
const Iterator& it)
const;
740 const Iterator
begin()
const;
742 const Iterator
end()
const;
747 virtual int TestCapability(
const char * );
749 virtual OGRLayer *CreateLayer(
const char *pszName,
752 char ** papszOptions =
nullptr );
754 const char *pszNewName,
755 char **papszOptions =
nullptr );
758 virtual void SetStyleTableDirectly(
OGRStyleTable *poStyleTable );
762 virtual OGRLayer * ExecuteSQL(
const char *pszStatement,
764 const char *pszDialect );
765 virtual void ReleaseResultSet(
OGRLayer * poResultsSet );
767 int GetRefCount()
const;
768 int GetSummaryRefCount()
const;
771 virtual OGRErr StartTransaction(
int bForce=FALSE);
772 virtual OGRErr CommitTransaction();
773 virtual OGRErr RollbackTransaction();
776 static int IsGenericSQLDialect(
const char* pszDialect);
779 GDALSQLParseInfo* BuildParseInfo(swq_select* psSelectInfo,
780 swq_select_parse_options* poSelectParseOptions);
781 static void DestroyParseInfo(GDALSQLParseInfo* psParseInfo );
782 OGRLayer * ExecuteSQL(
const char *pszStatement,
784 const char *pszDialect,
785 swq_select_parse_options* poSelectParseOptions);
789 virtual OGRLayer *ICreateLayer(
const char *pszName,
792 char ** papszOptions =
nullptr );
795 OGRErr ProcessSQLCreateIndex(
const char * );
796 OGRErr ProcessSQLDropIndex(
const char * );
797 OGRErr ProcessSQLDropTable(
const char * );
798 OGRErr ProcessSQLAlterTableAddColumn(
const char * );
799 OGRErr ProcessSQLAlterTableDropColumn(
const char * );
800 OGRErr ProcessSQLAlterTableAlterColumn(
const char * );
801 OGRErr ProcessSQLAlterTableRenameColumn(
const char * );
809 CPLErr OldSetGCPsFromNew(
int nGCPCount,
const GDAL_GCP *pasGCPList,
812 friend class GDALProxyPoolDataset;
813 virtual const char *_GetProjectionRef();
815 virtual const char *_GetGCPProjection();
817 virtual CPLErr _SetProjection(
const char * pszProjection );
818 virtual CPLErr _SetGCPs(
int nGCPCount,
const GDAL_GCP *pasGCPList,
819 const char *pszGCPProjection );
827 struct CPL_DLL GDALDatasetUniquePtrDeleter
851 friend class GDALAbstractBandBlockCache;
856 volatile int nLockCount;
873 CPL_INTERNAL
void Detach_unlocked(
void );
874 CPL_INTERNAL
void Touch_unlocked(
void );
876 CPL_INTERNAL
void RecycleFor(
int nXOffIn,
int nYOffIn );
883 CPLErr Internalize(
void );
885 void MarkDirty(
void );
886 void MarkClean(
void );
888 int AddLock(
void ) {
return CPLAtomicInc(&nLockCount); }
890 int DropLock(
void ) {
return CPLAtomicDec(&nLockCount); }
930 int DropLockForRemovalFromStorage();
936 static void FlushDirtyBlocks();
937 static int FlushCacheBlock(
int bDirtyBlocksOnly = FALSE);
938 static void Verify();
940 static void EnterDisableDirtyBlockFlush();
941 static void LeaveDisableDirtyBlockFlush();
946 static void DumpAll();
951 CPL_INTERNAL
static void DestroyRBMutex();
968 std::vector<GDALColorEntry> aoEntries{};
979 int GetColorEntryCount()
const;
1009 class GDALAbstractBandBlockCache
1012 CPLLock *hSpinLock =
nullptr;
1016 CPLCond *hCond =
nullptr;
1017 CPLMutex *hCondMutex =
nullptr;
1018 volatile int nKeepAliveCounter = 0;
1020 volatile int m_nDirtyBlocks = 0;
1027 int m_nInitialDirtyBlocksInFlushCache = 0;
1028 int m_nLastTick = -1;
1030 void FreeDanglingBlocks();
1031 void UnreferenceBlockBase();
1033 void StartDirtyBlockFlushingLog();
1034 void UpdateDirtyBlockFlushingLog();
1035 void EndDirtyBlockFlushingLog();
1039 virtual ~GDALAbstractBandBlockCache();
1043 void IncDirtyBlocks(
int nInc);
1044 void WaitCompletionPendingTasks();
1046 virtual bool Init() = 0;
1047 virtual bool IsInitOK() = 0;
1048 virtual CPLErr FlushCache() = 0;
1051 int nYBlockYOff ) = 0;
1053 virtual CPLErr FlushBlock(
int nXBlockOff,
int nYBlockOff,
1054 int bWriteDirtyBlock ) = 0;
1057 GDALAbstractBandBlockCache* GDALArrayBandBlockCacheCreate(
GDALRasterBand* poBand);
1058 GDALAbstractBandBlockCache* GDALHashSetBandBlockCacheCreate(
GDALRasterBand* poBand);
1071 friend class GDALArrayBandBlockCache;
1072 friend class GDALHashSetBandBlockCache;
1076 CPLErr eFlushBlockErr = CE_None;
1077 GDALAbstractBandBlockCache* poBandBlockCache =
nullptr;
1079 CPL_INTERNAL
void SetFlushBlockErr(
CPLErr eErr );
1081 CPL_INTERNAL
void SetValidPercent(
GUIntBig nSampleCount,
GUIntBig nValidCount );
1082 CPL_INTERNAL
void IncDirtyBlocks(
int nInc);
1089 int nRasterXSize = 0;
1090 int nRasterYSize = 0;
1096 int nBlockXSize = -1;
1097 int nBlockYSize = -1;
1098 int nBlocksPerRow = 0;
1099 int nBlocksPerColumn = 0;
1101 int nBlockReads = 0;
1102 int bForceCachedIO = 0;
1105 bool bOwnMask =
false;
1108 void InvalidateMaskBand();
1110 friend class GDALProxyRasterBand;
1111 friend class GDALDefaultOverviews;
1118 void LeaveReadWrite();
1123 virtual CPLErr IReadBlock(
int nBlockXOff,
int nBlockYOff,
void * pData ) = 0;
1124 virtual CPLErr IWriteBlock(
int nBlockXOff,
int nBlockYOff,
void * pData );
1130 virtual int IGetDataCoverageStatus(
int nXOff,
int nYOff,
1131 int nXSize,
int nYSize,
1133 double* pdfDataPct);
1140 int nXOff,
int nYOff,
int nXSize,
int nYSize,
1141 void * pData,
int nBufXSize,
int nBufYSize,
1147 int InitBlockInfo();
1152 GDALRasterBlock *TryGetLockedBlockRef(
int nXBlockOff,
int nYBlockYOff );
1166 void GetBlockSize(
int *,
int * );
1167 CPLErr GetActualBlockSize (
int,
int,
int *,
int * );
1173 #ifndef DOXYGEN_SKIP
1174 OPTIONAL_OUTSIDE_GDAL(
nullptr)
1183 CPLErr FlushBlock(
int,
int,
int bWriteDirtyBlock = TRUE );
1185 unsigned char* GetIndexColorTranslationTo(
GDALRasterBand* poReferenceBand,
1186 unsigned char* pTranslationTable =
nullptr,
1187 int* pApproximateMatching =
nullptr);
1191 virtual CPLErr FlushCache();
1192 virtual char **GetCategoryNames();
1193 virtual double GetNoDataValue(
int *pbSuccess =
nullptr );
1194 virtual double GetMinimum(
int *pbSuccess =
nullptr );
1195 virtual double GetMaximum(
int *pbSuccess =
nullptr );
1196 virtual double GetOffset(
int *pbSuccess =
nullptr );
1197 virtual double GetScale(
int *pbSuccess =
nullptr );
1198 virtual const char *GetUnitType();
1201 virtual CPLErr Fill(
double dfRealValue,
double dfImaginaryValue = 0);
1203 virtual CPLErr SetCategoryNames(
char ** papszNames );
1204 virtual CPLErr SetNoDataValue(
double dfNoData );
1205 virtual CPLErr DeleteNoDataValue();
1208 virtual CPLErr SetOffset(
double dfNewOffset );
1209 virtual CPLErr SetScale(
double dfNewScale );
1210 virtual CPLErr SetUnitType(
const char * pszNewValue );
1212 virtual CPLErr GetStatistics(
int bApproxOK,
int bForce,
1213 double *pdfMin,
double *pdfMax,
1214 double *pdfMean,
double *padfStdDev );
1215 virtual CPLErr ComputeStatistics(
int bApproxOK,
1216 double *pdfMin,
double *pdfMax,
1217 double *pdfMean,
double *pdfStdDev,
1218 GDALProgressFunc,
void *pProgressData );
1219 virtual CPLErr SetStatistics(
double dfMin,
double dfMax,
1220 double dfMean,
double dfStdDev );
1221 virtual CPLErr ComputeRasterMinMax(
int,
double* );
1225 char **
GetMetadata(
const char * pszDomain =
"" )
override;
1227 const char * pszDomain )
override;
1229 const char * pszDomain )
override;
1231 const char * pszValue,
1232 const char * pszDomain )
override;
1235 virtual int HasArbitraryOverviews();
1236 virtual int GetOverviewCount();
1239 virtual CPLErr BuildOverviews(
const char * pszResampling,
1241 int * panOverviewList,
1242 GDALProgressFunc pfnProgress,
1243 void * pProgressData );
1245 virtual CPLErr AdviseRead(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
1246 int nBufXSize,
int nBufYSize,
1249 virtual CPLErr GetHistogram(
double dfMin,
double dfMax,
1250 int nBuckets,
GUIntBig * panHistogram,
1251 int bIncludeOutOfRange,
int bApproxOK,
1252 GDALProgressFunc,
void *pProgressData );
1254 virtual CPLErr GetDefaultHistogram(
double *pdfMin,
double *pdfMax,
1255 int *pnBuckets,
GUIntBig ** ppanHistogram,
1257 GDALProgressFunc,
void *pProgressData);
1258 virtual CPLErr SetDefaultHistogram(
double dfMin,
double dfMax,
1259 int nBuckets,
GUIntBig *panHistogram );
1265 virtual int GetMaskFlags();
1266 virtual CPLErr CreateMaskBand(
int nFlagsIn );
1273 int GetDataCoverageStatus(
int nXOff,
int nYOff,
1274 int nXSize,
int nYSize,
1275 int nMaskFlagStop = 0,
1276 double* pdfDataPct =
nullptr );
1310 ~GDALAllValidMaskBand()
override;
1316 double *pdfMin,
double *pdfMax,
1317 double *pdfMean,
double *pdfStdDev,
1318 GDALProgressFunc,
void *pProgressData )
override;
1328 double dfNoDataValue;
1341 ~GDALNoDataMaskBand()
override;
1343 static bool IsNoDataInRange(
double dfNoDataValue,
1353 double *padfNodataValues;
1361 explicit GDALNoDataValuesMaskBand(
GDALDataset * );
1362 ~GDALNoDataValuesMaskBand()
override;
1385 ~GDALRescaledAlphaBand()
override;
1430 const char * pszValue,
1431 const char * pszDomain =
"" )
override;
1437 int nXSize,
int nYSize,
int nBands,
1440 CPLErr Delete(
const char * pszName );
1441 CPLErr Rename(
const char * pszNewName,
1442 const char * pszOldName );
1443 CPLErr CopyFiles(
const char * pszNewName,
1444 const char * pszOldName );
1448 GDALProgressFunc pfnProgress,
1460 int nXSize,
int nYSize,
int nBands,
1462 char ** papszOptions );
1464 CPLErr (*pfnDelete)(
const char * pszName );
1468 GDALProgressFunc pfnProgress,
1469 void * pProgressData );
1484 CPLErr (*pfnRename)(
const char * pszNewName,
1485 const char * pszOldName );
1486 CPLErr (*pfnCopyFiles)(
const char * pszNewName,
1487 const char * pszOldName );
1492 const char * pszName,
1493 char ** papszOptions );
1495 const char * pszName );
1504 GDALProgressFunc pfnProgress,
1513 GDALProgressFunc pfnProgress,
1514 void * pProgressData );
1516 static CPLErr QuietDelete(
const char * pszName );
1519 static CPLErr DefaultRename(
const char * pszNewName,
1520 const char * pszOldName );
1521 static CPLErr DefaultCopyFiles(
const char * pszNewName,
1522 const char * pszOldName );
1535 {
return static_cast<GDALDriver*
>(hDriver); }
1556 std::map<CPLString, GDALDriver*> oMapNameToDrivers{};
1558 GDALDriver *GetDriver_unlocked(
int iDriver )
1559 {
return (iDriver >= 0 && iDriver < nDrivers) ?
1560 papoDrivers[iDriver] :
nullptr; }
1562 GDALDriver *GetDriverByName_unlocked(
const char * pszName )
1571 int GetDriverCount(
void )
const;
1579 static void AutoLoadDrivers();
1580 void AutoSkipDrivers();
1681 GetNextUpdatedRegion(
double dfTimeout,
1682 int* pnBufXOff,
int* pnBufYOff,
1683 int* pnBufXSize,
int* pnBufYSize) = 0;
1684 virtual int LockBuffer(
double dfTimeout = -1.0 );
1685 virtual void UnlockBuffer();
1695 GDALRegenerateOverviewsMultiBand(
int nBands,
GDALRasterBand** papoSrcBands,
1698 const char * pszResampling,
1699 GDALProgressFunc pfnProgress,
void * pProgressData );
1701 typedef CPLErr (*GDALResampleFunction)
1702 (
double dfXRatioDstToSrc,
1703 double dfYRatioDstToSrc,
1708 GByte * pabyChunkNodataMask,
1709 int nChunkXOff,
int nChunkXSize,
1710 int nChunkYOff,
int nChunkYSize,
1711 int nDstXOff,
int nDstXOff2,
1712 int nDstYOff,
int nDstYOff2,
1714 const char * pszResampling,
1715 int bHasNoData,
float fNoDataValue,
1718 bool bPropagateNoData );
1720 GDALResampleFunction GDALGetResampleFunction(
const char* pszResampling,
1723 #ifdef GDAL_ENABLE_RESAMPLING_MULTIBAND
1724 typedef CPLErr (*GDALResampleFunctionMultiBands)
1725 (
double dfXRatioDstToSrc,
1726 double dfYRatioDstToSrc,
1730 void * pChunk,
int nBands,
1731 GByte * pabyChunkNodataMask,
1732 int nChunkXOff,
int nChunkXSize,
1733 int nChunkYOff,
int nChunkYSize,
1734 int nDstXOff,
int nDstXOff2,
1735 int nDstYOff,
int nDstYOff2,
1737 const char * pszResampling,
1738 int bHasNoData,
float fNoDataValue,
1742 GDALResampleFunctionMultiBands GDALGetResampleFunctionMultiBands(
const char* pszResampling,
1746 GDALDataType GDALGetOvrWorkDataType(
const char* pszResampling,
1752 HFAAuxBuildOverviews(
const char *pszOvrFilename,
GDALDataset *poParentDS,
1754 int nBands,
int *panBandList,
1755 int nNewOverviews,
int *panNewOverviewList,
1756 const char *pszResampling,
1757 GDALProgressFunc pfnProgress,
1758 void *pProgressData );
1761 GTIFFBuildOverviews(
const char * pszFilename,
1763 int nOverviews,
int * panOverviewList,
1764 const char * pszResampling,
1765 GDALProgressFunc pfnProgress,
void * pProgressData );
1768 GDALDefaultBuildOverviews(
GDALDataset *hSrcDS,
const char * pszBasename,
1769 const char * pszResampling,
1770 int nOverviews,
int * panOverviewList,
1771 int nBands,
int * panBandList,
1772 GDALProgressFunc pfnProgress,
void * pProgressData);
1775 int &nXOff,
int &nYOff,
1776 int &nXSize,
int &nYSize,
1777 int nBufXSize,
int nBufYSize) CPL_WARN_DEPRECATED(
"Use GDALBandGetBestOverviewLevel2 instead");
1778 int CPL_DLL GDALBandGetBestOverviewLevel2(
GDALRasterBand* poBand,
1779 int &nXOff,
int &nYOff,
1780 int &nXSize,
int &nYSize,
1781 int nBufXSize,
int nBufYSize,
1784 int CPL_DLL GDALOvLevelAdjust(
int nOvLevel,
int nXSize ) CPL_WARN_DEPRECATED(
"Use GDALOvLevelAdjust2 instead");
1785 int CPL_DLL GDALOvLevelAdjust2(
int nOvLevel,
int nXSize,
int nYSize );
1786 int CPL_DLL GDALComputeOvFactor(
int nOvrXSize,
int nRasterXSize,
1787 int nOvrYSize,
int nRasterYSize );
1790 GDALFindAssociatedAuxFile(
const char *pszBasefile,
GDALAccess eAccess,
1797 int CPL_DLL GDALCheckDatasetDimensions(
int nXSize,
int nYSize );
1798 int CPL_DLL GDALCheckBandCount(
int nBands,
int bIsZeroAllowed );
1803 int CPL_DLL GDALReadWorldFile2(
const char *pszBaseFilename,
const char *pszExtension,
1804 double *padfGeoTransform,
char** papszSiblingFiles,
1805 char** ppszWorldFileNameOut);
1806 int GDALReadTabFile2(
const char * pszBaseFilename,
1807 double *padfGeoTransform,
char **ppszWKT,
1808 int *pnGCPCount,
GDAL_GCP **ppasGCPs,
1809 char** papszSiblingFiles,
char** ppszTabFileNameOut );
1816 void GDALNullifyOpenDatasetsList();
1817 CPLMutex** GDALGetphDMMutex();
1818 CPLMutex** GDALGetphDLMutex();
1819 void GDALNullifyProxyPoolSingleton();
1821 void GDALSetResponsiblePIDForCurrentThread(
GIntBig responsiblePID);
1822 GIntBig GDALGetResponsiblePIDForCurrentThread();
1824 CPLString GDALFindAssociatedFile(
const char *pszBasename,
const char *pszExt,
1827 CPLErr EXIFExtractMetadata(
char**& papszMetadata,
1828 void *fpL,
int nOffset,
1829 int bSwabflag,
int nTIFFHEADER,
1830 int& nExifOffset,
int& nInterOffset,
int& nGPSOffset);
1833 const char*
const* papszOptionOptions);
1834 int GDALValidateOptions(
const char* pszOptionList,
1835 const char*
const* papszOptionsToValidate,
1836 const char* pszErrorMessageOptionType,
1837 const char* pszErrorMessageContainerName);
1843 int nXSize,
int nYSize,
1844 int nBufXSize,
int nBufYSize);
1848 int bThisLevelOnly);
1853 template<
class T>
inline bool ARE_REAL_EQUAL(T fVal1, T fVal2,
int ulp = 2)
1855 return fVal1 == fVal2 ||
1856 std::abs(fVal1 - fVal2) < std::numeric_limits<float>::epsilon() * std::abs(fVal1+fVal2) * ulp;
1859 double GDALAdjustNoDataCloseToFloatMax(
double dfVal);
1861 #define DIV_ROUND_UP(a, b) ( ((a) % (b)) == 0 ? ((a) / (b)) : (((a) / (b)) + 1) )
1865 #define GDALSTAT_APPROX_NUMSAMPLES 2500
1867 void GDALSerializeGCPListToXML(
CPLXMLNode* psParentNode,
1871 void GDALDeserializeGCPListFromXML(
CPLXMLNode* psGCPList,
1876 void GDALSerializeOpenOptionsToXML(
CPLXMLNode* psParentNode,
char** papszOpenOptions);
1877 char** GDALDeserializeOpenOptionsFromXML(
CPLXMLNode* psParentNode );
1879 int GDALCanFileAcceptSidecarFile(
const char* pszFilename);
@ GDAL_IDENTIFY_UNKNOWN
Identify could not determine if the file is recognized or not by the probed driver.
Definition: gdal_priv.h:1401
#define CPL_PRINT_FUNC_FORMAT(format_idx, arg_idx)
Tag a function to have printf() formatting.
Definition: cpl_port.h:914
@ GDAL_IDENTIFY_FALSE
Identify determined the file is not recognized by the probed driver.
Definition: gdal_priv.h:1403
VSILFILE * fpL
Pointer to the file.
Definition: gdal_priv.h:292
int GDALGetDataTypeSizeBytes(GDALDataType)
Get data type size in bytes.
Definition: gdal_misc.cpp:305
unsigned char GByte
Unsigned byte type.
Definition: cpl_port.h:215
int GetYOffset() const
Return y offset.
Definition: gdal_priv.h:1634
int GetYSize() const
Return the height of the block.
Definition: gdal_priv.h:914
std::input_iterator_tag iterator_category
iterator_category
Definition: gdal_priv.h:676
Class for dataset open functions.
Definition: gdal_priv.h:265
Layer iterator.
Definition: gdal_priv.h:666
virtual CPLErr ComputeStatistics(int bApproxOK, double *pdfMin, double *pdfMax, double *pdfMean, double *pdfStdDev, GDALProgressFunc, void *pProgressData)
Compute image statistics.
Definition: gdalrasterband.cpp:4893
int GetPixelSpace() const
Return pixel spacing.
Definition: gdal_priv.h:1670
GPtrDiff_t GetBlockSize() const
Return the block size in bytes.
Definition: gdal_priv.h:926
int GetBandCount() const
Return band count.
Definition: gdal_priv.h:1662
OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
Return begin of feature iterator.
Definition: ogrsf_frmts.h:287
void difference_type
difference_type
Definition: gdal_priv.h:674
This class represents a style table.
Definition: ogr_featurestyle.h:84
String list class designed around our use of C "char**" string lists.
Definition: cpl_string.h:438
Class used as a session object for asynchronous requests.
Definition: gdal_priv.h:1596
GIntBig GPtrDiff_t
Integer type large enough to hold the difference between 2 addresses.
Definition: cpl_port.h:286
int GetBufferYSize() const
Return buffer height.
Definition: gdal_priv.h:1654
Format specific driver.
Definition: gdal_priv.h:1423
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:156
Class returned by GetBands() that act as a container for raster bands.
Definition: gdal_priv.h:462
void * GDALColorTableH
Opaque type used for the C bindings of the C++ GDALColorTable class.
Definition: gdal.h:264
int GetLineSpace() const
Return line spacing.
Definition: gdal_priv.h:1674
void GDALClose(GDALDatasetH)
Close GDAL dataset.
Definition: gdaldataset.cpp:3588
void * GetDataRef(void)
Return the data buffer.
Definition: gdal_priv.h:922
int nOpenFlags
Open flags.
Definition: gdal_priv.h:284
char ** papszOpenOptions
Open options.
Definition: gdal_priv.h:279
virtual CPLErr SetMetadataItem(const char *pszName, const char *pszValue, const char *pszDomain="")
Set single metadata item.
Definition: gdalmajorobject.cpp:388
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:286
Color tuple.
Definition: gdal.h:1059
GDALColorInterp
Definition: gdal.h:190
This class represents a layer of simple features, with access methods.
Definition: ogrsf_frmts.h:70
Convenient string class based on std::string.
Definition: cpl_string.h:329
A single raster band (or channel).
Definition: gdal_priv.h:1068
GDALIdentifyEnum
Enumeration used by GDALDriver::pfnIdentify().
Definition: gdal_priv.h:1398
int GetBandSpace() const
Return band spacing.
Definition: gdal_priv.h:1678
GDALDataType GetBufferType() const
Return buffer data type.
Definition: gdal_priv.h:1658
GDALDataType
Definition: gdal.h:60
Document node structure.
Definition: cpl_minixml.h:66
std::unique_ptr< OGRFeature, OGRFeatureUniquePtrDeleter > OGRFeatureUniquePtr
Unique pointer type for OGRFeature.
Definition: ogr_feature.h:780
virtual const char * GetMetadataItem(const char *pszName, const char *pszDomain="")
Fetch single metadata item.
Definition: gdalmajorobject.cpp:344
A single raster block in the block cache.
Definition: gdal_priv.h:849
void * GDALMajorObjectH
Opaque type used for the C bindings of the C++ GDALMajorObject class.
Definition: gdal.h:252
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:335
char ** GetOpenOptions()
Return open options.
Definition: gdal_priv.h:574
CPLErr BuildOverviews(const char *, int, int *, int, int *, GDALProgressFunc, void *)
Build raster overview(s)
Definition: gdaldataset.cpp:1925
static GDALMajorObject * FromHandle(GDALMajorObjectH hMajorObject)
Convert a GDALMajorObjectH to a GDALMajorObject*.
Definition: gdal_priv.h:174
int bStatOK
Whether stat()'ing the file was successful.
Definition: gdal_priv.h:287
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:337
Class for managing the registration of file format drivers.
Definition: gdal_priv.h:1552
GByte * pabyHeader
Buffer with first bytes of the file.
Definition: gdal_priv.h:297
int GetYSize() const
Return height.
Definition: gdal_priv.h:1642
GDALAccess eAccess
Access flag.
Definition: gdal_priv.h:282
virtual GDALRasterBand * GetMaskBand()
Return the mask band associated with the band.
Definition: gdalrasterband.cpp:5953
virtual char ** GetMetadata(const char *pszDomain="")
Fetch metadata.
Definition: gdalmajorobject.cpp:249
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1194
int CPLErrorNum
Error number.
Definition: cpl_error.h:94
unsigned long long GUIntBig
Large unsigned integer type (generally 64-bit unsigned integer type).
Definition: cpl_port.h:251
static GDALDataset * Open(const char *pszFilename, unsigned int nOpenFlags=0, const char *const *papszAllowedDrivers=nullptr, const char *const *papszOpenOptions=nullptr, const char *const *papszSiblingFiles=nullptr)
Definition: gdal_priv.h:613
int DropLock(void)
Decrement the lock count.
Definition: gdal_priv.h:890
int bIsDirectory
Whether the file is a directory.
Definition: gdal_priv.h:289
Ground Control Point.
Definition: gdal.h:563
#define CPL_C_END
Macro to end a block of C symbols.
Definition: cpl_port.h:339
virtual CPLErr IReadBlock(int nBlockXOff, int nBlockYOff, void *pData)=0
Read a block of data.
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:3206
#define CPL_NULL_TERMINATED
Null terminated variadic.
Definition: cpl_port.h:904
Object returned by GetFeatures() iterators.
Definition: gdal_priv.h:626
GDALDataset * GetGDALDataset()
Return dataset.
Definition: gdal_priv.h:1626
CPLSTRING_METHOD_DLL CPLString & toupper(void)
Convert to upper case in place.
Definition: cplstring.cpp:316
static GDALDatasetH ToHandle(GDALDataset *poDS)
Convert a GDALDataset* to a GDALDatasetH.
Definition: gdal_priv.h:601
struct CPLVirtualMem CPLVirtualMem
Opaque type that represents a virtual memory mapping.
Definition: cpl_virtualmem.h:62
const char *const * papszAllowedDrivers
Allowed drivers (NULL for all)
Definition: gdal_priv.h:300
virtual CPLErr SetMetadata(char **papszMetadata, const char *pszDomain="")
Set metadata.
Definition: gdalmajorobject.cpp:292
virtual int CloseDependentDatasets()
Drop references to any other datasets referenced by this dataset.
Definition: gdaldataset.cpp:3959
static GDALColorTableH ToHandle(GDALColorTable *poCT)
Convert a GDALColorTable* to a GDALRasterBandH.
Definition: gdal_priv.h:989
int AddLock(void)
Increment the lock count.
Definition: gdal_priv.h:888
virtual CPLErr CreateMaskBand(int nFlagsIn)
Adds a mask band to the dataset.
Definition: gdaldataset.cpp:2941
GIntBig GSpacing
Type to express pixel, line or band spacing.
Definition: gdal.h:273
GDALAccess
Definition: gdal.h:113
void MarkSuppressOnClose()
Set that the dataset must be deleted on close.
Definition: gdal_priv.h:569
OGRLayer::FeatureIterator end(OGRLayer *poLayer)
Return end of feature iterator.
Definition: ogrsf_frmts.h:292
GDALAsyncStatusType
status of the asynchronous stream
Definition: gdal.h:100
static GDALDriver * FromHandle(GDALDriverH hDriver)
Convert a GDALDriverH to a GDALDriver*.
Definition: gdal_priv.h:1534
@ GDAL_IDENTIFY_TRUE
Identify determined the file is recognized by the probed driver.
Definition: gdal_priv.h:1405
int OGRErr
Simple container for a bounding region.
Definition: ogr_core.h:290
@ GA_ReadOnly
Definition: gdal.h:114
int GetXSize() const
Return width.
Definition: gdal_priv.h:1638
int GetDirty() const
Return the dirty flag.
Definition: gdal_priv.h:918
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition: cpl_port.h:248
void pointer
pointer
Definition: gdal_priv.h:675
int GetBufferXSize() const
Return buffer width.
Definition: gdal_priv.h:1650
int nHeaderBytes
Number of bytes in pabyHeader.
Definition: gdal_priv.h:295
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:317
static GDALDriverH ToHandle(GDALDriver *poDriver)
Convert a GDALDriver* to a GDALDriverH.
Definition: gdal_priv.h:1528
void static GDALRasterBandH ToHandle(GDALRasterBand *poBand)
Convert a GDALRasterBand* to a GDALRasterBandH.
Definition: gdal_priv.h:1283
int GetYOff() const
Return the y offset of the top-left corner of the block.
Definition: gdal_priv.h:906
#define CPL_WARN_UNUSED_RESULT
Qualifier to warn when the return value of a function is not used.
Definition: cpl_port.h:939
GDALAccess GetAccess() const
Return access mode.
Definition: gdal_priv.h:563
A simple feature, including geometry and attributes.
Definition: ogr_feature.h:354
GDALRWFlag
Definition: gdal.h:119
Class returned by GetFeatures() that act as a container for vector features.
Definition: gdal_priv.h:716
Object with metadata.
Definition: gdal_priv.h:132
CPLErr
Error category.
Definition: cpl_error.h:52
char * pszFilename
Filename.
Definition: gdal_priv.h:277
static GDALColorTable * FromHandle(GDALColorTableH hCT)
Convert a GDALColorTableH to a GDALColorTable*.
Definition: gdal_priv.h:995
@ GDT_Byte
Definition: gdal.h:62
@ GPI_RGB
Definition: gdal.h:219
virtual int GetMaskFlags()
Return the status flags of the mask band associated with the band.
Definition: gdalrasterband.cpp:6218
GDALRIOResampleAlg
RasterIO() resampling method.
Definition: gdal.h:128
GDALDriverManager * GetGDALDriverManager(void)
Fetch the global GDAL driver manager.
Definition: gdaldrivermanager.cpp:97
virtual CPLErr IRasterIO(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: rasterio.cpp:68
Definition: gdal_rat.h:47
int GetXOffset() const
Return x offset.
Definition: gdal_priv.h:1630
GDALRasterBand * GetBand()
Accessor to source GDALRasterBand object.
Definition: gdal_priv.h:934
Class returned by GetLayers() that acts as a range of layers.
Definition: gdal_priv.h:653
int GetXOff() const
Return the x offset of the top-left corner of the block.
Definition: gdal_priv.h:902
GDALDataType GetDataType() const
Return the data type.
Definition: gdal_priv.h:898
static GDALDataset * FromHandle(GDALDatasetH hDS)
Convert a GDALDatasetH to a GDALDataset*.
Definition: gdal_priv.h:607
GDALPaletteInterp
Definition: gdal.h:216
static GDALMajorObjectH ToHandle(GDALMajorObject *poMajorObject)
Convert a GDALMajorObject* to a GDALMajorObjectH.
Definition: gdal_priv.h:168
void * GDALRasterBandH
Opaque type used for the C bindings of the C++ GDALRasterBand class.
Definition: gdal.h:258
@ wkbUnknown
unknown type, non-standard
Definition: ogr_core.h:319
void * GetBuffer()
Return buffer.
Definition: gdal_priv.h:1646
std::unique_ptr< GDALDataset, GDALDatasetUniquePtrDeleter > GDALDatasetUniquePtr
Unique pointer type for GDALDataset.
Definition: gdal_priv.h:839
#define CPL_DISALLOW_COPY_ASSIGN(ClassName)
Helper to remove the copy and assignment constructors so that the compiler will not generate the defa...
Definition: cpl_port.h:997
int GetXSize() const
Return the width of the block.
Definition: gdal_priv.h:910
void * GDALDatasetH
Opaque type used for the C bindings of the C++ GDALDataset class.
Definition: gdal.h:255
static GDALRasterBand * FromHandle(GDALRasterBandH hBand)
Convert a GDALRasterBandH to a GDALRasterBand*.
Definition: gdal_priv.h:1289
A color table / palette.
Definition: gdal_priv.h:964
FILE VSILFILE
Opaque type for a FILE that implements the VSIVirtualHandle API.
Definition: cpl_vsi.h:156
int * GetBandMap()
Return band map.
Definition: gdal_priv.h:1666
void * GDALDriverH
Opaque type used for the C bindings of the C++ GDALDriver class.
Definition: gdal.h:261
Generated for GDAL by
1.8.17.