GDAL
gdalwarper.h
Go to the documentation of this file.
1 /******************************************************************************
2  * $Id: gdalwarper.h 4986eea379aaa3f553b9d612f6d5da103dc555a8 2021-10-11 23:07:35 +0200 Even Rouault $
3  *
4  * Project: GDAL High Performance Warper
5  * Purpose: Prototypes, and definitions for warping related work.
6  * Author: Frank Warmerdam, warmerdam@pobox.com
7  *
8  ******************************************************************************
9  * Copyright (c) 2003, Frank Warmerdam
10  * Copyright (c) 2009-2012, Even Rouault <even dot rouault at spatialys.com>
11  *
12  * Permission is hereby granted, free of charge, to any person obtaining a
13  * copy of this software and associated documentation files (the "Software"),
14  * to deal in the Software without restriction, including without limitation
15  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
16  * and/or sell copies of the Software, and to permit persons to whom the
17  * Software is furnished to do so, subject to the following conditions:
18  *
19  * The above copyright notice and this permission notice shall be included
20  * in all copies or substantial portions of the Software.
21  *
22  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
25  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
28  * DEALINGS IN THE SOFTWARE.
29  ****************************************************************************/
30 
31 #ifndef GDALWARPER_H_INCLUDED
32 #define GDALWARPER_H_INCLUDED
33 
42 #include "gdal_alg.h"
43 #include "cpl_minixml.h"
44 #include "cpl_multiproc.h"
45 
47 
48 /* Note: values are selected to be consistent with GDALRIOResampleAlg of gcore/gdal.h */
58  /* GRA_Gauss=7 reserved. */ GRA_Max=8, GRA_Min=9, GRA_Med=10, GRA_Q1=11, GRA_Q3=12, GRA_Sum=13, GRA_RMS=14,
67  GRA_LAST_VALUE=GRA_RMS
70 
82 
84 typedef int
85 (*GDALMaskFunc)( void *pMaskFuncArg,
86  int nBandCount, GDALDataType eType,
87  int nXOff, int nYOff,
88  int nXSize, int nYSize,
89  GByte **papabyImageData,
90  int bMaskIsFloat, void *pMask );
91 
92 CPLErr CPL_DLL
93 GDALWarpNoDataMasker( void *pMaskFuncArg, int nBandCount, GDALDataType eType,
94  int nXOff, int nYOff, int nXSize, int nYSize,
95  GByte **papabyImageData, int bMaskIsFloat,
96  void *pValidityMask, int* pbOutAllValid );
97 
98 CPLErr CPL_DLL
99 GDALWarpDstAlphaMasker( void *pMaskFuncArg, int nBandCount, GDALDataType eType,
100  int nXOff, int nYOff, int nXSize, int nYSize,
101  GByte ** /*ppImageData */,
102  int bMaskIsFloat, void *pValidityMask );
103 CPLErr CPL_DLL
104 GDALWarpSrcAlphaMasker( void *pMaskFuncArg, int nBandCount, GDALDataType eType,
105  int nXOff, int nYOff, int nXSize, int nYSize,
106  GByte ** /*ppImageData */,
107  int bMaskIsFloat, void *pValidityMask, int* pbOutAllOpaque );
108 
109 CPLErr CPL_DLL
110 GDALWarpSrcMaskMasker( void *pMaskFuncArg, int nBandCount, GDALDataType eType,
111  int nXOff, int nYOff, int nXSize, int nYSize,
112  GByte ** /*ppImageData */,
113  int bMaskIsFloat, void *pValidityMask );
114 
115 CPLErr CPL_DLL
116 GDALWarpCutlineMasker( void *pMaskFuncArg, int nBandCount, GDALDataType eType,
117  int nXOff, int nYOff, int nXSize, int nYSize,
118  GByte ** /* ppImageData */,
119  int bMaskIsFloat, void *pValidityMask );
122 /************************************************************************/
123 /* GDALWarpOptions */
124 /************************************************************************/
125 
127 typedef struct {
128 
130 
133 
136 
140 
143 
146 
149 
152 
155 
158 
161 
168 
175 
178  GDALProgressFunc pfnProgress;
179 
182 
185 
188 
193 
198 
200  GDALMaskFunc pfnSrcDensityMaskFunc;
203 
205  GDALMaskFunc pfnDstDensityMaskFunc;
208 
213 
215  CPLErr (*pfnPreWarpChunkProcessor)( void *pKern, void *pArg );
218 
220  CPLErr (*pfnPostWarpChunkProcessor)( void *pKern, void *pArg);
223 
225  void *hCutline;
226 
229 
231 
232 GDALWarpOptions CPL_DLL * CPL_STDCALL GDALCreateWarpOptions(void);
233 void CPL_DLL CPL_STDCALL GDALDestroyWarpOptions( GDALWarpOptions * );
234 GDALWarpOptions CPL_DLL * CPL_STDCALL
236 
237 void CPL_DLL CPL_STDCALL
238 GDALWarpInitDstNoDataReal( GDALWarpOptions *, double dNoDataReal );
239 
240 void CPL_DLL CPL_STDCALL
241 GDALWarpInitSrcNoDataReal( GDALWarpOptions *, double dNoDataReal );
242 
243 void CPL_DLL CPL_STDCALL
244 GDALWarpInitNoDataReal( GDALWarpOptions *, double dNoDataReal );
245 
246 void CPL_DLL CPL_STDCALL
247 GDALWarpInitDstNoDataImag( GDALWarpOptions *, double dNoDataImag );
248 
249 void CPL_DLL CPL_STDCALL
250 GDALWarpInitSrcNoDataImag( GDALWarpOptions *, double dNoDataImag );
251 
252 void CPL_DLL CPL_STDCALL
254 
255 void CPL_DLL CPL_STDCALL
257 
259 CPLXMLNode CPL_DLL * CPL_STDCALL
260  GDALSerializeWarpOptions( const GDALWarpOptions * );
261 GDALWarpOptions CPL_DLL * CPL_STDCALL
262  GDALDeserializeWarpOptions( CPLXMLNode * );
265 /************************************************************************/
266 /* GDALReprojectImage() */
267 /************************************************************************/
268 
269 CPLErr CPL_DLL CPL_STDCALL
270 GDALReprojectImage( GDALDatasetH hSrcDS, const char *pszSrcWKT,
271  GDALDatasetH hDstDS, const char *pszDstWKT,
272  GDALResampleAlg eResampleAlg, double dfWarpMemoryLimit,
273  double dfMaxError,
274  GDALProgressFunc pfnProgress, void *pProgressArg,
275  GDALWarpOptions *psOptions );
276 
277 CPLErr CPL_DLL CPL_STDCALL
278 GDALCreateAndReprojectImage( GDALDatasetH hSrcDS, const char *pszSrcWKT,
279  const char *pszDstFilename, const char *pszDstWKT,
280  GDALDriverH hDstDriver, char **papszCreateOptions,
281  GDALResampleAlg eResampleAlg, double dfWarpMemoryLimit,
282  double dfMaxError,
283  GDALProgressFunc pfnProgress, void *pProgressArg,
284  GDALWarpOptions *psOptions );
285 
286 /************************************************************************/
287 /* VRTWarpedDataset */
288 /************************************************************************/
289 
290 GDALDatasetH CPL_DLL CPL_STDCALL
292  const char *pszSrcWKT, const char *pszDstWKT,
293  GDALResampleAlg eResampleAlg,
294  double dfMaxError, const GDALWarpOptions *psOptions );
295 
296 GDALDatasetH CPL_DLL CPL_STDCALL
298  const char *pszSrcWKT, const char *pszDstWKT,
299  GDALResampleAlg eResampleAlg,
300  double dfMaxError, const GDALWarpOptions *psOptions,
301  CSLConstList papszTransformerOptions );
302 
303 GDALDatasetH CPL_DLL CPL_STDCALL
305  int nPixels, int nLines, double *padfGeoTransform,
306  GDALWarpOptions *psOptions );
307 
308 CPLErr CPL_DLL CPL_STDCALL
310  GDALWarpOptions *psWO );
311 
312 CPL_C_END
313 
314 #if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS)
315 
316 #include <vector>
317 #include <utility>
318 
319 /************************************************************************/
320 /* GDALWarpKernel */
321 /* */
322 
328 #define WARP_EXTRA_ELTS 1
329 
337 class CPL_DLL GDALWarpKernel
338 {
340 
341 public:
344 
350  int nBands;
351 
362 
369 
380 
382  double dfXScale;
384  double dfYScale;
386  double dfXFilter;
388  double dfYFilter;
390  int nXRadius;
392  int nYRadius;
397 
399  int nSrcXOff;
401  int nSrcYOff;
402 
404  int nDstXOff;
406  int nDstYOff;
407 
412 
414  GDALProgressFunc pfnProgress;
416  void *pProgress;
417 
422 
425 
428  void *psThreadData;
429 
430  bool bApplyVerticalShift = false;
431 
432  double dfMultFactorVerticalShit = 1.0;
435  GDALWarpKernel();
436  virtual ~GDALWarpKernel();
437 
438  CPLErr Validate();
439  CPLErr PerformWarp();
440 };
441 
443 void* GWKThreadsCreate(char** papszWarpOptions,
444  GDALTransformerFunc pfnTransformer,
445  void* pTransformerArg);
446 void GWKThreadsEnd(void* psThreadDataIn);
449 /************************************************************************/
450 /* GDALWarpOperation() */
451 /* */
452 /* This object is application created, or created by a higher */
453 /* level convenience function. It is responsible for */
454 /* subdividing the operation into chunks, loading and saving */
455 /* imagery, and establishing the varios validity and density */
456 /* masks. Actual resampling is done by the GDALWarpKernel. */
457 /************************************************************************/
458 
460 typedef struct _GDALWarpChunk GDALWarpChunk;
463 class CPL_DLL GDALWarpOperation {
464 
466 
467 private:
468  GDALWarpOptions *psOptions;
469 
470  void WipeOptions();
471  int ValidateOptions();
472 
473  CPLErr ComputeSourceWindow( int nDstXOff, int nDstYOff,
474  int nDstXSize, int nDstYSize,
475  int *pnSrcXOff, int *pnSrcYOff,
476  int *pnSrcXSize, int *pnSrcYSize,
477  double *pdfSrcXExtraSize, double *pdfSrcYExtraSize,
478  double* pdfSrcFillRatio );
479 
480  void ComputeSourceWindowStartingFromSource(
481  int nDstXOff, int nDstYOff,
482  int nDstXSize, int nDstYSize,
483  double* padfSrcMinX, double* padfSrcMinY,
484  double* padfSrcMaxX, double* padfSrcMaxY);
485 
486  static CPLErr CreateKernelMask( GDALWarpKernel *, int iBand,
487  const char *pszType );
488 
489  CPLMutex *hIOMutex;
490  CPLMutex *hWarpMutex;
491 
492  int nChunkListCount;
493  int nChunkListMax;
494  GDALWarpChunk *pasChunkList;
495 
496  int bReportTimings;
497  unsigned long nLastTimeReported;
498 
499  void *psThreadData;
500 
501  // Coordinates a few special points in target image space, to determine
502  // if ComputeSourceWindow() must use a grid based sampling.
503  std::vector<std::pair<double, double>> aDstXYSpecialPoints{};
504 
505  void WipeChunkList();
506  CPLErr CollectChunkListInternal( int nDstXOff, int nDstYOff,
507  int nDstXSize, int nDstYSize );
508  void CollectChunkList( int nDstXOff, int nDstYOff,
509  int nDstXSize, int nDstYSize );
510  void ReportTiming( const char * );
511 
512 public:
514  virtual ~GDALWarpOperation();
515 
516  CPLErr Initialize( const GDALWarpOptions *psNewOptions );
517  void* CreateDestinationBuffer( int nDstXSize, int nDstYSize,
518  int *pbWasInitialized = nullptr );
519  static void DestroyDestinationBuffer(void* pDstBuffer);
520 
521  const GDALWarpOptions *GetOptions();
522 
523  CPLErr ChunkAndWarpImage( int nDstXOff, int nDstYOff,
524  int nDstXSize, int nDstYSize );
525  CPLErr ChunkAndWarpMulti( int nDstXOff, int nDstYOff,
526  int nDstXSize, int nDstYSize );
527  CPLErr WarpRegion( int nDstXOff, int nDstYOff,
528  int nDstXSize, int nDstYSize,
529  int nSrcXOff=0, int nSrcYOff=0,
530  int nSrcXSize=0, int nSrcYSize=0,
531  double dfProgressBase=0.0, double dfProgressScale=1.0);
532  CPLErr WarpRegion( int nDstXOff, int nDstYOff,
533  int nDstXSize, int nDstYSize,
534  int nSrcXOff, int nSrcYOff,
535  int nSrcXSize, int nSrcYSize,
536  double dfSrcXExtraSize, double dfSrcYExtraSize,
537  double dfProgressBase, double dfProgressScale);
538  CPLErr WarpRegionToBuffer( int nDstXOff, int nDstYOff,
539  int nDstXSize, int nDstYSize,
540  void *pDataBuf,
541  GDALDataType eBufDataType,
542  int nSrcXOff=0, int nSrcYOff=0,
543  int nSrcXSize=0, int nSrcYSize=0,
544  double dfProgressBase=0.0, double dfProgressScale=1.0);
545  CPLErr WarpRegionToBuffer( int nDstXOff, int nDstYOff,
546  int nDstXSize, int nDstYSize,
547  void *pDataBuf,
548  GDALDataType eBufDataType,
549  int nSrcXOff, int nSrcYOff,
550  int nSrcXSize, int nSrcYSize,
551  double dfSrcXExtraSize, double dfSrcYExtraSize,
552  double dfProgressBase, double dfProgressScale);
553 };
554 
555 #endif /* def __cplusplus */
556 
558 
560 typedef void * GDALWarpOperationH;
561 
564 CPLErr CPL_DLL GDALChunkAndWarpImage( GDALWarpOperationH, int, int, int, int );
565 CPLErr CPL_DLL GDALChunkAndWarpMulti( GDALWarpOperationH, int, int, int, int );
567  int, int, int, int, int, int, int, int );
568 CPLErr CPL_DLL GDALWarpRegionToBuffer( GDALWarpOperationH, int, int, int, int,
569  void *, GDALDataType,
570  int, int, int, int );
571 
572 /************************************************************************/
573 /* Warping kernel functions */
574 /************************************************************************/
575 
577 int GWKGetFilterRadius(GDALResampleAlg eResampleAlg);
578 
579 typedef double (*FilterFuncType)(double dfX);
580 FilterFuncType GWKGetFilterFunc(GDALResampleAlg eResampleAlg);
581 
582 // TODO(schwehr): Can padfVals be a const pointer?
583 typedef double (*FilterFunc4ValuesType)(double* padfVals);
584 FilterFunc4ValuesType GWKGetFilterFunc4Values(GDALResampleAlg eResampleAlg);
587 CPL_C_END
588 
589 #endif /* ndef GDAL_ALG_H_INCLUDED */
This class represents the lowest level of abstraction of warping.
Definition: gdalwarper.h:338
int nXRadius
X size of window to filter.
Definition: gdalwarper.h:390
int nSrcYSize
Height of the source image.
Definition: gdalwarper.h:355
char ** papszWarpOptions
Warp options.
Definition: gdalwarper.h:343
int nFiltInitX
X filtering offset.
Definition: gdalwarper.h:394
double dfXScale
X resampling scale, i.e.
Definition: gdalwarper.h:382
double dfYFilter
Y size of filter kernel.
Definition: gdalwarper.h:388
int nDstXSize
Width of the destination image.
Definition: gdalwarper.h:371
double dfSrcXExtraSize
Extra pixels (included in nSrcXSize) reserved for filter window.
Definition: gdalwarper.h:357
double * padfDstNoDataReal
Array of nBands value for destination nodata.
Definition: gdalwarper.h:424
int nDstXOff
X offset of the destination buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:404
GDALResampleAlg eResample
Resample algorithm.
Definition: gdalwarper.h:346
GDALTransformerFunc pfnTransformer
Pixel transformation function.
Definition: gdalwarper.h:409
GUInt32 * panUnifiedSrcValid
Unified validity mask of size (nSrcXSize * nSrcYSize + WARP_EXTRA_ELTS) / 8.
Definition: gdalwarper.h:366
int nDstYSize
Height of the destination image.
Definition: gdalwarper.h:373
int nBands
Number of input and output bands (excluding alpha bands)
Definition: gdalwarper.h:350
double dfProgressBase
Base/offset value for progress computation.
Definition: gdalwarper.h:419
GDALDataType eWorkingDataType
Working data type.
Definition: gdalwarper.h:348
double dfSrcYExtraSize
Extra pixels (included in nSrcYSize) reserved for filter window.
Definition: gdalwarper.h:359
int nSrcXOff
X offset of the source buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:399
int nSrcYOff
Y offset of the source buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:401
int nDstYOff
Y offset of the destination buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:406
int nFiltInitY
Y filtering offset.
Definition: gdalwarper.h:396
GDALProgressFunc pfnProgress
Progress function.
Definition: gdalwarper.h:414
GUInt32 ** papanBandSrcValid
Array of nBands validity mask of size (nSrcXSize * nSrcYSize + WARP_EXTRA_ELTS) / 8.
Definition: gdalwarper.h:364
void * pProgress
User data provided to pfnProgress.
Definition: gdalwarper.h:416
float * pafUnifiedSrcDensity
Unified source density of size nSrcXSize * nSrcYSize + WARP_EXTRA_ELTS.
Definition: gdalwarper.h:368
int nYRadius
Y size of window to filter.
Definition: gdalwarper.h:392
float * pafDstDensity
Destination density of size nDstXSize * nDstYSize.
Definition: gdalwarper.h:379
double dfXFilter
X size of filter kernel.
Definition: gdalwarper.h:386
double dfYScale
Y resampling scale, i.e.
Definition: gdalwarper.h:384
GByte ** papabyDstImage
Array of nBands destination images of size nDstXSize * nDstYSize.
Definition: gdalwarper.h:375
double dfProgressScale
Scale value for progress computation.
Definition: gdalwarper.h:421
int nSrcXSize
Width of the source image.
Definition: gdalwarper.h:353
void * pTransformerArg
User data provided to pfnTransformer.
Definition: gdalwarper.h:411
GByte ** papabySrcImage
Array of nBands source images of size nSrcXSize * nSrcYSize.
Definition: gdalwarper.h:361
GUInt32 * panDstValid
Validify mask of size (nDstXSize * nDstYSize) / 8.
Definition: gdalwarper.h:377
High level image warping class.
Definition: gdalwarper.h:463
CPLErr
Error category.
Definition: cpl_error.h:53
Definitions for CPL mini XML Parser/Serializer.
#define CPL_C_END
Macro to end a block of C symbols.
Definition: cpl_port.h:331
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:329
unsigned int GUInt32
Unsigned int32 type.
Definition: cpl_port.h:207
#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:955
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1169
unsigned char GByte
Unsigned byte type.
Definition: cpl_port.h:215
GDALDataType
Definition: gdal.h:62
void * GDALDatasetH
Opaque type used for the C bindings of the C++ GDALDataset class.
Definition: gdal.h:268
void * GDALDriverH
Opaque type used for the C bindings of the C++ GDALDriver class.
Definition: gdal.h:274
Public (C callable) GDAL algorithm entry points, and definitions.
int(* GDALTransformerFunc)(void *pTransformerArg, int bDstToSrc, int nPointCount, double *x, double *y, double *z, int *panSuccess)
Definition: gdal_alg.h:114
CPLErr GDALWarpRegion(GDALWarpOperationH, int, int, int, int, int, int, int, int)
Definition: gdalwarpoperation.cpp:1682
void GDALDestroyWarpOperation(GDALWarpOperationH)
Definition: gdalwarpoperation.cpp:820
GDALWarpOperationH GDALCreateWarpOperation(const GDALWarpOptions *)
Definition: gdalwarpoperation.cpp:799
GWKAverageOrModeAlg
Definition: gdalwarper.h:72
@ GWKAOM_Fmode
Definition: gdalwarper.h:74
@ GWKAOM_Min
Definition: gdalwarper.h:77
@ GWKAOM_RMS
Definition: gdalwarper.h:80
@ GWKAOM_Quant
Definition: gdalwarper.h:78
@ GWKAOM_Sum
Definition: gdalwarper.h:79
@ GWKAOM_Imode
Definition: gdalwarper.h:75
@ GWKAOM_Average
Definition: gdalwarper.h:73
@ GWKAOM_Max
Definition: gdalwarper.h:76
void GDALWarpInitDstNoDataImag(GDALWarpOptions *, double dNoDataImag)
Initialize padfDstNoDataImag with specified value.
Definition: gdalwarper.cpp:1438
GDALResampleAlg
Definition: gdalwarper.h:50
@ GRA_CubicSpline
Definition: gdalwarper.h:54
@ GRA_Q1
Definition: gdalwarper.h:62
@ GRA_Sum
Definition: gdalwarper.h:64
@ GRA_Max
Definition: gdalwarper.h:59
@ GRA_Cubic
Definition: gdalwarper.h:53
@ GRA_Min
Definition: gdalwarper.h:60
@ GRA_RMS
Definition: gdalwarper.h:65
@ GRA_Lanczos
Definition: gdalwarper.h:55
@ GRA_Mode
Definition: gdalwarper.h:57
@ GRA_NearestNeighbour
Definition: gdalwarper.h:51
@ GRA_Q3
Definition: gdalwarper.h:63
@ GRA_Med
Definition: gdalwarper.h:61
@ GRA_Average
Definition: gdalwarper.h:56
@ GRA_Bilinear
Definition: gdalwarper.h:52
GDALDatasetH GDALCreateWarpedVRT(GDALDatasetH hSrcDS, int nPixels, int nLines, double *padfGeoTransform, GDALWarpOptions *psOptions)
Create virtual warped dataset.
Definition: vrtwarped.cpp:322
void GDALDestroyWarpOptions(GDALWarpOptions *)
Destroy a warp options structure.
Definition: gdalwarper.cpp:1279
void * GDALWarpOperationH
Opaque type representing a GDALWarpOperation object.
Definition: gdalwarper.h:560
CPLErr GDALWarpRegionToBuffer(GDALWarpOperationH, int, int, int, int, void *, GDALDataType, int, int, int, int)
Definition: gdalwarpoperation.cpp:2331
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:240
GDALWarpOptions * GDALCloneWarpOptions(const GDALWarpOptions *)
Clone a warp options structure.
Definition: gdalwarper.cpp:1320
CPLErr GDALChunkAndWarpImage(GDALWarpOperationH, int, int, int, int)
Definition: gdalwarpoperation.cpp:1002
GDALDatasetH GDALAutoCreateWarpedVRTEx(GDALDatasetH hSrcDS, const char *pszSrcWKT, const char *pszDstWKT, GDALResampleAlg eResampleAlg, double dfMaxError, const GDALWarpOptions *psOptions, CSLConstList papszTransformerOptions)
Create virtual warped dataset automatically.
Definition: vrtwarped.cpp:134
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:1582
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:108
void GDALWarpInitSrcNoDataImag(GDALWarpOptions *, double dNoDataImag)
Initialize padfSrcNoDataImag with specified value.
Definition: gdalwarper.cpp:1457
CPLErr GDALInitializeWarpedVRT(GDALDatasetH hDS, GDALWarpOptions *psWO)
Set warp info on virtual warped dataset.
Definition: vrtwarped.cpp:1212
void GDALWarpInitSrcNoDataReal(GDALWarpOptions *, double dNoDataReal)
Initialize padfSrcNoDataReal with specified value.
Definition: gdalwarper.cpp:1400
void GDALWarpInitDstNoDataReal(GDALWarpOptions *, double dNoDataReal)
Initialize padfDstNoDataReal with specified value.
Definition: gdalwarper.cpp:1380
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
CPLErr GDALChunkAndWarpMulti(GDALWarpOperationH, int, int, int, int)
Definition: gdalwarpoperation.cpp:1237
GDALWarpOptions * GDALCreateWarpOptions(void)
Create a warp options structure.
Definition: gdalwarper.cpp:1260
void GDALWarpInitNoDataReal(GDALWarpOptions *, double dNoDataReal)
Initialize padfSrcNoDataReal and padfDstNoDataReal with specified value.
Definition: gdalwarper.cpp:1420
void GDALWarpResolveWorkingDataType(GDALWarpOptions *)
If the working data type is unknown, this method will determine a valid working data type to support ...
Definition: gdalwarper.cpp:1477
Document node structure.
Definition: cpl_minixml.h:70
Warp control options for use with GDALWarpOperation::Initialize()
Definition: gdalwarper.h:127
int nSrcAlphaBand
Definition: gdalwarper.h:157
GDALDatasetH hDstDS
Definition: gdalwarper.h:145
char ** papszWarpOptions
A string list of additional options controlling the warp operation in name=value format.
Definition: gdalwarper.h:129
double * padfDstNoDataImag
Definition: gdalwarper.h:174
GDALMaskFunc pfnDstValidityMaskFunc
Unused.
Definition: gdalwarper.h:210
double * padfSrcNoDataReal
Definition: gdalwarper.h:163
void * pTransformerArg
Definition: gdalwarper.h:187
GDALDataType eWorkingDataType
Definition: gdalwarper.h:139
void * pSrcValidityMaskFuncArg
Unused.
Definition: gdalwarper.h:197
void * pDstDensityMaskFuncArg
Unused.
Definition: gdalwarper.h:207
int * panDstBands
Definition: gdalwarper.h:154
double dfCutlineBlendDist
Definition: gdalwarper.h:228
GDALProgressFunc pfnProgress
Definition: gdalwarper.h:178
GDALMaskFunc pfnSrcDensityMaskFunc
Unused.
Definition: gdalwarper.h:200
GDALDatasetH hSrcDS
Definition: gdalwarper.h:142
GDALMaskFunc pfnDstDensityMaskFunc
Unused.
Definition: gdalwarper.h:205
void * pPreWarpProcessorArg
Unused.
Definition: gdalwarper.h:217
void * pProgressArg
Definition: gdalwarper.h:181
int nDstAlphaBand
Definition: gdalwarper.h:160
int * panSrcBands
Definition: gdalwarper.h:151
GDALTransformerFunc pfnTransformer
Definition: gdalwarper.h:184
int nBandCount
Definition: gdalwarper.h:148
double dfWarpMemoryLimit
Definition: gdalwarper.h:132
void * pSrcDensityMaskFuncArg
Unused.
Definition: gdalwarper.h:202
GDALMaskFunc * papfnSrcPerBandValidityMaskFunc
Unused.
Definition: gdalwarper.h:190
GDALResampleAlg eResampleAlg
Definition: gdalwarper.h:135
GDALMaskFunc pfnSrcValidityMaskFunc
Unused.
Definition: gdalwarper.h:195
void * hCutline
Definition: gdalwarper.h:225
void * pDstValidityMaskFuncArg
Unused.
Definition: gdalwarper.h:212
void ** papSrcPerBandValidityMaskFuncArg
Unused.
Definition: gdalwarper.h:192
double * padfDstNoDataReal
Definition: gdalwarper.h:170
double * padfSrcNoDataImag
Definition: gdalwarper.h:167
void * pPostWarpProcessorArg
Unused.
Definition: gdalwarper.h:222