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 */
51 typedef enum
64  GRA_Mode = 6,
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 
88 typedef enum
99 
101 typedef 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 
106 CPLErr 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 
112 CPLErr 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);
117 CPLErr 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 
124 CPLErr 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 
130 CPLErr 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);
135 
136 /* GCMVF stands for GDALWARP_CUTLINE_MASKER_VALIDITY_FLAG */
137 #define GCMVF_PARTIAL_INTERSECTION 0
138 #define GCMVF_NO_INTERSECTION 1
139 #define GCMVF_CHUNK_FULLY_WITHIN_CUTLINE 2
140 CPLErr CPL_DLL GDALWarpCutlineMaskerEx(void *pMaskFuncArg, int nBandCount,
141  GDALDataType eType, int nXOff, int nYOff,
142  int nXSize, int nYSize,
143  GByte ** /* ppImageData */,
144  int bMaskIsFloat, void *pValidityMask,
145  int *pnValidityFlag);
146 
149 /************************************************************************/
150 /* GDALWarpOptions */
151 /************************************************************************/
152 
154 typedef struct
155 {
156 
158 
161 
164 
168 
171 
175 
178 
181 
184 
187 
190 
198 
206 
209  GDALProgressFunc pfnProgress;
210 
213 
216 
219 
224 
229 
231  GDALMaskFunc pfnSrcDensityMaskFunc;
234 
236  GDALMaskFunc pfnDstDensityMaskFunc;
239 
244 
246  CPLErr (*pfnPreWarpChunkProcessor)(void *pKern, void *pArg);
249 
251  CPLErr (*pfnPostWarpChunkProcessor)(void *pKern, void *pArg);
254 
256  void *hCutline;
257 
261 
263 
264 GDALWarpOptions CPL_DLL *CPL_STDCALL GDALCreateWarpOptions(void);
265 void CPL_DLL CPL_STDCALL GDALDestroyWarpOptions(GDALWarpOptions *);
266 GDALWarpOptions CPL_DLL *CPL_STDCALL
268 
269 void CPL_DLL CPL_STDCALL GDALWarpInitDstNoDataReal(GDALWarpOptions *,
270  double dNoDataReal);
271 
272 void CPL_DLL CPL_STDCALL GDALWarpInitSrcNoDataReal(GDALWarpOptions *,
273  double dNoDataReal);
274 
275 void CPL_DLL CPL_STDCALL GDALWarpInitNoDataReal(GDALWarpOptions *,
276  double dNoDataReal);
277 
278 void CPL_DLL CPL_STDCALL GDALWarpInitDstNoDataImag(GDALWarpOptions *,
279  double dNoDataImag);
280 
281 void CPL_DLL CPL_STDCALL GDALWarpInitSrcNoDataImag(GDALWarpOptions *,
282  double dNoDataImag);
283 
284 void CPL_DLL CPL_STDCALL GDALWarpResolveWorkingDataType(GDALWarpOptions *);
285 
286 void CPL_DLL CPL_STDCALL GDALWarpInitDefaultBandMapping(GDALWarpOptions *,
287  int nBandCount);
288 
290 CPLXMLNode CPL_DLL *CPL_STDCALL
291 GDALSerializeWarpOptions(const GDALWarpOptions *);
292 GDALWarpOptions CPL_DLL *CPL_STDCALL GDALDeserializeWarpOptions(CPLXMLNode *);
295 /************************************************************************/
296 /* GDALReprojectImage() */
297 /************************************************************************/
298 
299 CPLErr CPL_DLL CPL_STDCALL GDALReprojectImage(
300  GDALDatasetH hSrcDS, const char *pszSrcWKT, GDALDatasetH hDstDS,
301  const char *pszDstWKT, GDALResampleAlg eResampleAlg,
302  double dfWarpMemoryLimit, double dfMaxError, GDALProgressFunc pfnProgress,
303  void *pProgressArg, GDALWarpOptions *psOptions);
304 
305 CPLErr CPL_DLL CPL_STDCALL GDALCreateAndReprojectImage(
306  GDALDatasetH hSrcDS, const char *pszSrcWKT, const char *pszDstFilename,
307  const char *pszDstWKT, GDALDriverH hDstDriver, char **papszCreateOptions,
308  GDALResampleAlg eResampleAlg, double dfWarpMemoryLimit, double dfMaxError,
309  GDALProgressFunc pfnProgress, void *pProgressArg,
310  GDALWarpOptions *psOptions);
311 
312 /************************************************************************/
313 /* VRTWarpedDataset */
314 /************************************************************************/
315 
316 GDALDatasetH CPL_DLL CPL_STDCALL
317 GDALAutoCreateWarpedVRT(GDALDatasetH hSrcDS, const char *pszSrcWKT,
318  const char *pszDstWKT, GDALResampleAlg eResampleAlg,
319  double dfMaxError, const GDALWarpOptions *psOptions);
320 
321 GDALDatasetH CPL_DLL CPL_STDCALL GDALAutoCreateWarpedVRTEx(
322  GDALDatasetH hSrcDS, const char *pszSrcWKT, const char *pszDstWKT,
323  GDALResampleAlg eResampleAlg, double dfMaxError,
324  const GDALWarpOptions *psOptions, CSLConstList papszTransformerOptions);
325 
326 GDALDatasetH CPL_DLL CPL_STDCALL
327 GDALCreateWarpedVRT(GDALDatasetH hSrcDS, int nPixels, int nLines,
328  double *padfGeoTransform, GDALWarpOptions *psOptions);
329 
330 CPLErr CPL_DLL CPL_STDCALL GDALInitializeWarpedVRT(GDALDatasetH hDS,
331  GDALWarpOptions *psWO);
332 
333 CPL_C_END
334 
335 #if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS)
336 
337 #include <vector>
338 #include <utility>
339 
340 /************************************************************************/
341 /* GDALWarpKernel */
342 /* */
343 
349 #define WARP_EXTRA_ELTS 1
350 
358 class CPL_DLL GDALWarpKernel
359 {
361 
362  public:
365 
371  int nBands;
372 
386 
396 
407 
409  double dfXScale;
411  double dfYScale;
413  double dfXFilter;
415  double dfYFilter;
417  int nXRadius;
419  int nYRadius;
424 
427  int nSrcXOff;
430  int nSrcYOff;
431 
434  int nDstXOff;
437  int nDstYOff;
438 
443 
445  GDALProgressFunc pfnProgress;
447  void *pProgress;
448 
453 
456 
459  void *psThreadData;
460 
461  bool bApplyVerticalShift = false;
462 
463  double dfMultFactorVerticalShift = 1.0;
464 
465  // Tuples of values (e.g. "<R>,<G>,<B>" or "(<R1>,<G1>,<B1>),(<R2>,<G2>,<B2>)") that must
466  // be ignored as contributing source pixels during resampling. Only taken into account by
467  // Average currently
468  std::vector<std::vector<double>> m_aadfExcludedValues{};
469 
472  GDALWarpKernel();
473  virtual ~GDALWarpKernel();
474 
475  CPLErr Validate();
476  CPLErr PerformWarp();
477 };
478 
480 void *GWKThreadsCreate(char **papszWarpOptions,
481  GDALTransformerFunc pfnTransformer,
482  void *pTransformerArg);
483 void GWKThreadsEnd(void *psThreadDataIn);
486 /************************************************************************/
487 /* GDALWarpOperation() */
488 /* */
489 /* This object is application created, or created by a higher */
490 /* level convenience function. It is responsible for */
491 /* subdividing the operation into chunks, loading and saving */
492 /* imagery, and establishing the varios validity and density */
493 /* masks. Actual resampling is done by the GDALWarpKernel. */
494 /************************************************************************/
495 
497 typedef struct _GDALWarpChunk GDALWarpChunk;
498 
501 class CPL_DLL GDALWarpOperation
502 {
503 
505 
506  private:
507  GDALWarpOptions *psOptions;
508 
509  void WipeOptions();
510  int ValidateOptions();
511 
512  bool ComputeSourceWindowTransformPoints(
513  int nDstXOff, int nDstYOff, int nDstXSize, int nDstYSize, bool bUseGrid,
514  bool bAll, int nStepCount, bool bTryWithCheckWithInvertProj,
515  double &dfMinXOut, double &dfMinYOut, double &dfMaxXOut,
516  double &dfMaxYOut, int &nSamplePoints, int &nFailedCount);
517 
518  void ComputeSourceWindowStartingFromSource(int nDstXOff, int nDstYOff,
519  int nDstXSize, int nDstYSize,
520  double *padfSrcMinX,
521  double *padfSrcMinY,
522  double *padfSrcMaxX,
523  double *padfSrcMaxY);
524 
525  static CPLErr CreateKernelMask(GDALWarpKernel *, int iBand,
526  const char *pszType);
527 
528  CPLMutex *hIOMutex;
529  CPLMutex *hWarpMutex;
530 
531  int nChunkListCount;
532  int nChunkListMax;
533  GDALWarpChunk *pasChunkList;
534 
535  int bReportTimings;
536  unsigned long nLastTimeReported;
537 
538  void *psThreadData;
539 
540  // Coordinates a few special points in target image space, to determine
541  // if ComputeSourceWindow() must use a grid based sampling.
542  std::vector<std::pair<double, double>> aDstXYSpecialPoints{};
543 
544  bool m_bIsTranslationOnPixelBoundaries = false;
545 
546  void WipeChunkList();
547  CPLErr CollectChunkListInternal(int nDstXOff, int nDstYOff, int nDstXSize,
548  int nDstYSize);
549  void CollectChunkList(int nDstXOff, int nDstYOff, int nDstXSize,
550  int nDstYSize);
551  void ReportTiming(const char *);
552 
553  public:
555  virtual ~GDALWarpOperation();
556 
557  CPLErr Initialize(const GDALWarpOptions *psNewOptions);
558  void *CreateDestinationBuffer(int nDstXSize, int nDstYSize,
559  int *pbWasInitialized = nullptr);
560  static void DestroyDestinationBuffer(void *pDstBuffer);
561 
562  const GDALWarpOptions *GetOptions();
563 
564  CPLErr ChunkAndWarpImage(int nDstXOff, int nDstYOff, int nDstXSize,
565  int nDstYSize);
566  CPLErr ChunkAndWarpMulti(int nDstXOff, int nDstYOff, int nDstXSize,
567  int nDstYSize);
568  CPLErr WarpRegion(int nDstXOff, int nDstYOff, int nDstXSize, int nDstYSize,
569  int nSrcXOff = 0, int nSrcYOff = 0, int nSrcXSize = 0,
570  int nSrcYSize = 0, double dfProgressBase = 0.0,
571  double dfProgressScale = 1.0);
572  CPLErr WarpRegion(int nDstXOff, int nDstYOff, int nDstXSize, int nDstYSize,
573  int nSrcXOff, int nSrcYOff, int nSrcXSize, int nSrcYSize,
574  double dfSrcXExtraSize, double dfSrcYExtraSize,
575  double dfProgressBase, double dfProgressScale);
576  CPLErr WarpRegionToBuffer(int nDstXOff, int nDstYOff, int nDstXSize,
577  int nDstYSize, void *pDataBuf,
578  GDALDataType eBufDataType, int nSrcXOff = 0,
579  int nSrcYOff = 0, int nSrcXSize = 0,
580  int nSrcYSize = 0, double dfProgressBase = 0.0,
581  double dfProgressScale = 1.0);
582  CPLErr WarpRegionToBuffer(int nDstXOff, int nDstYOff, int nDstXSize,
583  int nDstYSize, void *pDataBuf,
584  GDALDataType eBufDataType, int nSrcXOff,
585  int nSrcYOff, int nSrcXSize, int nSrcYSize,
586  double dfSrcXExtraSize, double dfSrcYExtraSize,
587  double dfProgressBase, double dfProgressScale);
588 
589  protected:
590  friend class VRTWarpedDataset;
591  CPLErr ComputeSourceWindow(int nDstXOff, int nDstYOff, int nDstXSize,
592  int nDstYSize, int *pnSrcXOff, int *pnSrcYOff,
593  int *pnSrcXSize, int *pnSrcYSize,
594  double *pdfSrcXExtraSize,
595  double *pdfSrcYExtraSize,
596  double *pdfSrcFillRatio);
597 
598  double GetWorkingMemoryForWindow(int nSrcXSize, int nSrcYSize,
599  int nDstXSize, int nDstYSize) const;
600 };
601 
602 #endif /* def __cplusplus */
603 
605 
607 typedef void *GDALWarpOperationH;
608 
611 CPLErr CPL_DLL GDALChunkAndWarpImage(GDALWarpOperationH, int, int, int, int);
612 CPLErr CPL_DLL GDALChunkAndWarpMulti(GDALWarpOperationH, int, int, int, int);
613 CPLErr CPL_DLL GDALWarpRegion(GDALWarpOperationH, int, int, int, int, int, int,
614  int, int);
615 CPLErr CPL_DLL GDALWarpRegionToBuffer(GDALWarpOperationH, int, int, int, int,
616  void *, GDALDataType, int, int, int, int);
617 
618 /************************************************************************/
619 /* Warping kernel functions */
620 /************************************************************************/
621 
623 int GWKGetFilterRadius(GDALResampleAlg eResampleAlg);
624 
625 typedef double (*FilterFuncType)(double dfX);
626 FilterFuncType GWKGetFilterFunc(GDALResampleAlg eResampleAlg);
627 
628 // TODO(schwehr): Can padfVals be a const pointer?
629 typedef double (*FilterFunc4ValuesType)(double *padfVals);
630 FilterFunc4ValuesType GWKGetFilterFunc4Values(GDALResampleAlg eResampleAlg);
633 CPL_C_END
634 
635 #endif /* ndef GDAL_ALG_H_INCLUDED */
This class represents the lowest level of abstraction of warping.
Definition: gdalwarper.h:359
int nXRadius
X size of window to filter.
Definition: gdalwarper.h:417
int nSrcYSize
Height of the source image.
Definition: gdalwarper.h:376
char ** papszWarpOptions
Warp options.
Definition: gdalwarper.h:364
int nFiltInitX
X filtering offset.
Definition: gdalwarper.h:421
double dfXScale
X resampling scale, i.e.
Definition: gdalwarper.h:409
double dfYFilter
Y size of filter kernel.
Definition: gdalwarper.h:415
int nDstXSize
Width of the destination image.
Definition: gdalwarper.h:398
double dfSrcXExtraSize
Extra pixels (included in nSrcXSize) reserved for filter window.
Definition: gdalwarper.h:379
double * padfDstNoDataReal
Array of nBands value for destination nodata.
Definition: gdalwarper.h:455
int nDstXOff
X offset of the destination buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:434
GDALResampleAlg eResample
Resample algorithm.
Definition: gdalwarper.h:367
GDALTransformerFunc pfnTransformer
Pixel transformation function.
Definition: gdalwarper.h:440
GUInt32 * panUnifiedSrcValid
Unified validity mask of size (nSrcXSize * nSrcYSize + WARP_EXTRA_ELTS) / 8.
Definition: gdalwarper.h:392
int nDstYSize
Height of the destination image.
Definition: gdalwarper.h:400
int nBands
Number of input and output bands (excluding alpha bands)
Definition: gdalwarper.h:371
double dfProgressBase
Base/offset value for progress computation.
Definition: gdalwarper.h:450
GDALDataType eWorkingDataType
Working data type.
Definition: gdalwarper.h:369
double dfSrcYExtraSize
Extra pixels (included in nSrcYSize) reserved for filter window.
Definition: gdalwarper.h:382
int nSrcXOff
X offset of the source buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:427
int nSrcYOff
Y offset of the source buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:430
int nDstYOff
Y offset of the destination buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:437
int nFiltInitY
Y filtering offset.
Definition: gdalwarper.h:423
GDALProgressFunc pfnProgress
Progress function.
Definition: gdalwarper.h:445
GUInt32 ** papanBandSrcValid
Array of nBands validity mask of size (nSrcXSize * nSrcYSize + WARP_EXTRA_ELTS) / 8.
Definition: gdalwarper.h:389
void * pProgress
User data provided to pfnProgress.
Definition: gdalwarper.h:447
float * pafUnifiedSrcDensity
Unified source density of size nSrcXSize * nSrcYSize + WARP_EXTRA_ELTS.
Definition: gdalwarper.h:395
int nYRadius
Y size of window to filter.
Definition: gdalwarper.h:419
float * pafDstDensity
Destination density of size nDstXSize * nDstYSize.
Definition: gdalwarper.h:406
double dfXFilter
X size of filter kernel.
Definition: gdalwarper.h:413
double dfYScale
Y resampling scale, i.e.
Definition: gdalwarper.h:411
GByte ** papabyDstImage
Array of nBands destination images of size nDstXSize * nDstYSize.
Definition: gdalwarper.h:402
double dfProgressScale
Scale value for progress computation.
Definition: gdalwarper.h:452
int nSrcXSize
Width of the source image.
Definition: gdalwarper.h:374
void * pTransformerArg
User data provided to pfnTransformer.
Definition: gdalwarper.h:442
GByte ** papabySrcImage
Array of nBands source images of size nSrcXSize * nSrcYSize.
Definition: gdalwarper.h:385
GUInt32 * panDstValid
Validify mask of size (nDstXSize * nDstYSize) / 8.
Definition: gdalwarper.h:404
High level image warping class.
Definition: gdalwarper.h:502
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:299
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:295
unsigned int GUInt32
Unsigned int32 type.
Definition: cpl_port.h:177
#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:1042
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1183
unsigned char GByte
Unsigned byte type.
Definition: cpl_port.h:185
GDALDataType
Definition: gdal.h:64
void * GDALDatasetH
Opaque type used for the C bindings of the C++ GDALDataset class.
Definition: gdal.h:291
void * GDALDriverH
Opaque type used for the C bindings of the C++ GDALDriver class.
Definition: gdal.h:297
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:1702
void GDALDestroyWarpOperation(GDALWarpOperationH)
Definition: gdalwarpoperation.cpp:825
GDALWarpOperationH GDALCreateWarpOperation(const GDALWarpOptions *)
Definition: gdalwarpoperation.cpp:805
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:1478
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:365
void GDALDestroyWarpOptions(GDALWarpOptions *)
Destroy a warp options structure.
Definition: gdalwarper.cpp:1312
void * GDALWarpOperationH
Opaque type representing a GDALWarpOperation object.
Definition: gdalwarper.h:607
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:235
GDALWarpOptions * GDALCloneWarpOptions(const GDALWarpOptions *)
Clone a warp options structure.
Definition: gdalwarper.cpp:1357
CPLErr GDALChunkAndWarpImage(GDALWarpOperationH, int, int, int, int)
Definition: gdalwarpoperation.cpp:999
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:155
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:1623
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:134
void GDALWarpInitSrcNoDataImag(GDALWarpOptions *, double dNoDataImag)
Initialize padfSrcNoDataImag with specified value.
Definition: gdalwarper.cpp:1497
CPLErr GDALInitializeWarpedVRT(GDALDatasetH hDS, GDALWarpOptions *psWO)
Set warp info on virtual warped dataset.
Definition: vrtwarped.cpp:1271
void GDALWarpInitSrcNoDataReal(GDALWarpOptions *, double dNoDataReal)
Initialize padfSrcNoDataReal with specified value.
Definition: gdalwarper.cpp:1440
void GDALWarpInitDstNoDataReal(GDALWarpOptions *, double dNoDataReal)
Initialize padfDstNoDataReal with specified value.
Definition: gdalwarper.cpp:1421
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:98
CPLErr GDALChunkAndWarpMulti(GDALWarpOperationH, int, int, int, int)
Definition: gdalwarpoperation.cpp:1241
GDALWarpOptions * GDALCreateWarpOptions(void)
Create a warp options structure.
Definition: gdalwarper.cpp:1293
void GDALWarpInitNoDataReal(GDALWarpOptions *, double dNoDataReal)
Initialize padfSrcNoDataReal and padfDstNoDataReal with specified value.
Definition: gdalwarper.cpp:1460
void GDALWarpResolveWorkingDataType(GDALWarpOptions *)
If the working data type is unknown, this method will determine a valid working data type to support ...
Definition: gdalwarper.cpp:1517
Document node structure.
Definition: cpl_minixml.h:71
Warp control options for use with GDALWarpOperation::Initialize()
Definition: gdalwarper.h:155
int nSrcAlphaBand
Definition: gdalwarper.h:186
GDALDatasetH hDstDS
Definition: gdalwarper.h:174
char ** papszWarpOptions
A string list of additional options controlling the warp operation in name=value format.
Definition: gdalwarper.h:157
double * padfDstNoDataImag
Definition: gdalwarper.h:205
GDALMaskFunc pfnDstValidityMaskFunc
Unused.
Definition: gdalwarper.h:241
double * padfSrcNoDataReal
Definition: gdalwarper.h:193
void * pTransformerArg
Definition: gdalwarper.h:218
GDALDataType eWorkingDataType
Definition: gdalwarper.h:167
void * pSrcValidityMaskFuncArg
Unused.
Definition: gdalwarper.h:228
void * pDstDensityMaskFuncArg
Unused.
Definition: gdalwarper.h:238
int * panDstBands
Definition: gdalwarper.h:183
double dfCutlineBlendDist
Definition: gdalwarper.h:260
GDALProgressFunc pfnProgress
Definition: gdalwarper.h:209
GDALMaskFunc pfnSrcDensityMaskFunc
Unused.
Definition: gdalwarper.h:231
GDALDatasetH hSrcDS
Definition: gdalwarper.h:170
GDALMaskFunc pfnDstDensityMaskFunc
Unused.
Definition: gdalwarper.h:236
void * pPreWarpProcessorArg
Unused.
Definition: gdalwarper.h:248
void * pProgressArg
Definition: gdalwarper.h:212
int nDstAlphaBand
Definition: gdalwarper.h:189
int * panSrcBands
Definition: gdalwarper.h:180
GDALTransformerFunc pfnTransformer
Definition: gdalwarper.h:215
int nBandCount
Definition: gdalwarper.h:177
double dfWarpMemoryLimit
Definition: gdalwarper.h:160
void * pSrcDensityMaskFuncArg
Unused.
Definition: gdalwarper.h:233
GDALMaskFunc * papfnSrcPerBandValidityMaskFunc
Unused.
Definition: gdalwarper.h:221
GDALResampleAlg eResampleAlg
Definition: gdalwarper.h:163
GDALMaskFunc pfnSrcValidityMaskFunc
Unused.
Definition: gdalwarper.h:226
void * hCutline
Definition: gdalwarper.h:256
void * pDstValidityMaskFuncArg
Unused.
Definition: gdalwarper.h:243
void ** papSrcPerBandValidityMaskFuncArg
Unused.
Definition: gdalwarper.h:223
double * padfDstNoDataReal
Definition: gdalwarper.h:201
double * padfSrcNoDataImag
Definition: gdalwarper.h:197
void * pPostWarpProcessorArg
Unused.
Definition: gdalwarper.h:253