GDAL
gdalwarper.h
Go to the documentation of this file.
1/******************************************************************************
2 * $Id$
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
49 * gcore/gdal.h */
51typedef enum
52{
GRA_NearestNeighbour =
54 0,
GRA_Bilinear = 1, GRA_Cubic = 2, GRA_CubicSpline = 3, GRA_Lanczos = 4,
65 /* GRA_Gauss=7 reserved. */
GRA_Max =
67 8,
GRA_Min =
69 9,
GRA_Med =
71 10,
73 GRA_Q1 = 11,
75 GRA_Q3 = 12,
78 GRA_Sum = 13,
81 GRA_RMS = 14,
83 GRA_LAST_VALUE = GRA_RMS
86
99
101typedef int (*GDALMaskFunc)(void *pMaskFuncArg, int nBandCount,
102 GDALDataType eType, int nXOff, int nYOff,
103 int nXSize, int nYSize, GByte **papabyImageData,
104 int bMaskIsFloat, void *pMask);
105
106CPLErr CPL_DLL GDALWarpNoDataMasker(void *pMaskFuncArg, int nBandCount,
107 GDALDataType eType, int nXOff, int nYOff,
108 int nXSize, int nYSize,
109 GByte **papabyImageData, int bMaskIsFloat,
110 void *pValidityMask, int *pbOutAllValid);
111
112CPLErr CPL_DLL GDALWarpDstAlphaMasker(void *pMaskFuncArg, int nBandCount,
113 GDALDataType eType, int nXOff, int nYOff,
114 int nXSize, int nYSize,
115 GByte ** /*ppImageData */,
116 int bMaskIsFloat, void *pValidityMask);
117CPLErr CPL_DLL GDALWarpSrcAlphaMasker(void *pMaskFuncArg, int nBandCount,
118 GDALDataType eType, int nXOff, int nYOff,
119 int nXSize, int nYSize,
120 GByte ** /*ppImageData */,
121 int bMaskIsFloat, void *pValidityMask,
122 int *pbOutAllOpaque);
123
124CPLErr CPL_DLL GDALWarpSrcMaskMasker(void *pMaskFuncArg, int nBandCount,
125 GDALDataType eType, int nXOff, int nYOff,
126 int nXSize, int nYSize,
127 GByte ** /*ppImageData */,
128 int bMaskIsFloat, void *pValidityMask);
129
130CPLErr CPL_DLL GDALWarpCutlineMasker(void *pMaskFuncArg, int nBandCount,
131 GDALDataType eType, int nXOff, int nYOff,
132 int nXSize, int nYSize,
133 GByte ** /* ppImageData */,
134 int bMaskIsFloat, void *pValidityMask);
137/************************************************************************/
138/* GDALWarpOptions */
139/************************************************************************/
140
142typedef struct
143{
144
146
149
152
156
159
163
166
169
172
175
178
186
194
197 GDALProgressFunc pfnProgress;
198
201
204
207
212
217
222
227
232
234 CPLErr (*pfnPreWarpChunkProcessor)(void *pKern, void *pArg);
237
239 CPLErr (*pfnPostWarpChunkProcessor)(void *pKern, void *pArg);
242
244 void *hCutline;
245
249
251
252GDALWarpOptions CPL_DLL *CPL_STDCALL GDALCreateWarpOptions(void);
253void CPL_DLL CPL_STDCALL GDALDestroyWarpOptions(GDALWarpOptions *);
254GDALWarpOptions CPL_DLL *CPL_STDCALL
256
257void CPL_DLL CPL_STDCALL GDALWarpInitDstNoDataReal(GDALWarpOptions *,
258 double dNoDataReal);
259
260void CPL_DLL CPL_STDCALL GDALWarpInitSrcNoDataReal(GDALWarpOptions *,
261 double dNoDataReal);
262
263void CPL_DLL CPL_STDCALL GDALWarpInitNoDataReal(GDALWarpOptions *,
264 double dNoDataReal);
265
266void CPL_DLL CPL_STDCALL GDALWarpInitDstNoDataImag(GDALWarpOptions *,
267 double dNoDataImag);
268
269void CPL_DLL CPL_STDCALL GDALWarpInitSrcNoDataImag(GDALWarpOptions *,
270 double dNoDataImag);
271
272void CPL_DLL CPL_STDCALL GDALWarpResolveWorkingDataType(GDALWarpOptions *);
273
274void CPL_DLL CPL_STDCALL GDALWarpInitDefaultBandMapping(GDALWarpOptions *,
275 int nBandCount);
276
278CPLXMLNode CPL_DLL *CPL_STDCALL
279GDALSerializeWarpOptions(const GDALWarpOptions *);
280GDALWarpOptions CPL_DLL *CPL_STDCALL GDALDeserializeWarpOptions(CPLXMLNode *);
283/************************************************************************/
284/* GDALReprojectImage() */
285/************************************************************************/
286
287CPLErr CPL_DLL CPL_STDCALL GDALReprojectImage(
288 GDALDatasetH hSrcDS, const char *pszSrcWKT, GDALDatasetH hDstDS,
289 const char *pszDstWKT, GDALResampleAlg eResampleAlg,
290 double dfWarpMemoryLimit, double dfMaxError, GDALProgressFunc pfnProgress,
291 void *pProgressArg, GDALWarpOptions *psOptions);
292
293CPLErr CPL_DLL CPL_STDCALL GDALCreateAndReprojectImage(
294 GDALDatasetH hSrcDS, const char *pszSrcWKT, const char *pszDstFilename,
295 const char *pszDstWKT, GDALDriverH hDstDriver, char **papszCreateOptions,
296 GDALResampleAlg eResampleAlg, double dfWarpMemoryLimit, double dfMaxError,
297 GDALProgressFunc pfnProgress, void *pProgressArg,
298 GDALWarpOptions *psOptions);
299
300/************************************************************************/
301/* VRTWarpedDataset */
302/************************************************************************/
303
304GDALDatasetH CPL_DLL CPL_STDCALL
305GDALAutoCreateWarpedVRT(GDALDatasetH hSrcDS, const char *pszSrcWKT,
306 const char *pszDstWKT, GDALResampleAlg eResampleAlg,
307 double dfMaxError, const GDALWarpOptions *psOptions);
308
309GDALDatasetH CPL_DLL CPL_STDCALL GDALAutoCreateWarpedVRTEx(
310 GDALDatasetH hSrcDS, const char *pszSrcWKT, const char *pszDstWKT,
311 GDALResampleAlg eResampleAlg, double dfMaxError,
312 const GDALWarpOptions *psOptions, CSLConstList papszTransformerOptions);
313
314GDALDatasetH CPL_DLL CPL_STDCALL
315GDALCreateWarpedVRT(GDALDatasetH hSrcDS, int nPixels, int nLines,
316 double *padfGeoTransform, GDALWarpOptions *psOptions);
317
318CPLErr CPL_DLL CPL_STDCALL GDALInitializeWarpedVRT(GDALDatasetH hDS,
319 GDALWarpOptions *psWO);
320
322
323#if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS)
324
325#include <vector>
326#include <utility>
327
328/************************************************************************/
329/* GDALWarpKernel */
330/* */
331
337#define WARP_EXTRA_ELTS 1
338
346class CPL_DLL GDALWarpKernel
347{
349
350 public:
353
360
374
384
395
397 double dfXScale;
399 double dfYScale;
401 double dfXFilter;
403 double dfYFilter;
412
419
426
431
433 GDALProgressFunc pfnProgress;
436
441
444
447 void *psThreadData;
448
449 bool bApplyVerticalShift = false;
450
451 double dfMultFactorVerticalShift = 1.0;
455 virtual ~GDALWarpKernel();
456
457 CPLErr Validate();
458 CPLErr PerformWarp();
459};
460
462void *GWKThreadsCreate(char **papszWarpOptions,
463 GDALTransformerFunc pfnTransformer,
464 void *pTransformerArg);
465void GWKThreadsEnd(void *psThreadDataIn);
468/************************************************************************/
469/* GDALWarpOperation() */
470/* */
471/* This object is application created, or created by a higher */
472/* level convenience function. It is responsible for */
473/* subdividing the operation into chunks, loading and saving */
474/* imagery, and establishing the varios validity and density */
475/* masks. Actual resampling is done by the GDALWarpKernel. */
476/************************************************************************/
477
479typedef struct _GDALWarpChunk GDALWarpChunk;
482class CPL_DLL GDALWarpOperation
483{
484
486
487 private:
488 GDALWarpOptions *psOptions;
489
490 void WipeOptions();
491 int ValidateOptions();
492
493 CPLErr ComputeSourceWindow(int nDstXOff, int nDstYOff, int nDstXSize,
494 int nDstYSize, int *pnSrcXOff, int *pnSrcYOff,
495 int *pnSrcXSize, int *pnSrcYSize,
496 double *pdfSrcXExtraSize,
497 double *pdfSrcYExtraSize,
498 double *pdfSrcFillRatio);
499
500 void ComputeSourceWindowStartingFromSource(int nDstXOff, int nDstYOff,
501 int nDstXSize, int nDstYSize,
502 double *padfSrcMinX,
503 double *padfSrcMinY,
504 double *padfSrcMaxX,
505 double *padfSrcMaxY);
506
507 static CPLErr CreateKernelMask(GDALWarpKernel *, int iBand,
508 const char *pszType);
509
510 CPLMutex *hIOMutex;
511 CPLMutex *hWarpMutex;
512
513 int nChunkListCount;
514 int nChunkListMax;
515 GDALWarpChunk *pasChunkList;
516
517 int bReportTimings;
518 unsigned long nLastTimeReported;
519
520 void *psThreadData;
521
522 // Coordinates a few special points in target image space, to determine
523 // if ComputeSourceWindow() must use a grid based sampling.
524 std::vector<std::pair<double, double>> aDstXYSpecialPoints{};
525
526 bool m_bIsTranslationOnPixelBoundaries = false;
527
528 void WipeChunkList();
529 CPLErr CollectChunkListInternal(int nDstXOff, int nDstYOff, int nDstXSize,
530 int nDstYSize);
531 void CollectChunkList(int nDstXOff, int nDstYOff, int nDstXSize,
532 int nDstYSize);
533 void ReportTiming(const char *);
534
535 public:
537 virtual ~GDALWarpOperation();
538
539 CPLErr Initialize(const GDALWarpOptions *psNewOptions);
540 void *CreateDestinationBuffer(int nDstXSize, int nDstYSize,
541 int *pbWasInitialized = nullptr);
542 static void DestroyDestinationBuffer(void *pDstBuffer);
543
544 const GDALWarpOptions *GetOptions();
545
546 CPLErr ChunkAndWarpImage(int nDstXOff, int nDstYOff, int nDstXSize,
547 int nDstYSize);
548 CPLErr ChunkAndWarpMulti(int nDstXOff, int nDstYOff, int nDstXSize,
549 int nDstYSize);
550 CPLErr WarpRegion(int nDstXOff, int nDstYOff, int nDstXSize, int nDstYSize,
551 int nSrcXOff = 0, int nSrcYOff = 0, int nSrcXSize = 0,
552 int nSrcYSize = 0, double dfProgressBase = 0.0,
553 double dfProgressScale = 1.0);
554 CPLErr WarpRegion(int nDstXOff, int nDstYOff, int nDstXSize, int nDstYSize,
555 int nSrcXOff, int nSrcYOff, int nSrcXSize, int nSrcYSize,
556 double dfSrcXExtraSize, double dfSrcYExtraSize,
557 double dfProgressBase, double dfProgressScale);
558 CPLErr WarpRegionToBuffer(int nDstXOff, int nDstYOff, int nDstXSize,
559 int nDstYSize, void *pDataBuf,
560 GDALDataType eBufDataType, int nSrcXOff = 0,
561 int nSrcYOff = 0, int nSrcXSize = 0,
562 int nSrcYSize = 0, double dfProgressBase = 0.0,
563 double dfProgressScale = 1.0);
564 CPLErr WarpRegionToBuffer(int nDstXOff, int nDstYOff, int nDstXSize,
565 int nDstYSize, void *pDataBuf,
566 GDALDataType eBufDataType, int nSrcXOff,
567 int nSrcYOff, int nSrcXSize, int nSrcYSize,
568 double dfSrcXExtraSize, double dfSrcYExtraSize,
569 double dfProgressBase, double dfProgressScale);
570};
571
572#endif /* def __cplusplus */
573
575
577typedef void *GDALWarpOperationH;
578
581CPLErr CPL_DLL GDALChunkAndWarpImage(GDALWarpOperationH, int, int, int, int);
582CPLErr CPL_DLL GDALChunkAndWarpMulti(GDALWarpOperationH, int, int, int, int);
583CPLErr CPL_DLL GDALWarpRegion(GDALWarpOperationH, int, int, int, int, int, int,
584 int, int);
585CPLErr CPL_DLL GDALWarpRegionToBuffer(GDALWarpOperationH, int, int, int, int,
586 void *, GDALDataType, int, int, int, int);
587
588/************************************************************************/
589/* Warping kernel functions */
590/************************************************************************/
591
593int GWKGetFilterRadius(GDALResampleAlg eResampleAlg);
594
595typedef double (*FilterFuncType)(double dfX);
596FilterFuncType GWKGetFilterFunc(GDALResampleAlg eResampleAlg);
597
598// TODO(schwehr): Can padfVals be a const pointer?
599typedef double (*FilterFunc4ValuesType)(double *padfVals);
600FilterFunc4ValuesType GWKGetFilterFunc4Values(GDALResampleAlg eResampleAlg);
604
605#endif /* ndef GDAL_ALG_H_INCLUDED */
This class represents the lowest level of abstraction of warping.
Definition gdalwarper.h:347
int nXRadius
X size of window to filter.
Definition gdalwarper.h:405
int nSrcYSize
Height of the source image.
Definition gdalwarper.h:364
char ** papszWarpOptions
Warp options.
Definition gdalwarper.h:352
int nFiltInitX
X filtering offset.
Definition gdalwarper.h:409
double dfXScale
X resampling scale, i.e.
Definition gdalwarper.h:397
double dfYFilter
Y size of filter kernel.
Definition gdalwarper.h:403
int nDstXSize
Width of the destination image.
Definition gdalwarper.h:386
double dfSrcXExtraSize
Extra pixels (included in nSrcXSize) reserved for filter window.
Definition gdalwarper.h:367
double * padfDstNoDataReal
Array of nBands value for destination nodata.
Definition gdalwarper.h:443
int nDstXOff
X offset of the destination buffer regarding the top-left corner of the image.
Definition gdalwarper.h:422
GDALResampleAlg eResample
Resample algorithm.
Definition gdalwarper.h:355
GDALTransformerFunc pfnTransformer
Pixel transformation function.
Definition gdalwarper.h:428
GUInt32 * panUnifiedSrcValid
Unified validity mask of size (nSrcXSize * nSrcYSize + WARP_EXTRA_ELTS) / 8.
Definition gdalwarper.h:380
int nDstYSize
Height of the destination image.
Definition gdalwarper.h:388
int nBands
Number of input and output bands (excluding alpha bands)
Definition gdalwarper.h:359
double dfProgressBase
Base/offset value for progress computation.
Definition gdalwarper.h:438
GDALDataType eWorkingDataType
Working data type.
Definition gdalwarper.h:357
double dfSrcYExtraSize
Extra pixels (included in nSrcYSize) reserved for filter window.
Definition gdalwarper.h:370
int nSrcXOff
X offset of the source buffer regarding the top-left corner of the image.
Definition gdalwarper.h:415
int nSrcYOff
Y offset of the source buffer regarding the top-left corner of the image.
Definition gdalwarper.h:418
int nDstYOff
Y offset of the destination buffer regarding the top-left corner of the image.
Definition gdalwarper.h:425
int nFiltInitY
Y filtering offset.
Definition gdalwarper.h:411
GDALProgressFunc pfnProgress
Progress function.
Definition gdalwarper.h:433
GUInt32 ** papanBandSrcValid
Array of nBands validity mask of size (nSrcXSize * nSrcYSize + WARP_EXTRA_ELTS) / 8.
Definition gdalwarper.h:377
void * pProgress
User data provided to pfnProgress.
Definition gdalwarper.h:435
float * pafUnifiedSrcDensity
Unified source density of size nSrcXSize * nSrcYSize + WARP_EXTRA_ELTS.
Definition gdalwarper.h:383
int nYRadius
Y size of window to filter.
Definition gdalwarper.h:407
float * pafDstDensity
Destination density of size nDstXSize * nDstYSize.
Definition gdalwarper.h:394
double dfXFilter
X size of filter kernel.
Definition gdalwarper.h:401
double dfYScale
Y resampling scale, i.e.
Definition gdalwarper.h:399
GByte ** papabyDstImage
Array of nBands destination images of size nDstXSize * nDstYSize.
Definition gdalwarper.h:390
double dfProgressScale
Scale value for progress computation.
Definition gdalwarper.h:440
int nSrcXSize
Width of the source image.
Definition gdalwarper.h:362
void * pTransformerArg
User data provided to pfnTransformer.
Definition gdalwarper.h:430
GByte ** papabySrcImage
Array of nBands source images of size nSrcXSize * nSrcYSize.
Definition gdalwarper.h:373
GUInt32 * panDstValid
Validify mask of size (nDstXSize * nDstYSize) / 8.
Definition gdalwarper.h:392
High level image warping class.
Definition gdalwarper.h:483
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:317
#define CPL_C_START
Macro to start a block of C symbols.
Definition cpl_port.h:313
unsigned int GUInt32
Unsigned int32 type.
Definition cpl_port.h:197
#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:1049
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition cpl_port.h:1190
unsigned char GByte
Unsigned byte type.
Definition cpl_port.h:205
GDALDataType
Definition gdal.h:64
void * GDALDatasetH
Opaque type used for the C bindings of the C++ GDALDataset class.
Definition gdal.h:290
void * GDALDriverH
Opaque type used for the C bindings of the C++ GDALDriver class.
Definition gdal.h:296
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:95
CPLErr GDALWarpRegion(GDALWarpOperationH, int, int, int, int, int, int, int, int)
Definition gdalwarpoperation.cpp:1664
void GDALDestroyWarpOperation(GDALWarpOperationH)
Definition gdalwarpoperation.cpp:824
GDALWarpOperationH GDALCreateWarpOperation(const GDALWarpOptions *)
Definition gdalwarpoperation.cpp:804
GWKAverageOrModeAlg
Definition gdalwarper.h:89
@ GWKAOM_Fmode
Definition gdalwarper.h:91
@ GWKAOM_Min
Definition gdalwarper.h:94
@ GWKAOM_RMS
Definition gdalwarper.h:97
@ GWKAOM_Quant
Definition gdalwarper.h:95
@ GWKAOM_Sum
Definition gdalwarper.h:96
@ GWKAOM_Imode
Definition gdalwarper.h:92
@ GWKAOM_Average
Definition gdalwarper.h:90
@ GWKAOM_Max
Definition gdalwarper.h:93
void GDALWarpInitDstNoDataImag(GDALWarpOptions *, double dNoDataImag)
Initialize padfDstNoDataImag with specified value.
Definition gdalwarper.cpp:1445
GDALResampleAlg
Definition gdalwarper.h:52
@ GRA_CubicSpline
Definition gdalwarper.h:57
@ GRA_Q1
Definition gdalwarper.h:73
@ GRA_Sum
Definition gdalwarper.h:78
@ GRA_Max
Definition gdalwarper.h:66
@ GRA_Cubic
Definition gdalwarper.h:56
@ GRA_Min
Definition gdalwarper.h:68
@ GRA_RMS
Definition gdalwarper.h:81
@ GRA_Lanczos
Definition gdalwarper.h:58
@ GRA_Mode
Definition gdalwarper.h:64
@ GRA_NearestNeighbour
Definition gdalwarper.h:53
@ GRA_Q3
Definition gdalwarper.h:75
@ GRA_Med
Definition gdalwarper.h:70
@ GRA_Average
Definition gdalwarper.h:61
@ GRA_Bilinear
Definition gdalwarper.h:55
GDALDatasetH GDALCreateWarpedVRT(GDALDatasetH hSrcDS, int nPixels, int nLines, double *padfGeoTransform, GDALWarpOptions *psOptions)
Create virtual warped dataset.
Definition vrtwarped.cpp:362
void GDALDestroyWarpOptions(GDALWarpOptions *)
Destroy a warp options structure.
Definition gdalwarper.cpp:1278
void * GDALWarpOperationH
Opaque type representing a GDALWarpOperation object.
Definition gdalwarper.h:577
CPLErr GDALWarpRegionToBuffer(GDALWarpOperationH, int, int, int, int, void *, GDALDataType, int, int, int, int)
Definition gdalwarpoperation.cpp:2284
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:234
CPLErr GDALChunkAndWarpImage(GDALWarpOperationH, int, int, int, int)
Definition gdalwarpoperation.cpp:998
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:152
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:1589
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:131
void GDALWarpInitSrcNoDataImag(GDALWarpOptions *, double dNoDataImag)
Initialize padfSrcNoDataImag with specified value.
Definition gdalwarper.cpp:1464
CPLErr GDALInitializeWarpedVRT(GDALDatasetH hDS, GDALWarpOptions *psWO)
Set warp info on virtual warped dataset.
Definition vrtwarped.cpp:1265
void GDALWarpInitSrcNoDataReal(GDALWarpOptions *, double dNoDataReal)
Initialize padfSrcNoDataReal with specified value.
Definition gdalwarper.cpp:1407
void GDALWarpInitDstNoDataReal(GDALWarpOptions *, double dNoDataReal)
Initialize padfDstNoDataReal with specified value.
Definition gdalwarper.cpp:1388
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:1238
GDALWarpOptions * GDALCreateWarpOptions(void)
Create a warp options structure.
Definition gdalwarper.cpp:1259
void GDALWarpInitNoDataReal(GDALWarpOptions *, double dNoDataReal)
Initialize padfSrcNoDataReal and padfDstNoDataReal with specified value.
Definition gdalwarper.cpp:1427
GDALWarpOptions * GDALCloneWarpOptions(const GDALWarpOptions *)
Clone a warp options structure.
Definition gdalwarper.cpp:1324
void GDALWarpResolveWorkingDataType(GDALWarpOptions *)
If the working data type is unknown, this method will determine a valid working data type to support ...
Definition gdalwarper.cpp:1484
Document node structure.
Definition cpl_minixml.h:70
Warp control options for use with GDALWarpOperation::Initialize()
Definition gdalwarper.h:143
int nSrcAlphaBand
Definition gdalwarper.h:174
GDALDatasetH hDstDS
Definition gdalwarper.h:162
char ** papszWarpOptions
A string list of additional options controlling the warp operation in name=value format.
Definition gdalwarper.h:145
double * padfDstNoDataImag
Definition gdalwarper.h:193
GDALMaskFunc pfnDstValidityMaskFunc
Unused.
Definition gdalwarper.h:229
double * padfSrcNoDataReal
Definition gdalwarper.h:181
void * pTransformerArg
Definition gdalwarper.h:206
GDALDataType eWorkingDataType
Definition gdalwarper.h:155
void * pSrcValidityMaskFuncArg
Unused.
Definition gdalwarper.h:216
void * pDstDensityMaskFuncArg
Unused.
Definition gdalwarper.h:226
int * panDstBands
Definition gdalwarper.h:171
double dfCutlineBlendDist
Definition gdalwarper.h:248
GDALProgressFunc pfnProgress
Definition gdalwarper.h:197
GDALMaskFunc pfnSrcDensityMaskFunc
Unused.
Definition gdalwarper.h:219
GDALDatasetH hSrcDS
Definition gdalwarper.h:158
GDALMaskFunc pfnDstDensityMaskFunc
Unused.
Definition gdalwarper.h:224
void * pPreWarpProcessorArg
Unused.
Definition gdalwarper.h:236
void * pProgressArg
Definition gdalwarper.h:200
int nDstAlphaBand
Definition gdalwarper.h:177
int * panSrcBands
Definition gdalwarper.h:168
GDALTransformerFunc pfnTransformer
Definition gdalwarper.h:203
int nBandCount
Definition gdalwarper.h:165
double dfWarpMemoryLimit
Definition gdalwarper.h:148
void * pSrcDensityMaskFuncArg
Unused.
Definition gdalwarper.h:221
GDALMaskFunc * papfnSrcPerBandValidityMaskFunc
Unused.
Definition gdalwarper.h:209
GDALResampleAlg eResampleAlg
Definition gdalwarper.h:151
GDALMaskFunc pfnSrcValidityMaskFunc
Unused.
Definition gdalwarper.h:214
void * hCutline
Definition gdalwarper.h:244
void * pDstValidityMaskFuncArg
Unused.
Definition gdalwarper.h:231
void ** papSrcPerBandValidityMaskFuncArg
Unused.
Definition gdalwarper.h:211
double * padfDstNoDataReal
Definition gdalwarper.h:189
double * padfSrcNoDataImag
Definition gdalwarper.h:185
void * pPostWarpProcessorArg
Unused.
Definition gdalwarper.h:241