31 #ifndef GDALWARPER_H_INCLUDED
32 #define GDALWARPER_H_INCLUDED
44 #include "cpl_multiproc.h"
78 (*GDALMaskFunc)(
void *pMaskFuncArg,
81 int nXSize,
int nYSize,
82 GByte **papabyImageData,
83 int bMaskIsFloat,
void *pMask );
86 GDALWarpNoDataMasker(
void *pMaskFuncArg,
int nBandCount,
GDALDataType eType,
87 int nXOff,
int nYOff,
int nXSize,
int nYSize,
88 GByte **papabyImageData,
int bMaskIsFloat,
89 void *pValidityMask,
int* pbOutAllValid );
92 GDALWarpDstAlphaMasker(
void *pMaskFuncArg,
int nBandCount,
GDALDataType eType,
93 int nXOff,
int nYOff,
int nXSize,
int nYSize,
95 int bMaskIsFloat,
void *pValidityMask );
97 GDALWarpSrcAlphaMasker(
void *pMaskFuncArg,
int nBandCount,
GDALDataType eType,
98 int nXOff,
int nYOff,
int nXSize,
int nYSize,
100 int bMaskIsFloat,
void *pValidityMask,
int* pbOutAllOpaque );
103 GDALWarpSrcMaskMasker(
void *pMaskFuncArg,
int nBandCount,
GDALDataType eType,
104 int nXOff,
int nYOff,
int nXSize,
int nYSize,
106 int bMaskIsFloat,
void *pValidityMask );
109 GDALWarpCutlineMasker(
void *pMaskFuncArg,
int nBandCount,
GDALDataType eType,
110 int nXOff,
int nYOff,
int nXSize,
int nYSize,
112 int bMaskIsFloat,
void *pValidityMask );
206 CPLErr (*pfnPreWarpChunkProcessor)(
void *pKern,
void *pArg );
211 CPLErr (*pfnPostWarpChunkProcessor)(
void *pKern,
void *pArg);
228 void CPL_DLL CPL_STDCALL
231 void CPL_DLL CPL_STDCALL
234 void CPL_DLL CPL_STDCALL
237 void CPL_DLL CPL_STDCALL
240 void CPL_DLL CPL_STDCALL
243 void CPL_DLL CPL_STDCALL
246 void CPL_DLL CPL_STDCALL
260 CPLErr CPL_DLL CPL_STDCALL
265 GDALProgressFunc pfnProgress,
void *pProgressArg,
268 CPLErr CPL_DLL CPL_STDCALL
270 const char *pszDstFilename,
const char *pszDstWKT,
274 GDALProgressFunc pfnProgress,
void *pProgressArg,
283 const char *pszSrcWKT,
const char *pszDstWKT,
289 int nPixels,
int nLines,
double *padfGeoTransform,
292 CPLErr CPL_DLL CPL_STDCALL
298 #if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS)
309 #define WARP_EXTRA_ELTS 1
420 void* GWKThreadsCreate(
char** papszWarpOptions,
422 void* pTransformerArg);
423 void GWKThreadsEnd(
void* psThreadDataIn);
437 typedef struct _GDALWarpChunk GDALWarpChunk;
448 int ValidateOptions();
450 CPLErr ComputeSourceWindow(
int nDstXOff,
int nDstYOff,
451 int nDstXSize,
int nDstYSize,
452 int *pnSrcXOff,
int *pnSrcYOff,
453 int *pnSrcXSize,
int *pnSrcYSize,
454 double *pdfSrcXExtraSize,
double *pdfSrcYExtraSize,
455 double* pdfSrcFillRatio );
458 const char *pszType );
461 CPLMutex *hWarpMutex;
465 GDALWarpChunk *pasChunkList;
468 unsigned long nLastTimeReported;
472 void WipeChunkList();
473 CPLErr CollectChunkListInternal(
int nDstXOff,
int nDstYOff,
474 int nDstXSize,
int nDstYSize );
475 void CollectChunkList(
int nDstXOff,
int nDstYOff,
476 int nDstXSize,
int nDstYSize );
477 void ReportTiming(
const char * );
484 void* CreateDestinationBuffer(
int nDstXSize,
int nDstYSize,
485 int *pbWasInitialized =
nullptr );
486 static void DestroyDestinationBuffer(
void* pDstBuffer);
490 CPLErr ChunkAndWarpImage(
int nDstXOff,
int nDstYOff,
491 int nDstXSize,
int nDstYSize );
492 CPLErr ChunkAndWarpMulti(
int nDstXOff,
int nDstYOff,
493 int nDstXSize,
int nDstYSize );
494 CPLErr WarpRegion(
int nDstXOff,
int nDstYOff,
495 int nDstXSize,
int nDstYSize,
496 int nSrcXOff=0,
int nSrcYOff=0,
497 int nSrcXSize=0,
int nSrcYSize=0,
498 double dfProgressBase=0.0,
double dfProgressScale=1.0);
499 CPLErr WarpRegion(
int nDstXOff,
int nDstYOff,
500 int nDstXSize,
int nDstYSize,
501 int nSrcXOff,
int nSrcYOff,
502 int nSrcXSize,
int nSrcYSize,
503 double dfSrcXExtraSize,
double dfSrcYExtraSize,
504 double dfProgressBase,
double dfProgressScale);
505 CPLErr WarpRegionToBuffer(
int nDstXOff,
int nDstYOff,
506 int nDstXSize,
int nDstYSize,
509 int nSrcXOff=0,
int nSrcYOff=0,
510 int nSrcXSize=0,
int nSrcYSize=0,
511 double dfProgressBase=0.0,
double dfProgressScale=1.0);
512 CPLErr WarpRegionToBuffer(
int nDstXOff,
int nDstYOff,
513 int nDstXSize,
int nDstYSize,
516 int nSrcXOff,
int nSrcYOff,
517 int nSrcXSize,
int nSrcYSize,
518 double dfSrcXExtraSize,
double dfSrcYExtraSize,
519 double dfProgressBase,
double dfProgressScale);
534 int,
int,
int,
int,
int,
int,
int,
int );
537 int,
int,
int,
int );
546 typedef double (*FilterFuncType)(
double dfX);
550 typedef double (*FilterFunc4ValuesType)(
double* padfVals);
551 FilterFunc4ValuesType GWKGetFilterFunc4Values(
GDALResampleAlg eResampleAlg);
void * pDstValidityMaskFuncArg
Unused.
Definition: gdalwarper.h:203
int nSrcXOff
X offset of the source buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:380
Definition: gdalwarper.h:63
int nFiltInitX
X filtering offset.
Definition: gdalwarper.h:375
GDALDataType
Definition: gdal.h:60
double dfYScale
Y resampling scale, i.e.
Definition: gdalwarper.h:365
Document node structure.
Definition: cpl_minixml.h:66
This class represents the lowest level of abstraction of warping.
Definition: gdalwarper.h:318
Definitions for CPL mini XML Parser/Serializer.
Definition: gdalwarper.h:54
Definition: gdalwarper.h:61
void GDALWarpInitDstNoDataReal(GDALWarpOptions *, double dNoDataReal)
Initialize padfDstNoDataReal with specified value.
Definition: gdalwarper.cpp:1336
GByte ** papabySrcImage
Array of nBands source images of size nSrcXSize * nSrcYSize.
Definition: gdalwarper.h:342
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:337
double dfXScale
X resampling scale, i.e.
Definition: gdalwarper.h:363
Definition: gdalwarper.h:72
CPLErr GDALInitializeWarpedVRT(GDALDatasetH hDS, GDALWarpOptions *psWO)
Set warp info on virtual warped dataset.
Definition: vrtwarped.cpp:1159
GUInt32 * panUnifiedSrcValid
Unified validity mask of size (nSrcXSize * nSrcYSize + WARP_EXTRA_ELTS) / 8.
Definition: gdalwarper.h:347
int nDstXSize
Width of the destination image.
Definition: gdalwarper.h:352
int * panDstBands
Definition: gdalwarper.h:147
void * pProgressArg
Definition: gdalwarper.h:172
int nDstXOff
X offset of the destination buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:385
unsigned int GUInt32
Unsigned int32 type.
Definition: cpl_port.h:207
double dfWarpMemoryLimit
Definition: gdalwarper.h:125
int nSrcAlphaBand
Definition: gdalwarper.h:150
Definition: gdalwarper.h:62
void * GDALDatasetH
Opaque type used for the C bindings of the C++ GDALDataset class.
Definition: gdal.h:255
unsigned char GByte
Unsigned byte type.
Definition: cpl_port.h:215
GDALMaskFunc pfnSrcDensityMaskFunc
Unused.
Definition: gdalwarper.h:191
CPLErr GDALWarpRegionToBuffer(GDALWarpOperationH, int, int, int, int, void *, GDALDataType, int, int, int, int)
Definition: gdalwarpoperation.cpp:2218
char ** papszWarpOptions
Warp options.
Definition: gdalwarper.h:324
void ** papSrcPerBandValidityMaskFuncArg
Unused.
Definition: gdalwarper.h:183
void GDALWarpInitSrcNoDataReal(GDALWarpOptions *, double dNoDataReal)
Initialize padfSrcNoDataReal with specified value.
Definition: gdalwarper.cpp:1356
Definition: gdalwarper.h:55
void GDALWarpInitDefaultBandMapping(GDALWarpOptions *, int nBandCount)
Init src and dst band mappings such that Bands[i] = i+1 for nBandCount Does nothing if psOptionsIn->n...
Definition: gdalwarper.cpp:1524
void * pSrcDensityMaskFuncArg
Unused.
Definition: gdalwarper.h:193
Definition: gdalwarper.h:56
void * pPostWarpProcessorArg
Unused.
Definition: gdalwarper.h:213
GUInt32 * panDstValid
Validify mask of size (nDstXSize * nDstYSize) / 8.
Definition: gdalwarper.h:358
double * padfDstNoDataReal
Definition: gdalwarper.h:162
GWKAverageOrModeAlg
Definition: gdalwarper.h:67
GDALDataType eWorkingDataType
Working data type.
Definition: gdalwarper.h:329
float * pafUnifiedSrcDensity
Unified source density of size nSrcXSize * nSrcYSize + WARP_EXTRA_ELTS.
Definition: gdalwarper.h:349
double * padfSrcNoDataImag
Definition: gdalwarper.h:159
int nFiltInitY
Y filtering offset.
Definition: gdalwarper.h:377
GDALResampleAlg eResampleAlg
Definition: gdalwarper.h:128
CPLErr GDALChunkAndWarpMulti(GDALWarpOperationH, int, int, int, int)
Definition: gdalwarpoperation.cpp:1156
GDALMaskFunc pfnDstValidityMaskFunc
Unused.
Definition: gdalwarper.h:201
CPLErr GDALWarpRegion(GDALWarpOperationH, int, int, int, int, int, int, int, int)
Definition: gdalwarpoperation.cpp:1601
GDALDatasetH GDALCreateWarpedVRT(GDALDatasetH hSrcDS, int nPixels, int nLines, double *padfGeoTransform, GDALWarpOptions *psOptions)
Create virtual warped dataset.
Definition: vrtwarped.cpp:274
Definition: gdalwarper.h:68
GDALTransformerFunc pfnTransformer
Definition: gdalwarper.h:175
double dfProgressScale
Scale value for progress computation.
Definition: gdalwarper.h:402
void GDALDestroyWarpOperation(GDALWarpOperationH)
Definition: gdalwarpoperation.cpp:739
void GDALDestroyWarpOptions(GDALWarpOptions *)
Destroy a warp options structure.
Definition: gdalwarper.cpp:1236
void * pSrcValidityMaskFuncArg
Unused.
Definition: gdalwarper.h:188
CPLErr GDALReprojectImage(GDALDatasetH hSrcDS, const char *pszSrcWKT, GDALDatasetH hDstDS, const char *pszDstWKT, GDALResampleAlg eResampleAlg, double dfWarpMemoryLimit, double dfMaxError, GDALProgressFunc pfnProgress, void *pProgressArg, GDALWarpOptions *psOptions)
Reproject image.
Definition: gdalwarper.cpp:97
void GDALWarpInitDstNoDataImag(GDALWarpOptions *, double dNoDataImag)
Initialize padfDstNoDataImag with specified value.
Definition: gdalwarper.cpp:1394
double * padfDstNoDataImag
Definition: gdalwarper.h:165
GDALMaskFunc pfnSrcValidityMaskFunc
Unused.
Definition: gdalwarper.h:186
Definition: gdalwarper.h:69
Definition: gdalwarper.h:60
Definition: gdalwarper.h:71
GDALMaskFunc pfnDstDensityMaskFunc
Unused.
Definition: gdalwarper.h:196
int nDstYOff
Y offset of the destination buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:387
GDALResampleAlg eResample
Resample algorithm.
Definition: gdalwarper.h:327
void * pPreWarpProcessorArg
Unused.
Definition: gdalwarper.h:208
GDALResampleAlg
Definition: gdalwarper.h:50
double dfSrcYExtraSize
Extra pixels (included in nSrcYSize) reserved for filter window.
Definition: gdalwarper.h:340
void GDALWarpInitSrcNoDataImag(GDALWarpOptions *, double dNoDataImag)
Initialize padfSrcNoDataImag with specified value.
Definition: gdalwarper.cpp:1413
double dfProgressBase
Base/offset value for progress computation.
Definition: gdalwarper.h:400
Warp control options for use with GDALWarpOperation::Initialize()
Definition: gdalwarper.h:120
GDALProgressFunc pfnProgress
Definition: gdalwarper.h:169
void * pDstDensityMaskFuncArg
Unused.
Definition: gdalwarper.h:198
Definition: gdalwarper.h:53
High level image warping class.
Definition: gdalwarper.h:440
int nXRadius
X size of window to filter.
Definition: gdalwarper.h:371
GDALWarpOptions * GDALCloneWarpOptions(const GDALWarpOptions *)
Clone a warp options structure.
Definition: gdalwarper.cpp:1277
void * pTransformerArg
Definition: gdalwarper.h:178
int nSrcYSize
Height of the source image.
Definition: gdalwarper.h:336
GDALProgressFunc pfnProgress
Progress function.
Definition: gdalwarper.h:395
Definition: gdalwarper.h:59
Definition: gdalwarper.h:52
int * panSrcBands
Definition: gdalwarper.h:144
double * padfDstNoDataReal
Array of nBands value for destination nodata.
Definition: gdalwarper.h:405
int(* GDALTransformerFunc)(void *pTransformerArg, int bDstToSrc, int nPointCount, double *x, double *y, double *z, int *panSuccess)
Definition: gdal_alg.h:114
void * GDALDriverH
Opaque type used for the C bindings of the C++ GDALDriver class.
Definition: gdal.h:261
char ** papszWarpOptions
A string list of additional options controlling the warp operation in name=value format.
Definition: gdalwarper.h:122
int nDstYSize
Height of the destination image.
Definition: gdalwarper.h:354
GDALWarpOptions * GDALCreateWarpOptions(void)
Create a warp options structure.
Definition: gdalwarper.cpp:1217
Definition: gdalwarper.h:73
double dfXFilter
X size of filter kernel.
Definition: gdalwarper.h:367
int nBands
Number of input and output bands (excluding alpha bands)
Definition: gdalwarper.h:331
CPLErr GDALChunkAndWarpImage(GDALWarpOperationH, int, int, int, int)
Definition: gdalwarpoperation.cpp:921
Definition: gdalwarper.h:51
Public (C callable) GDAL algorithm entry points, and definitions.
void * pTransformerArg
User data provided to pfnTransformer.
Definition: gdalwarper.h:392
GDALMaskFunc * papfnSrcPerBandValidityMaskFunc
Unused.
Definition: gdalwarper.h:181
int nSrcXSize
Width of the source image.
Definition: gdalwarper.h:334
GDALDatasetH hSrcDS
Definition: gdalwarper.h:135
int nBandCount
Definition: gdalwarper.h:141
float * pafDstDensity
Destination density of size nDstXSize * nDstYSize.
Definition: gdalwarper.h:360
GDALDataType eWorkingDataType
Definition: gdalwarper.h:132
CPLErr GDALCreateAndReprojectImage(GDALDatasetH hSrcDS, const char *pszSrcWKT, const char *pszDstFilename, const char *pszDstWKT, GDALDriverH hDstDriver, char **papszCreateOptions, GDALResampleAlg eResampleAlg, double dfWarpMemoryLimit, double dfMaxError, GDALProgressFunc pfnProgress, void *pProgressArg, GDALWarpOptions *psOptions)
Reproject an image and create the target reprojected image.
Definition: gdalwarper.cpp:230
#define CPL_C_END
Macro to end a block of C symbols.
Definition: cpl_port.h:339
GDALTransformerFunc pfnTransformer
Pixel transformation function.
Definition: gdalwarper.h:390
void GDALWarpInitNoDataReal(GDALWarpOptions *, double dNoDataReal)
Initialize padfSrcNoDataReal and padfDstNoDataReal with specified value.
Definition: gdalwarper.cpp:1376
int nYRadius
Y size of window to filter.
Definition: gdalwarper.h:373
GDALDatasetH hDstDS
Definition: gdalwarper.h:138
Definition: gdalwarper.h:57
void * hCutline
Definition: gdalwarper.h:216
double dfYFilter
Y size of filter kernel.
Definition: gdalwarper.h:369
double dfCutlineBlendDist
Definition: gdalwarper.h:219
GDALDatasetH GDALAutoCreateWarpedVRT(GDALDatasetH hSrcDS, const char *pszSrcWKT, const char *pszDstWKT, GDALResampleAlg eResampleAlg, double dfMaxError, const GDALWarpOptions *psOptions)
Create virtual warped dataset automatically.
Definition: vrtwarped.cpp:104
double * padfSrcNoDataReal
Definition: gdalwarper.h:156
void * GDALWarpOperationH
Opaque type representing a GDALWarpOperation object.
Definition: gdalwarper.h:527
double dfSrcXExtraSize
Extra pixels (included in nSrcXSize) reserved for filter window.
Definition: gdalwarper.h:338
void * pProgress
User data provided to pfnProgress.
Definition: gdalwarper.h:397
int nSrcYOff
Y offset of the source buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:382
Definition: gdalwarper.h:70
CPLErr
Error category.
Definition: cpl_error.h:52
GDALWarpOperationH GDALCreateWarpOperation(const GDALWarpOptions *)
Definition: gdalwarpoperation.cpp:718
GByte ** papabyDstImage
Array of nBands destination images of size nDstXSize * nDstYSize.
Definition: gdalwarper.h:356
int nDstAlphaBand
Definition: gdalwarper.h:153
void GDALWarpResolveWorkingDataType(GDALWarpOptions *)
If the working data type is unknown, this method will determine a valid working data type to support ...
Definition: gdalwarper.cpp:1433
#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:989
GUInt32 ** papanBandSrcValid
Array of nBands validity mask of size (nSrcXSize * nSrcYSize + WARP_EXTRA_ELTS) / 8...
Definition: gdalwarper.h:345