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"
81 #define GMO_VALID 0x0001
82 #define GMO_IGNORE_UNIMPLEMENTED 0x0002
83 #define GMO_SUPPORT_MD 0x0004
84 #define GMO_SUPPORT_MDMD 0x0008
85 #define GMO_MD_DIRTY 0x0010
86 #define GMO_PAM_CLASS 0x0020
94 class CPL_DLL GDALMultiDomainMetadata
97 char **papszDomainList;
101 GDALMultiDomainMetadata();
102 ~GDALMultiDomainMetadata();
104 int XMLInit(
CPLXMLNode *psMetadata,
int bMerge );
107 char **GetDomainList() {
return papszDomainList; }
109 char **GetMetadata(
const char * pszDomain =
"" );
110 CPLErr SetMetadata(
char ** papszMetadata,
111 const char * pszDomain =
"" );
112 const char *GetMetadataItem(
const char * pszName,
113 const char * pszDomain =
"" );
114 CPLErr SetMetadataItem(
const char * pszName,
115 const char * pszValue,
116 const char * pszDomain =
"" );
139 GDALMultiDomainMetadata oMDMD{};
143 char **BuildMetadataDomainList(
char** papszList,
149 int GetMOFlags()
const;
150 void SetMOFlags(
int nFlagsIn );
152 virtual const char *GetDescription()
const;
153 virtual void SetDescription(
const char * );
155 virtual char **GetMetadataDomainList();
157 virtual char **GetMetadata(
const char * pszDomain =
"" );
158 virtual CPLErr SetMetadata(
char ** papszMetadata,
159 const char * pszDomain =
"" );
160 virtual const char *GetMetadataItem(
const char * pszName,
161 const char * pszDomain =
"" );
162 virtual CPLErr SetMetadataItem(
const char * pszName,
163 const char * pszValue,
164 const char * pszDomain =
"" );
184 class CPL_DLL GDALDefaultOverviews
195 bool bCheckedForMask;
204 bool bCheckedForOverviews;
208 char **papszInitSiblingFiles;
211 GDALDefaultOverviews();
212 ~GDALDefaultOverviews();
214 void Initialize(
GDALDataset *poDSIn,
const char *pszName =
nullptr,
215 char **papszSiblingFiles =
nullptr,
216 int bNameIsOVR = FALSE );
218 void TransferSiblingFiles(
char** papszSiblingFiles );
226 int GetOverviewCount(
int nBand );
230 const char * pszResampling,
231 int nOverviews,
int * panOverviewList,
232 int nBands,
int * panBandList,
233 GDALProgressFunc pfnProgress,
234 void *pProgressData );
236 CPLErr BuildOverviewsSubDataset(
const char * pszPhysicalFile,
237 const char * pszResampling,
238 int nOverviews,
int * panOverviewList,
239 int nBands,
int * panBandList,
240 GDALProgressFunc pfnProgress,
241 void *pProgressData );
249 int GetMaskFlags(
int nBand );
251 int HaveMaskFile(
char **papszSiblings =
nullptr,
252 const char *pszBasename =
nullptr );
254 char** GetSiblingFiles() {
return papszInitSiblingFiles; }
268 bool bHasGotSiblingFiles;
269 char **papszSiblingFiles;
270 int nHeaderBytesTried;
274 const char *
const * papszSiblingFiles =
nullptr );
303 int TryToIngest(
int nBytes);
304 char **GetSiblingFiles();
305 char **StealSiblingFiles();
306 bool AreSiblingFilesLoaded()
const;
321 class swq_select_parse_options;
325 typedef struct GDALSQLParseInfo GDALSQLParseInfo;
329 #ifdef GDAL_COMPILATION
330 #define OPTIONAL_OUTSIDE_GDAL(val)
332 #define OPTIONAL_OUTSIDE_GDAL(val) = val
340 unsigned int nOpenFlags,
341 const char*
const* papszAllowedDrivers,
342 const char*
const* papszOpenOptions,
343 const char*
const* papszSiblingFiles );
347 friend class GDALDefaultOverviews;
348 friend class GDALProxyDataset;
351 CPL_INTERNAL
void AddToDatasetOpenList();
359 int nRasterXSize = 512;
360 int nRasterYSize = 512;
367 bool bForceCachedIO =
false;
368 bool bShared =
false;
369 bool bIsInternal =
true;
370 bool bSuppressOnClose =
false;
375 void RasterInitialize(
int,
int );
378 GDALDefaultOverviews oOvManager{};
380 virtual CPLErr IBuildOverviews(
const char *,
int,
int *,
381 int,
int *, GDALProgressFunc,
void * );
392 void BlockBasedFlushCache();
395 int nXOff,
int nYOff,
int nXSize,
int nYSize,
396 void * pData,
int nBufXSize,
int nBufYSize,
398 int nBandCount,
int *panBandMap,
404 int nXOff,
int nYOff,
int nXSize,
int nYSize,
405 void * pData,
int nBufXSize,
int nBufYSize,
407 int nBandCount,
int *panBandMap,
412 CPLErr ValidateRasterIOOrAdviseReadParameters(
413 const char* pszCallingFunc,
414 int* pbStopProcessingOnCENone,
415 int nXOff,
int nYOff,
int nXSize,
int nYSize,
416 int nBufXSize,
int nBufYSize,
417 int nBandCount,
int *panBandMap);
420 int nXOff,
int nYOff,
int nXSize,
int nYSize,
421 void * pData,
int nBufXSize,
int nBufYSize,
423 int nBandCount,
int *panBandMap,
429 void ShareLockWithParentDataset(
GDALDataset* poParentDataset);
432 virtual int CloseDependentDatasets();
434 int ValidateLayerCreationOptions(
const char*
const* papszLCO );
436 char **papszOpenOptions =
nullptr;
443 void LeaveReadWrite();
446 void TemporarilyDropReadWriteLock();
447 void ReacquireReadWriteLock();
449 void DisableReadWriteMutex();
458 int GetRasterXSize();
459 int GetRasterYSize();
460 int GetRasterCount();
472 class CPL_DLL Iterator
475 std::unique_ptr<Private> m_poPrivate;
478 Iterator(
const Iterator& oOther);
479 Iterator(Iterator&& oOther) noexcept;
482 Iterator& operator++();
483 bool operator!=(
const Iterator& it)
const;
488 const Iterator
begin()
const;
490 const Iterator
end()
const;
500 virtual void FlushCache(
void);
506 const char *GetProjectionRef(
void)
const;
507 CPLErr SetProjection(
const char * pszProjection );
509 virtual CPLErr GetGeoTransform(
double * padfTransform );
510 virtual CPLErr SetGeoTransform(
double * padfTransform );
513 char **papszOptions=
nullptr );
515 virtual void *GetInternalHandle(
const char * pszHandleName );
517 virtual char **GetFileList(
void);
519 virtual const char* GetDriverName();
522 virtual int GetGCPCount();
524 virtual CPLErr SetGCPs(
int nGCPCount,
const GDAL_GCP *pasGCPList,
528 const char *GetGCPProjection();
530 const char *pszGCPProjection );
532 virtual CPLErr AdviseRead(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
533 int nBufXSize,
int nBufYSize,
535 int nBandCount,
int *panBandList,
536 char **papszOptions );
538 virtual CPLErr CreateMaskBand(
int nFlagsIn );
541 BeginAsyncReader(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
542 void *pBuf,
int nBufXSize,
int nBufYSize,
544 int nBandCount,
int* panBandMap,
545 int nPixelSpace,
int nLineSpace,
int nBandSpace,
546 char **papszOptions);
550 struct RawBinaryLayout
552 enum class Interleaving
559 std::string osRawFilename{};
560 Interleaving eInterleaving = Interleaving::UNKNOWN;
562 bool bLittleEndianOrder =
false;
570 virtual bool GetRawBinaryLayout(RawBinaryLayout&);
578 OPTIONAL_OUTSIDE_GDAL(
nullptr)
591 int GetShared()
const;
602 static GDALDataset **GetOpenDatasets(
int *pnDatasetCount );
604 CPLErr BuildOverviews(
const char *,
int,
int *,
605 int,
int *, GDALProgressFunc,
void * );
609 char ** GetMetadata(const
char * pszDomain = "") override;
613 CPLErr SetMetadata(
char ** papszMetadata,
614 const char * pszDomain )
override;
615 const char *GetMetadataItem(
const char * pszName,
616 const char * pszDomain )
override;
617 CPLErr SetMetadataItem(
const char * pszName,
618 const char * pszValue,
619 const char * pszDomain )
override;
622 char **GetMetadataDomainList()
override;
640 unsigned int nOpenFlags = 0,
641 const char*
const* papszAllowedDrivers =
nullptr,
642 const char*
const* papszOpenOptions =
nullptr,
643 const char*
const* papszSiblingFiles =
nullptr )
645 return FromHandle(
GDALOpenEx(pszFilename, nOpenFlags,
663 Private *m_poPrivate;
665 CPL_INTERNAL
OGRLayer* BuildLayerFromSelectInfo(swq_select* psSelectInfo,
667 const char *pszDialect,
668 swq_select_parse_options* poSelectParseOptions);
673 virtual int GetLayerCount();
674 virtual OGRLayer *GetLayer(
int iLayer);
695 std::unique_ptr<Private> m_poPrivate;
716 bool operator!=(
const Iterator& it)
const;
725 OGRLayer* operator[](
size_t iLayer);
726 OGRLayer* operator[](
const char* pszLayername);
731 virtual OGRLayer *GetLayerByName(
const char *);
732 virtual OGRErr DeleteLayer(
int iLayer);
734 virtual void ResetReading();
736 double* pdfProgressPct,
737 GDALProgressFunc pfnProgress,
738 void* pProgressData );
750 class CPL_DLL Iterator
753 std::unique_ptr<Private> m_poPrivate;
756 Iterator(
const Iterator& oOther);
757 Iterator(Iterator&& oOther) noexcept;
760 Iterator& operator++();
761 bool operator!=(
const Iterator& it)
const;
766 const Iterator
begin()
const;
768 const Iterator
end()
const;
773 virtual int TestCapability(
const char * );
775 virtual OGRLayer *CreateLayer(
const char *pszName,
778 char ** papszOptions =
nullptr );
780 const char *pszNewName,
781 char **papszOptions =
nullptr );
784 virtual void SetStyleTableDirectly(
OGRStyleTable *poStyleTable );
788 virtual OGRLayer * ExecuteSQL(
const char *pszStatement,
790 const char *pszDialect );
791 virtual void ReleaseResultSet(
OGRLayer * poResultsSet );
793 int GetRefCount()
const;
794 int GetSummaryRefCount()
const;
797 virtual OGRErr StartTransaction(
int bForce=FALSE);
798 virtual OGRErr CommitTransaction();
799 virtual OGRErr RollbackTransaction();
801 virtual std::shared_ptr<GDALGroup> GetRootGroup()
const;
804 static int IsGenericSQLDialect(
const char* pszDialect);
807 GDALSQLParseInfo* BuildParseInfo(swq_select* psSelectInfo,
808 swq_select_parse_options* poSelectParseOptions);
809 static void DestroyParseInfo(GDALSQLParseInfo* psParseInfo );
810 OGRLayer * ExecuteSQL(
const char *pszStatement,
812 const char *pszDialect,
813 swq_select_parse_options* poSelectParseOptions);
817 virtual OGRLayer *ICreateLayer(
const char *pszName,
820 char ** papszOptions =
nullptr );
823 OGRErr ProcessSQLCreateIndex(
const char * );
824 OGRErr ProcessSQLDropIndex(
const char * );
825 OGRErr ProcessSQLDropTable(
const char * );
826 OGRErr ProcessSQLAlterTableAddColumn(
const char * );
827 OGRErr ProcessSQLAlterTableDropColumn(
const char * );
828 OGRErr ProcessSQLAlterTableAlterColumn(
const char * );
829 OGRErr ProcessSQLAlterTableRenameColumn(
const char * );
837 CPLErr OldSetGCPsFromNew(
int nGCPCount,
const GDAL_GCP *pasGCPList,
840 friend class GDALProxyPoolDataset;
841 virtual const char *_GetProjectionRef();
843 virtual const char *_GetGCPProjection();
845 virtual CPLErr _SetProjection(
const char * pszProjection );
846 virtual CPLErr _SetGCPs(
int nGCPCount,
const GDAL_GCP *pasGCPList,
847 const char *pszGCPProjection );
855 struct CPL_DLL GDALDatasetUniquePtrDeleter
879 friend class GDALAbstractBandBlockCache;
884 volatile int nLockCount;
901 CPL_INTERNAL
void Detach_unlocked(
void );
902 CPL_INTERNAL
void Touch_unlocked(
void );
904 CPL_INTERNAL
void RecycleFor(
int nXOffIn,
int nYOffIn );
911 CPLErr Internalize(
void );
913 void MarkDirty(
void );
914 void MarkClean(
void );
916 int AddLock(
void ) {
return CPLAtomicInc(&nLockCount); }
918 int DropLock(
void ) {
return CPLAtomicDec(&nLockCount); }
958 int DropLockForRemovalFromStorage();
964 static void FlushDirtyBlocks();
965 static int FlushCacheBlock(
int bDirtyBlocksOnly = FALSE);
966 static void Verify();
968 static void EnterDisableDirtyBlockFlush();
969 static void LeaveDisableDirtyBlockFlush();
974 static void DumpAll();
979 CPL_INTERNAL
static void DestroyRBMutex();
996 std::vector<GDALColorEntry> aoEntries{};
1007 int GetColorEntryCount()
const;
1037 class GDALAbstractBandBlockCache
1040 CPLLock *hSpinLock =
nullptr;
1044 CPLCond *hCond =
nullptr;
1045 CPLMutex *hCondMutex =
nullptr;
1046 volatile int nKeepAliveCounter = 0;
1048 volatile int m_nDirtyBlocks = 0;
1055 int m_nInitialDirtyBlocksInFlushCache = 0;
1056 int m_nLastTick = -1;
1058 void FreeDanglingBlocks();
1059 void UnreferenceBlockBase();
1061 void StartDirtyBlockFlushingLog();
1062 void UpdateDirtyBlockFlushingLog();
1063 void EndDirtyBlockFlushingLog();
1067 virtual ~GDALAbstractBandBlockCache();
1071 void IncDirtyBlocks(
int nInc);
1072 void WaitCompletionPendingTasks();
1074 virtual bool Init() = 0;
1075 virtual bool IsInitOK() = 0;
1076 virtual CPLErr FlushCache() = 0;
1079 int nYBlockYOff ) = 0;
1081 virtual CPLErr FlushBlock(
int nXBlockOff,
int nYBlockOff,
1082 int bWriteDirtyBlock ) = 0;
1085 GDALAbstractBandBlockCache* GDALArrayBandBlockCacheCreate(
GDALRasterBand* poBand);
1086 GDALAbstractBandBlockCache* GDALHashSetBandBlockCacheCreate(
GDALRasterBand* poBand);
1101 friend class GDALArrayBandBlockCache;
1102 friend class GDALHashSetBandBlockCache;
1106 CPLErr eFlushBlockErr = CE_None;
1107 GDALAbstractBandBlockCache* poBandBlockCache =
nullptr;
1109 CPL_INTERNAL
void SetFlushBlockErr(
CPLErr eErr );
1111 CPL_INTERNAL
void SetValidPercent(
GUIntBig nSampleCount,
GUIntBig nValidCount );
1112 CPL_INTERNAL
void IncDirtyBlocks(
int nInc);
1119 int nRasterXSize = 0;
1120 int nRasterYSize = 0;
1126 int nBlockXSize = -1;
1127 int nBlockYSize = -1;
1128 int nBlocksPerRow = 0;
1129 int nBlocksPerColumn = 0;
1131 int nBlockReads = 0;
1132 int bForceCachedIO = 0;
1135 bool bOwnMask =
false;
1138 void InvalidateMaskBand();
1140 friend class GDALProxyRasterBand;
1141 friend class GDALDefaultOverviews;
1148 void LeaveReadWrite();
1153 virtual CPLErr IReadBlock(
int nBlockXOff,
int nBlockYOff,
void * pData ) = 0;
1154 virtual CPLErr IWriteBlock(
int nBlockXOff,
int nBlockYOff,
void * pData );
1160 virtual int IGetDataCoverageStatus(
int nXOff,
int nYOff,
1161 int nXSize,
int nYSize,
1163 double* pdfDataPct);
1170 int nXOff,
int nYOff,
int nXSize,
int nYSize,
1171 void * pData,
int nBufXSize,
int nBufYSize,
1177 int InitBlockInfo();
1182 GDALRasterBlock *TryGetLockedBlockRef(
int nXBlockOff,
int nYBlockYOff );
1196 void GetBlockSize(
int *,
int * );
1197 CPLErr GetActualBlockSize (
int,
int,
int *,
int * );
1203 #ifndef DOXYGEN_SKIP
1204 OPTIONAL_OUTSIDE_GDAL(
nullptr)
1213 CPLErr FlushBlock(
int,
int,
int bWriteDirtyBlock = TRUE );
1215 unsigned char* GetIndexColorTranslationTo(
GDALRasterBand* poReferenceBand,
1216 unsigned char* pTranslationTable =
nullptr,
1217 int* pApproximateMatching =
nullptr);
1221 virtual CPLErr FlushCache();
1222 virtual char **GetCategoryNames();
1223 virtual double GetNoDataValue(
int *pbSuccess =
nullptr );
1224 virtual double GetMinimum(
int *pbSuccess =
nullptr );
1225 virtual double GetMaximum(
int *pbSuccess =
nullptr );
1226 virtual double GetOffset(
int *pbSuccess =
nullptr );
1227 virtual double GetScale(
int *pbSuccess =
nullptr );
1228 virtual const char *GetUnitType();
1231 virtual CPLErr Fill(
double dfRealValue,
double dfImaginaryValue = 0);
1233 virtual CPLErr SetCategoryNames(
char ** papszNames );
1234 virtual CPLErr SetNoDataValue(
double dfNoData );
1235 virtual CPLErr DeleteNoDataValue();
1238 virtual CPLErr SetOffset(
double dfNewOffset );
1239 virtual CPLErr SetScale(
double dfNewScale );
1240 virtual CPLErr SetUnitType(
const char * pszNewValue );
1242 virtual CPLErr GetStatistics(
int bApproxOK,
int bForce,
1243 double *pdfMin,
double *pdfMax,
1244 double *pdfMean,
double *padfStdDev );
1245 virtual CPLErr ComputeStatistics(
int bApproxOK,
1246 double *pdfMin,
double *pdfMax,
1247 double *pdfMean,
double *pdfStdDev,
1248 GDALProgressFunc,
void *pProgressData );
1249 virtual CPLErr SetStatistics(
double dfMin,
double dfMax,
1250 double dfMean,
double dfStdDev );
1251 virtual CPLErr ComputeRasterMinMax(
int,
double* );
1255 char **
GetMetadata(
const char * pszDomain =
"" )
override;
1257 const char * pszDomain )
override;
1259 const char * pszDomain )
override;
1261 const char * pszValue,
1262 const char * pszDomain )
override;
1265 virtual int HasArbitraryOverviews();
1266 virtual int GetOverviewCount();
1269 virtual CPLErr BuildOverviews(
const char * pszResampling,
1271 int * panOverviewList,
1272 GDALProgressFunc pfnProgress,
1273 void * pProgressData );
1275 virtual CPLErr AdviseRead(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
1276 int nBufXSize,
int nBufYSize,
1279 virtual CPLErr GetHistogram(
double dfMin,
double dfMax,
1280 int nBuckets,
GUIntBig * panHistogram,
1281 int bIncludeOutOfRange,
int bApproxOK,
1282 GDALProgressFunc,
void *pProgressData );
1284 virtual CPLErr GetDefaultHistogram(
double *pdfMin,
double *pdfMax,
1285 int *pnBuckets,
GUIntBig ** ppanHistogram,
1287 GDALProgressFunc,
void *pProgressData);
1288 virtual CPLErr SetDefaultHistogram(
double dfMin,
double dfMax,
1289 int nBuckets,
GUIntBig *panHistogram );
1295 virtual int GetMaskFlags();
1296 virtual CPLErr CreateMaskBand(
int nFlagsIn );
1303 int GetDataCoverageStatus(
int nXOff,
int nYOff,
1304 int nXSize,
int nYSize,
1305 int nMaskFlagStop = 0,
1306 double* pdfDataPct =
nullptr );
1308 std::shared_ptr<GDALMDArray> AsMDArray()
const;
1344 ~GDALAllValidMaskBand()
override;
1350 double *pdfMin,
double *pdfMax,
1351 double *pdfMean,
double *pdfStdDev,
1352 GDALProgressFunc,
void *pProgressData )
override;
1362 double dfNoDataValue;
1375 ~GDALNoDataMaskBand()
override;
1377 static bool IsNoDataInRange(
double dfNoDataValue,
1387 double *padfNodataValues;
1395 explicit GDALNoDataValuesMaskBand(
GDALDataset * );
1396 ~GDALNoDataValuesMaskBand()
override;
1419 ~GDALRescaledAlphaBand()
override;
1464 const char * pszValue,
1465 const char * pszDomain =
"" )
override;
1471 int nXSize,
int nYSize,
int nBands,
1474 GDALDataset *CreateMultiDimensional(
const char * pszName,
1478 CPLErr Delete(
const char * pszName );
1479 CPLErr Rename(
const char * pszNewName,
1480 const char * pszOldName );
1481 CPLErr CopyFiles(
const char * pszNewName,
1482 const char * pszOldName );
1486 GDALProgressFunc pfnProgress,
1498 int nXSize,
int nYSize,
int nBands,
1500 char ** papszOptions );
1503 int nXSize,
int nYSize,
int nBands,
1505 char ** papszOptions );
1507 GDALDataset *(*pfnCreateMultiDimensional)(
const char * pszName,
1511 CPLErr (*pfnDelete)(
const char * pszName );
1515 GDALProgressFunc pfnProgress,
1516 void * pProgressData );
1532 CPLErr (*pfnRename)(
const char * pszNewName,
1533 const char * pszOldName );
1534 CPLErr (*pfnCopyFiles)(
const char * pszNewName,
1535 const char * pszOldName );
1542 const char * pszName,
1543 char ** papszOptions );
1545 const char * pszName );
1554 GDALProgressFunc pfnProgress,
1557 static CPLErr DefaultCreateCopyMultiDimensional(
1562 GDALProgressFunc pfnProgress,
1563 void * pProgressData );
1572 GDALProgressFunc pfnProgress,
1573 void * pProgressData );
1575 static CPLErr QuietDelete(
const char * pszName,
1576 const char *
const *papszAllowedDrivers =
nullptr);
1579 static CPLErr DefaultRename(
const char * pszNewName,
1580 const char * pszOldName );
1581 static CPLErr DefaultCopyFiles(
const char * pszNewName,
1582 const char * pszOldName );
1595 {
return static_cast<GDALDriver*
>(hDriver); }
1616 std::map<CPLString, GDALDriver*> oMapNameToDrivers{};
1618 GDALDriver *GetDriver_unlocked(
int iDriver )
1619 {
return (iDriver >= 0 && iDriver < nDrivers) ?
1620 papoDrivers[iDriver] :
nullptr; }
1622 GDALDriver *GetDriverByName_unlocked(
const char * pszName )
1625 static char** GetSearchPaths(
const char* pszGDAL_DRIVER_PATH);
1627 static void CleanupPythonDrivers();
1635 int GetDriverCount(
void )
const;
1643 static void AutoLoadDrivers();
1644 void AutoSkipDrivers();
1646 static void AutoLoadPythonDrivers();
1747 GetNextUpdatedRegion(
double dfTimeout,
1748 int* pnBufXOff,
int* pnBufYOff,
1749 int* pnBufXSize,
int* pnBufYSize) = 0;
1750 virtual int LockBuffer(
double dfTimeout = -1.0 );
1751 virtual void UnlockBuffer();
1786 std::vector<std::unique_ptr<GDALEDTComponent>>&& components);
1797 const std::string&
GetName()
const {
return m_osName; }
1815 const std::vector<std::unique_ptr<GDALEDTComponent>>&
GetComponents()
const {
return m_aoComponents; }
1833 bool NeedsFreeDynamicMemory()
const;
1835 void FreeDynamicMemory(
void* pBuffer)
const;
1846 std::vector<std::unique_ptr<GDALEDTComponent>>&& components);
1848 std::string m_osName{};
1851 std::vector<std::unique_ptr<GDALEDTComponent>> m_aoComponents{};
1853 size_t m_nMaxStringLength = 0;
1878 const std::string&
GetName()
const {
return m_osName; }
1893 std::string m_osName;
1910 std::shared_ptr<GDALAttribute> GetAttributeFromAttributes(
const std::string& osName)
const;
1915 virtual std::shared_ptr<GDALAttribute> GetAttribute(
const std::string& osName)
const;
1917 virtual std::vector<std::shared_ptr<GDALAttribute>> GetAttributes(
CSLConstList papszOptions =
nullptr)
const;
1919 virtual std::shared_ptr<GDALAttribute> CreateAttribute(
1920 const std::string& osName,
1921 const std::vector<GUInt64>& anDimensions,
1942 std::string m_osName{};
1943 std::string m_osFullName{};
1945 GDALGroup(
const std::string& osParentName,
const std::string& osName);
1947 const GDALGroup* GetInnerMostGroup(
const std::string& osPathOrArrayOrDim,
1948 std::shared_ptr<GDALGroup>& curGroupHolder,
1949 std::string& osLastPart)
const;
1959 const std::string&
GetName()
const {
return m_osName; }
1967 virtual std::vector<std::string> GetMDArrayNames(
CSLConstList papszOptions =
nullptr)
const;
1968 virtual std::shared_ptr<GDALMDArray> OpenMDArray(
const std::string& osName,
1971 virtual std::vector<std::string> GetGroupNames(
CSLConstList papszOptions =
nullptr)
const;
1972 virtual std::shared_ptr<GDALGroup> OpenGroup(
const std::string& osName,
1975 virtual std::vector<std::shared_ptr<GDALDimension>> GetDimensions(
CSLConstList papszOptions =
nullptr)
const;
1977 virtual std::shared_ptr<GDALGroup> CreateGroup(
const std::string& osName,
1980 virtual std::shared_ptr<GDALDimension> CreateDimension(
const std::string& osName,
1981 const std::string& osType,
1982 const std::string& osDirection,
1986 virtual std::shared_ptr<GDALMDArray> CreateMDArray(
const std::string& osName,
1987 const std::vector<std::shared_ptr<GDALDimension>>& aoDimensions,
1991 GUInt64 GetTotalCopyCost()
const;
1993 virtual bool CopyFrom(
const std::shared_ptr<GDALGroup>& poDstRootGroup,
1995 const std::shared_ptr<GDALGroup>& poSrcGroup,
1999 GDALProgressFunc pfnProgress,
2000 void * pProgressData);
2004 std::shared_ptr<GDALMDArray> OpenMDArrayFromFullname(
2005 const std::string& osFullName,
2008 std::shared_ptr<GDALDimension> OpenDimensionFromFullname(
2009 const std::string& osFullName)
const;
2012 static constexpr
GUInt64 COPY_COST = 1000;
2029 std::string m_osName{};
2030 std::string m_osFullName{};
2031 std::weak_ptr<GDALAbstractMDArray> m_pSelf{};
2035 void SetSelf(std::weak_ptr<GDALAbstractMDArray>
self) { m_pSelf =
self; }
2037 bool CheckReadWriteParams(
const GUInt64* arrayStartIdx,
2038 const size_t* count,
2039 const GInt64*& arrayStep,
2043 const void* buffer_alloc_start,
2044 size_t buffer_alloc_size,
2045 std::vector<GInt64>& tmp_arrayStep,
2046 std::vector<GPtrDiff_t>& tmp_bufferStride)
const;
2048 virtual bool IRead(
const GUInt64* arrayStartIdx,
2049 const size_t* count,
2053 void* pDstBuffer)
const = 0;
2055 virtual bool IWrite(
const GUInt64* arrayStartIdx,
2056 const size_t* count,
2060 const void* pSrcBuffer);
2070 const std::string&
GetName()
const{
return m_osName; }
2078 GUInt64 GetTotalElementsCount()
const;
2080 virtual size_t GetDimensionCount()
const;
2082 virtual const std::vector<std::shared_ptr<GDALDimension>>& GetDimensions()
const = 0;
2086 virtual std::vector<GUInt64> GetBlockSize()
const;
2088 virtual std::vector<size_t> GetProcessingChunkSize(
size_t nMaxChunkMemory)
const;
2105 typedef bool (*FuncProcessPerChunkType)(
2107 const GUInt64* chunkArrayStartIdx,
2108 const size_t* chunkCount,
2113 virtual bool ProcessPerChunk(
const GUInt64* arrayStartIdx,
2115 const size_t* chunkSize,
2116 FuncProcessPerChunkType pfnFunc,
2119 bool Read(
const GUInt64* arrayStartIdx,
2120 const size_t* count,
2125 const void* pDstBufferAllocStart =
nullptr,
2126 size_t nDstBufferAllocSize = 0)
const;
2128 bool Write(
const GUInt64* arrayStartIdx,
2129 const size_t* count,
2133 const void* pSrcBuffer,
2134 const void* pSrcBufferAllocStart =
nullptr,
2135 size_t nSrcBufferAllocSize = 0);
2179 size_t size()
const {
return m_nSize; }
2203 mutable std::string m_osCachedVal{};
2207 GDALAttribute(
const std::string& osParentName,
const std::string& osName);
2212 std::vector<GUInt64> GetDimensionsSize()
const;
2215 const char* ReadAsString()
const;
2216 int ReadAsInt()
const;
2217 double ReadAsDouble()
const;
2219 std::vector<int> ReadAsIntArray()
const;
2220 std::vector<double> ReadAsDoubleArray()
const;
2223 bool Write(
const void* pabyValue,
size_t nLen);
2224 bool Write(
const char*);
2228 bool Write(
const double*,
size_t);
2231 static constexpr
GUInt64 COPY_COST = 100;
2241 class CPL_DLL GDALAttributeString final:
public GDALAttribute
2243 std::vector<std::shared_ptr<GDALDimension>> m_dims{};
2245 std::string m_osValue;
2254 void* pDstBuffer)
const override;
2257 GDALAttributeString(
const std::string& osParentName,
2258 const std::string& osName,
2259 const std::string& osValue);
2261 const std::vector<std::shared_ptr<GDALDimension>>&
GetDimensions()
const override;
2272 class CPL_DLL GDALAttributeNumeric final:
public GDALAttribute
2274 std::vector<std::shared_ptr<GDALDimension>> m_dims{};
2277 double m_dfValue = 0;
2278 std::vector<GUInt32> m_anValuesUInt32{};
2287 void* pDstBuffer)
const override;
2290 GDALAttributeNumeric(
const std::string& osParentName,
2291 const std::string& osName,
2293 GDALAttributeNumeric(
const std::string& osParentName,
2294 const std::string& osName,
2296 GDALAttributeNumeric(
const std::string& osParentName,
2297 const std::string& osName,
2298 const std::vector<GUInt32>& anValues);
2300 const std::vector<std::shared_ptr<GDALDimension>>&
GetDimensions()
const override;
2320 std::shared_ptr<GDALMDArray> GetView(
const std::vector<GUInt64>& indices)
const;
2322 inline std::shared_ptr<GDALMDArray> atInternal(std::vector<GUInt64>& indices)
const
2324 return GetView(indices);
2327 template<
typename... GUInt64VarArg>
2329 inline std::shared_ptr<GDALMDArray> atInternal(std::vector<GUInt64>& indices,
2330 GUInt64 idx, GUInt64VarArg... tail)
const
2332 indices.push_back(idx);
2333 return atInternal(indices, tail...);
2338 GDALMDArray(
const std::string& osParentName,
const std::string& osName);
2343 GUInt64 GetTotalCopyCost()
const;
2350 GDALProgressFunc pfnProgress,
2351 void * pProgressData);
2354 virtual bool IsWritable()
const = 0;
2358 virtual const std::string& GetUnit()
const;
2360 virtual bool SetUnit(
const std::string& osUnit);
2364 virtual std::shared_ptr<OGRSpatialReference> GetSpatialRef()
const;
2366 virtual const void* GetRawNoDataValue()
const;
2368 double GetNoDataValueAsDouble(
bool* pbHasNoData =
nullptr)
const;
2370 virtual bool SetRawNoDataValue(
const void* pRawNoData);
2372 bool SetNoDataValue(
double dfNoData);
2374 virtual double GetOffset(
bool* pbHasOffset =
nullptr)
const;
2376 virtual double GetScale(
bool* pbHasScale =
nullptr)
const;
2378 virtual bool SetOffset(
double dfOffset);
2380 virtual bool SetScale(
double dfScale);
2382 std::shared_ptr<GDALMDArray> GetView(
const std::string& viewExpr)
const;
2384 std::shared_ptr<GDALMDArray> operator[](
const std::string& fieldName)
const;
2395 template<
typename... GUInt64VarArg>
2397 std::shared_ptr<GDALMDArray>
at(
GUInt64 idx, GUInt64VarArg... tail)
const
2399 std::vector<GUInt64> indices;
2400 indices.push_back(idx);
2401 return atInternal(indices, tail...);
2404 virtual std::shared_ptr<GDALMDArray> Transpose(
const std::vector<int>& anMapNewAxisToOldAxis)
const;
2406 std::shared_ptr<GDALMDArray> GetUnscaled()
const;
2408 virtual std::shared_ptr<GDALMDArray> GetMask(
CSLConstList papszOptions)
const;
2410 virtual GDALDataset* AsClassicDataset(
size_t iXDim,
size_t iYDim)
const;
2413 static constexpr
GUInt64 COPY_COST = 1000;
2415 bool CopyFromAllExceptValues(
const GDALMDArray* poSrcArray,
2419 GDALProgressFunc pfnProgress,
2420 void * pProgressData);
2426 m_nStartIdx(nStartIdx), m_nIncr(nIncr) {}
2431 std::string m_osFieldName{};
2435 std::vector<size_t> m_mapDimIdxToParentDimIdx{};
2436 std::vector<Range> m_parentRanges{} ;
2439 virtual std::shared_ptr<GDALMDArray> GetView(
const std::string& viewExpr,
2440 bool bRenameDimensions,
2441 std::vector<ViewSpec>& viewSpecs)
const;
2451 class CPL_DLL GDALMDArrayRegularlySpaced:
public GDALMDArray
2454 double m_dfIncrement;
2455 double m_dfOffsetInIncrement;
2457 std::vector<std::shared_ptr<GDALDimension>> m_dims;
2458 std::vector<std::shared_ptr<GDALAttribute>> m_attributes{};
2467 void* pDstBuffer)
const override;
2470 GDALMDArrayRegularlySpaced(
2471 const std::string& osParentName,
2472 const std::string& osName,
2473 const std::shared_ptr<GDALDimension>& poDim,
2474 double dfStart,
double dfIncrement,
2475 double dfOffsetInIncrement);
2477 bool IsWritable()
const override {
return false; }
2479 const std::vector<std::shared_ptr<GDALDimension>>&
GetDimensions()
const override;
2485 void AddAttribute(
const std::shared_ptr<GDALAttribute>& poAttr);
2509 const std::string& osName,
2510 const std::string& osType,
2511 const std::string& osDirection,
2521 const std::string&
GetName()
const {
return m_osName; }
2537 const std::string&
GetType()
const {
return m_osType; }
2555 virtual std::shared_ptr<GDALMDArray> GetIndexingVariable()
const;
2557 virtual bool SetIndexingVariable(std::shared_ptr<GDALMDArray> poIndexingVariable);
2561 std::string m_osName;
2562 std::string m_osFullName;
2563 std::string m_osType;
2564 std::string m_osDirection;
2575 class CPL_DLL GDALDimensionWeakIndexingVar:
public GDALDimension
2577 std::weak_ptr<GDALMDArray> m_poIndexingVariable{};
2580 GDALDimensionWeakIndexingVar(
const std::string& osParentName,
2581 const std::string& osName,
2582 const std::string& osType,
2583 const std::string& osDirection,
2599 GDALRegenerateOverviewsMultiBand(
int nBands,
GDALRasterBand** papoSrcBands,
2602 const char * pszResampling,
2603 GDALProgressFunc pfnProgress,
void * pProgressData );
2605 typedef CPLErr (*GDALResampleFunction)
2606 (
double dfXRatioDstToSrc,
2607 double dfYRatioDstToSrc,
2612 GByte * pabyChunkNodataMask,
2613 int nChunkXOff,
int nChunkXSize,
2614 int nChunkYOff,
int nChunkYSize,
2615 int nDstXOff,
int nDstXOff2,
2616 int nDstYOff,
int nDstYOff2,
2618 const char * pszResampling,
2619 int bHasNoData,
float fNoDataValue,
2622 bool bPropagateNoData );
2624 GDALResampleFunction GDALGetResampleFunction(
const char* pszResampling,
2627 #ifdef GDAL_ENABLE_RESAMPLING_MULTIBAND
2628 typedef CPLErr (*GDALResampleFunctionMultiBands)
2629 (
double dfXRatioDstToSrc,
2630 double dfYRatioDstToSrc,
2634 void * pChunk,
int nBands,
2635 GByte * pabyChunkNodataMask,
2636 int nChunkXOff,
int nChunkXSize,
2637 int nChunkYOff,
int nChunkYSize,
2638 int nDstXOff,
int nDstXOff2,
2639 int nDstYOff,
int nDstYOff2,
2641 const char * pszResampling,
2642 int bHasNoData,
float fNoDataValue,
2646 GDALResampleFunctionMultiBands GDALGetResampleFunctionMultiBands(
const char* pszResampling,
2650 GDALDataType GDALGetOvrWorkDataType(
const char* pszResampling,
2656 HFAAuxBuildOverviews(
const char *pszOvrFilename,
GDALDataset *poParentDS,
2658 int nBands,
int *panBandList,
2659 int nNewOverviews,
int *panNewOverviewList,
2660 const char *pszResampling,
2661 GDALProgressFunc pfnProgress,
2662 void *pProgressData );
2665 GTIFFBuildOverviews(
const char * pszFilename,
2667 int nOverviews,
int * panOverviewList,
2668 const char * pszResampling,
2669 GDALProgressFunc pfnProgress,
void * pProgressData );
2672 int &nXOff,
int &nYOff,
2673 int &nXSize,
int &nYSize,
2674 int nBufXSize,
int nBufYSize) CPL_WARN_DEPRECATED(
"Use GDALBandGetBestOverviewLevel2 instead");
2675 int CPL_DLL GDALBandGetBestOverviewLevel2(
GDALRasterBand* poBand,
2676 int &nXOff,
int &nYOff,
2677 int &nXSize,
int &nYSize,
2678 int nBufXSize,
int nBufYSize,
2681 int CPL_DLL GDALOvLevelAdjust(
int nOvLevel,
int nXSize ) CPL_WARN_DEPRECATED(
"Use GDALOvLevelAdjust2 instead");
2682 int CPL_DLL GDALOvLevelAdjust2(
int nOvLevel,
int nXSize,
int nYSize );
2683 int CPL_DLL GDALComputeOvFactor(
int nOvrXSize,
int nRasterXSize,
2684 int nOvrYSize,
int nRasterYSize );
2687 GDALFindAssociatedAuxFile(
const char *pszBasefile,
GDALAccess eAccess,
2694 int CPL_DLL GDALCheckDatasetDimensions(
int nXSize,
int nYSize );
2695 int CPL_DLL GDALCheckBandCount(
int nBands,
int bIsZeroAllowed );
2700 int CPL_DLL GDALReadWorldFile2(
const char *pszBaseFilename,
const char *pszExtension,
2701 double *padfGeoTransform,
char** papszSiblingFiles,
2702 char** ppszWorldFileNameOut);
2703 int GDALReadTabFile2(
const char * pszBaseFilename,
2704 double *padfGeoTransform,
char **ppszWKT,
2705 int *pnGCPCount,
GDAL_GCP **ppasGCPs,
2706 char** papszSiblingFiles,
char** ppszTabFileNameOut );
2713 void GDALNullifyOpenDatasetsList();
2714 CPLMutex** GDALGetphDMMutex();
2715 CPLMutex** GDALGetphDLMutex();
2716 void GDALNullifyProxyPoolSingleton();
2718 void GDALSetResponsiblePIDForCurrentThread(
GIntBig responsiblePID);
2719 GIntBig GDALGetResponsiblePIDForCurrentThread();
2721 CPLString GDALFindAssociatedFile(
const char *pszBasename,
const char *pszExt,
2724 CPLErr EXIFExtractMetadata(
char**& papszMetadata,
2725 void *fpL,
int nOffset,
2726 int bSwabflag,
int nTIFFHEADER,
2727 int& nExifOffset,
int& nInterOffset,
int& nGPSOffset);
2730 const char*
const* papszOptionOptions);
2731 int GDALValidateOptions(
const char* pszOptionList,
2732 const char*
const* papszOptionsToValidate,
2733 const char* pszErrorMessageOptionType,
2734 const char* pszErrorMessageContainerName);
2740 int nXSize,
int nYSize,
2741 int nBufXSize,
int nBufYSize);
2745 int bThisLevelOnly);
2750 template<
class T>
inline bool ARE_REAL_EQUAL(T fVal1, T fVal2,
int ulp = 2)
2752 return fVal1 == fVal2 ||
2753 std::abs(fVal1 - fVal2) < std::numeric_limits<float>::epsilon() * std::abs(fVal1+fVal2) * ulp;
2756 double GDALAdjustNoDataCloseToFloatMax(
double dfVal);
2758 #define DIV_ROUND_UP(a, b) ( ((a) % (b)) == 0 ? ((a) / (b)) : (((a) / (b)) + 1) )
2762 #define GDALSTAT_APPROX_NUMSAMPLES 2500
2764 void GDALSerializeGCPListToXML(
CPLXMLNode* psParentNode,
2768 void GDALDeserializeGCPListFromXML(
CPLXMLNode* psGCPList,
2773 void GDALSerializeOpenOptionsToXML(
CPLXMLNode* psParentNode,
char** papszOpenOptions);
2774 char** GDALDeserializeOpenOptionsFromXML(
CPLXMLNode* psParentNode );
2776 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:1435
const std::string & GetFullName() const
Return the full name.
Definition: gdal_priv.h:2527
#define CPL_PRINT_FUNC_FORMAT(format_idx, arg_idx)
Tag a function to have printf() formatting.
Definition: cpl_port.h:917
@ GDAL_IDENTIFY_FALSE
Identify determined the file is not recognized by the probed driver.
Definition: gdal_priv.h:1437
VSILFILE * fpL
Pointer to the file.
Definition: gdal_priv.h:293
size_t GetSize() const
Return data type size in bytes.
Definition: gdal_priv.h:1823
virtual bool SetIndexingVariable(std::shared_ptr< GDALMDArray > poIndexingVariable)
Set the variable that is used to index the dimension.
Definition: gdalmultidim.cpp:5359
int GDALGetDataTypeSizeBytes(GDALDataType)
Get data type size in bytes.
Definition: gdal_misc.cpp:305
const std::string & GetFullName() const
Return the full name of the group.
Definition: gdal_priv.h:1965
unsigned char GByte
Unsigned byte type.
Definition: cpl_port.h:215
int GetYOffset() const
Return y offset.
Definition: gdal_priv.h:1700
Class used to represent potentially complex data types.
Definition: gdal_priv.h:1774
int GetYSize() const
Return the height of the block.
Definition: gdal_priv.h:942
std::input_iterator_tag iterator_category
iterator_category
Definition: gdal_priv.h:702
GUIntBig GUInt64
Unsigned 64 bit integer type.
Definition: cpl_port.h:269
Class for dataset open functions.
Definition: gdal_priv.h:266
Layer iterator.
Definition: gdal_priv.h:692
virtual CPLErr ComputeStatistics(int bApproxOK, double *pdfMin, double *pdfMax, double *pdfMean, double *pdfStdDev, GDALProgressFunc, void *pProgressData)
Compute image statistics.
Definition: gdalrasterband.cpp:4895
int GetPixelSpace() const
Return pixel spacing.
Definition: gdal_priv.h:1736
const std::string & GetFullName() const
Return the name of an array or attribute.
Definition: gdal_priv.h:2076
GPtrDiff_t GetBlockSize() const
Return the block size in bytes.
Definition: gdal_priv.h:954
Class for a component of a compound extended data type.
Definition: gdal_priv.h:1865
int GetBandCount() const
Return band count.
Definition: gdal_priv.h:1728
OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
Return begin of feature iterator.
Definition: ogrsf_frmts.h:287
void difference_type
difference_type
Definition: gdal_priv.h:700
virtual bool IsWritable() const =0
Return whether an array is writable;.
This class represents a style table.
Definition: ogr_featurestyle.h:84
@ GEDTC_NUMERIC
Numeric value.
Definition: gdal.h:280
String list class designed around our use of C "char**" string lists.
Definition: cpl_string.h:441
Class used as a session object for asynchronous requests.
Definition: gdal_priv.h:1662
@ GDT_Unknown
Definition: gdal.h:61
GIntBig GPtrDiff_t
Integer type large enough to hold the difference between 2 addresses.
Definition: cpl_port.h:286
GDALExtendedDataTypeClass GetClass() const
Return type class.
Definition: gdal_priv.h:1803
int GetBufferYSize() const
Return buffer height.
Definition: gdal_priv.h:1720
Format specific driver.
Definition: gdal_priv.h:1457
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:157
Abstract class, implemented by GDALAttribute and GDALMDArray.
Definition: gdal_priv.h:2025
Class returned by GetBands() that act as a container for raster bands.
Definition: gdal_priv.h:464
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:1740
void GDALClose(GDALDatasetH)
Close GDAL dataset.
Definition: gdaldataset.cpp:3618
void * GetDataRef(void)
Return the data buffer.
Definition: gdal_priv.h:950
int nOpenFlags
Open flags.
Definition: gdal_priv.h:285
char ** papszOpenOptions
Open options.
Definition: gdal_priv.h:280
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:325
Color tuple.
Definition: gdal.h:1158
const std::string & GetName() const
Return the name.
Definition: gdal_priv.h:2521
virtual const std::vector< std::shared_ptr< GDALDimension > > & GetDimensions() const =0
Return the dimensions of an attribute/array.
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:332
A single raster band (or channel).
Definition: gdal_priv.h:1098
GIntBig GInt64
Signed 64 bit integer type.
Definition: cpl_port.h:267
GDALIdentifyEnum
Enumeration used by GDALDriver::pfnIdentify().
Definition: gdal_priv.h:1432
int GetBandSpace() const
Return band spacing.
Definition: gdal_priv.h:1744
virtual std::vector< std::shared_ptr< GDALAttribute > > GetAttributes(CSLConstList papszOptions=nullptr) const
Return the list of attributes contained in a GDALMDArray or GDALGroup.
Definition: gdalmultidim.cpp:113
const std::string & GetDirection() const
Return the axis direction.
Definition: gdal_priv.h:2547
GDALDataType GetBufferType() const
Return buffer data type.
Definition: gdal_priv.h:1724
GDALExtendedDataTypeClass
Enumeration giving the class of a GDALExtendedDataType.
Definition: gdal.h:278
const GByte * data() const
Return pointer to the start of data.
Definition: gdal_priv.h:2177
GDALDataType
Definition: gdal.h:60
Document node structure.
Definition: cpl_minixml.h:69
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
const std::string & GetName() const
Return the name of an array or attribute.
Definition: gdal_priv.h:2070
A single raster block in the block cache.
Definition: gdal_priv.h:877
void * GDALMajorObjectH
Opaque type used for the C bindings of the C++ GDALMajorObject class.
Definition: gdal.h:252
Store the raw result of an attribute value, which might contain dynamically allocated structures (lik...
Definition: gdal_priv.h:2148
Class modeling a named container of GDALAttribute, GDALMDArray or other GDALGroup.
Definition: gdal_priv.h:1938
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:337
char ** GetOpenOptions()
Return open options.
Definition: gdal_priv.h:600
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:175
size_t size() const
Return the size in bytes of the raw result.
Definition: gdal_priv.h:2179
Interface used to get a single GDALAttribute or a set of GDALAttribute.
Definition: gdal_priv.h:1907
int bStatOK
Whether stat()'ing the file was successful.
Definition: gdal_priv.h:288
#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:1612
Class modeling a multi-dimensional array.
Definition: gdal_priv.h:2318
GByte * pabyHeader
Buffer with first bytes of the file.
Definition: gdal_priv.h:298
int GetYSize() const
Return height.
Definition: gdal_priv.h:1708
GDALAccess eAccess
Access flag.
Definition: gdal_priv.h:283
virtual GDALRasterBand * GetMaskBand()
Return the mask band associated with the band.
Definition: gdalrasterband.cpp:5955
virtual char ** GetMetadata(const char *pszDomain="")
Fetch metadata.
Definition: gdalmajorobject.cpp:249
std::shared_ptr< GDALMDArray > at(GUInt64 idx, GUInt64VarArg... tail) const
Return a view of the array using integer indexing.
Definition: gdal_priv.h:2397
GDALDataType GetNumericDataType() const
Return numeric data type (only valid when GetClass() == GEDTC_NUMERIC)
Definition: gdal_priv.h:1809
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1212
static GDALExtendedDataType CreateString(size_t nMaxStringLength=0)
Return a new GDALExtendedDataType of class GEDTC_STRING.
Definition: gdalmultidim.cpp:5087
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:639
@ GDT_Float64
Definition: gdal.h:70
int DropLock(void)
Decrement the lock count.
Definition: gdal_priv.h:918
int bIsDirectory
Whether the file is a directory.
Definition: gdal_priv.h:290
const std::string & GetType() const
Return the axis type.
Definition: gdal_priv.h:2537
Ground Control Point.
Definition: gdal.h:660
#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.
Class modeling a a dimension / axis used to index multidimensional arrays.
Definition: gdal_priv.h:2504
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:3217
#define CPL_NULL_TERMINATED
Null terminated variadic.
Definition: cpl_port.h:907
const std::vector< std::unique_ptr< GDALEDTComponent > > & GetComponents() const
Return the components of the data type (only valid when GetClass() == GEDTC_COMPOUND)
Definition: gdal_priv.h:1815
virtual const GDALExtendedDataType & GetDataType() const =0
Return the data type of an attribute/array.
Object returned by GetFeatures() iterators.
Definition: gdal_priv.h:652
GDALDataset * GetGDALDataset()
Return dataset.
Definition: gdal_priv.h:1692
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:627
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:301
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:3989
static GDALColorTableH ToHandle(GDALColorTable *poCT)
Convert a GDALColorTable* to a GDALRasterBandH.
Definition: gdal_priv.h:1017
int AddLock(void)
Increment the lock count.
Definition: gdal_priv.h:916
virtual CPLErr CreateMaskBand(int nFlagsIn)
Adds a mask band to the dataset.
Definition: gdaldataset.cpp:3028
GIntBig GSpacing
Type to express pixel, line or band spacing.
Definition: gdal.h:273
GUIntBig vsi_l_offset
Type for a file offset.
Definition: cpl_vsi.h:140
GUInt64 GetSize() const
Return the size, that is the number of values along the dimension.
Definition: gdal_priv.h:2553
GDALAccess
Definition: gdal.h:113
void MarkSuppressOnClose()
Set that the dataset must be deleted on close.
Definition: gdal_priv.h:595
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
size_t GetOffset() const
Return the offset (in bytes) of the component in the compound data type.
Definition: gdal_priv.h:1884
static GDALDriver * FromHandle(GDALDriverH hDriver)
Convert a GDALDriverH to a GDALDriver*.
Definition: gdal_priv.h:1594
const GByte & operator[](size_t idx) const
Return byte at specified index.
Definition: gdal_priv.h:2175
@ GDAL_IDENTIFY_TRUE
Identify determined the file is recognized by the probed driver.
Definition: gdal_priv.h:1439
int OGRErr
Type for a OGR error.
Definition: ogr_core.h:318
@ GA_ReadOnly
Definition: gdal.h:114
virtual std::shared_ptr< GDALMDArray > GetIndexingVariable() const
Return the variable that is used to index the dimension (if there is one).
Definition: gdalmultidim.cpp:5338
int GetXSize() const
Return width.
Definition: gdal_priv.h:1704
int GetDirty() const
Return the dirty flag.
Definition: gdal_priv.h:946
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition: cpl_port.h:248
void pointer
pointer
Definition: gdal_priv.h:701
int GetBufferXSize() const
Return buffer width.
Definition: gdal_priv.h:1716
int nHeaderBytes
Number of bytes in pabyHeader.
Definition: gdal_priv.h:296
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:345
static GDALDriverH ToHandle(GDALDriver *poDriver)
Convert a GDALDriver* to a GDALDriverH.
Definition: gdal_priv.h:1588
void static GDALRasterBandH ToHandle(GDALRasterBand *poBand)
Convert a GDALRasterBand* to a GDALRasterBandH.
Definition: gdal_priv.h:1317
int GetYOff() const
Return the y offset of the top-left corner of the block.
Definition: gdal_priv.h:934
#define CPL_WARN_UNUSED_RESULT
Qualifier to warn when the return value of a function is not used.
Definition: cpl_port.h:942
GDALAccess GetAccess() const
Return access mode.
Definition: gdal_priv.h:589
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:742
Object with metadata.
Definition: gdal_priv.h:133
bool Write(const GUInt64 *arrayStartIdx, const size_t *count, const GInt64 *arrayStep, const GPtrDiff_t *bufferStride, const GDALExtendedDataType &bufferDataType, const void *pSrcBuffer, const void *pSrcBufferAllocStart=nullptr, size_t nSrcBufferAllocSize=0)
Write part or totality of a multidimensional array or attribute.
Definition: gdalmultidim.cpp:1310
CPLErr
Error category.
Definition: cpl_error.h:52
Class modeling an attribute that has a name, a value and a type, and is typically used to describe a ...
Definition: gdal_priv.h:2201
const GDALExtendedDataType & GetType() const
Return the data type of the component.
Definition: gdal_priv.h:1890
char * pszFilename
Filename.
Definition: gdal_priv.h:278
static GDALColorTable * FromHandle(GDALColorTableH hCT)
Convert a GDALColorTableH to a GDALColorTable*.
Definition: gdal_priv.h:1023
@ 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:6220
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:1696
size_t GetMaxStringLength() const
Return the maximum length of a string in bytes.
Definition: gdal_priv.h:1829
GDALRasterBand * GetBand()
Accessor to source GDALRasterBand object.
Definition: gdal_priv.h:962
Class returned by GetLayers() that acts as a range of layers.
Definition: gdal_priv.h:679
int GetXOff() const
Return the x offset of the top-left corner of the block.
Definition: gdal_priv.h:930
GDALDataType GetDataType() const
Return the data type.
Definition: gdal_priv.h:926
static GDALDataset * FromHandle(GDALDatasetH hDS)
Convert a GDALDatasetH to a GDALDataset*.
Definition: gdal_priv.h:633
GDALPaletteInterp
Definition: gdal.h:216
static GDALExtendedDataType Create(GDALDataType eType)
Return a new GDALExtendedDataType of class GEDTC_NUMERIC.
Definition: gdalmultidim.cpp:5024
static GDALMajorObjectH ToHandle(GDALMajorObject *poMajorObject)
Convert a GDALMajorObject* to a GDALMajorObjectH.
Definition: gdal_priv.h:169
void * GDALRasterBandH
Opaque type used for the C bindings of the C++ GDALRasterBand class.
Definition: gdal.h:258
const std::string & GetName() const
Return the name of the group.
Definition: gdal_priv.h:1959
@ wkbUnknown
unknown type, non-standard
Definition: ogr_core.h:347
void * GetBuffer()
Return buffer.
Definition: gdal_priv.h:1712
std::unique_ptr< GDALDataset, GDALDatasetUniquePtrDeleter > GDALDatasetUniquePtr
Unique pointer type for GDALDataset.
Definition: gdal_priv.h:867
const std::string & GetName() const
Return type name.
Definition: gdal_priv.h:1797
#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:1003
const std::string & GetName() const
Return the name.
Definition: gdal_priv.h:1878
int GetXSize() const
Return the width of the block.
Definition: gdal_priv.h:938
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:1323
A color table / palette.
Definition: gdal_priv.h:992
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:1732
void * GDALDriverH
Opaque type used for the C bindings of the C++ GDALDriver class.
Definition: gdal.h:261