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
46 CPL_C_START
47
48 /* Note: values are selected to be consistent with GDALRIOResampleAlg of gcore/gdal.h */
50 typedef enum { GRA_NearestNeighbour=0, GRA_Bilinear=1, GRA_Cubic=2, GRA_CubicSpline=3, GRA_Lanczos=4, GRA_Average=5, GRA_Mode=6,
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
69 } GDALResampleAlg;
70
72 typedef enum { GWKAOM_Average=1, GWKAOM_Fmode=2, GWKAOM_Imode=3, GWKAOM_Max=4, GWKAOM_Min=5, GWKAOM_Quant=6, GWKAOM_Sum=7, GWKAOM_RMS=8
81 } GWKAverageOrModeAlg;
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
129 char **papszWarpOptions;
130
132 double dfWarpMemoryLimit;
133
135 GDALResampleAlg eResampleAlg;
136
139 GDALDataType eWorkingDataType;
140
142 GDALDatasetH hSrcDS;
143
145 GDALDatasetH hDstDS;
146
148 int nBandCount;
149
151 int *panSrcBands;
152
154 int *panDstBands;
155
157 int nSrcAlphaBand;
158
160 int nDstAlphaBand;
161
163 double *padfSrcNoDataReal;
167 double *padfSrcNoDataImag;
168
170 double *padfDstNoDataReal;
174 double *padfDstNoDataImag;
175
178 GDALProgressFunc pfnProgress;
179
181 void *pProgressArg;
182
184 GDALTransformerFunc pfnTransformer;
185
187 void *pTransformerArg;
188
190 GDALMaskFunc *papfnSrcPerBandValidityMaskFunc;
192 void **papSrcPerBandValidityMaskFuncArg;
193
195 GDALMaskFunc pfnSrcValidityMaskFunc;
197 void *pSrcValidityMaskFuncArg;
198
200 GDALMaskFunc pfnSrcDensityMaskFunc;
202 void *pSrcDensityMaskFuncArg;
203
205 GDALMaskFunc pfnDstDensityMaskFunc;
207 void *pDstDensityMaskFuncArg;
208
210 GDALMaskFunc pfnDstValidityMaskFunc;
212 void *pDstValidityMaskFuncArg;
213
215 CPLErr (*pfnPreWarpChunkProcessor)( void *pKern, void *pArg );
217 void *pPreWarpProcessorArg;
218
220 CPLErr (*pfnPostWarpChunkProcessor)( void *pKern, void *pArg);
222 void *pPostWarpProcessorArg;
223
225 void *hCutline;
226
228 double dfCutlineBlendDist;
229
230 } GDALWarpOptions;
231
232 GDALWarpOptions CPL_DLL * CPL_STDCALL GDALCreateWarpOptions(void);
233 void CPL_DLL CPL_STDCALL GDALDestroyWarpOptions( GDALWarpOptions * );
234 GDALWarpOptions CPL_DLL * CPL_STDCALL
235 GDALCloneWarpOptions( const GDALWarpOptions * );
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
253 GDALWarpResolveWorkingDataType( GDALWarpOptions * );
254
255 void CPL_DLL CPL_STDCALL
256 GDALWarpInitDefaultBandMapping( GDALWarpOptions *, int nBandCount );
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
291 GDALAutoCreateWarpedVRT( GDALDatasetH hSrcDS,
292 const char *pszSrcWKT, const char *pszDstWKT,
293 GDALResampleAlg eResampleAlg,
294 double dfMaxError, const GDALWarpOptions *psOptions );
295
296 GDALDatasetH CPL_DLL CPL_STDCALL
297 GDALAutoCreateWarpedVRTEx( GDALDatasetH hSrcDS,
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
304 GDALCreateWarpedVRT( GDALDatasetH hSrcDS,
305 int nPixels, int nLines, double *padfGeoTransform,
306 GDALWarpOptions *psOptions );
307
308 CPLErr CPL_DLL CPL_STDCALL
309 GDALInitializeWarpedVRT( GDALDatasetH hDS,
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 {
339 CPL_DISALLOW_COPY_ASSIGN(GDALWarpKernel)
340
341 public:
343 char **papszWarpOptions;
344
346 GDALResampleAlg eResample;
348 GDALDataType eWorkingDataType;
350 int nBands;
351
353 int nSrcXSize;
355 int nSrcYSize;
357 double dfSrcXExtraSize;
359 double dfSrcYExtraSize;
361 GByte **papabySrcImage;
362
364 GUInt32 **papanBandSrcValid;
366 GUInt32 *panUnifiedSrcValid;
368 float *pafUnifiedSrcDensity;
369
371 int nDstXSize;
373 int nDstYSize;
375 GByte **papabyDstImage;
377 GUInt32 *panDstValid;
379 float *pafDstDensity;
380
382 double dfXScale;
384 double dfYScale;
386 double dfXFilter;
388 double dfYFilter;
390 int nXRadius;
392 int nYRadius;
394 int nFiltInitX;
396 int nFiltInitY;
397
399 int nSrcXOff;
401 int nSrcYOff;
402
404 int nDstXOff;
406 int nDstYOff;
407
409 GDALTransformerFunc pfnTransformer;
411 void *pTransformerArg;
412
414 GDALProgressFunc pfnProgress;
416 void *pProgress;
417
419 double dfProgressBase;
421 double dfProgressScale;
422
424 double *padfDstNoDataReal;
425
428 void *psThreadData;
429
430 bool bApplyVerticalShift = false;
431
432 double dfMultFactorVerticalShift = 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
465 CPL_DISALLOW_COPY_ASSIGN(GDALWarpOperation)
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 bool m_bIsTranslationOnPixelBoundaries = false;
506
507 void WipeChunkList();
508 CPLErr CollectChunkListInternal( int nDstXOff, int nDstYOff,
509 int nDstXSize, int nDstYSize );
510 void CollectChunkList( int nDstXOff, int nDstYOff,
511 int nDstXSize, int nDstYSize );
512 void ReportTiming( const char * );
513
514 public:
515 GDALWarpOperation();
516 virtual ~GDALWarpOperation();
517
518 CPLErr Initialize( const GDALWarpOptions *psNewOptions );
519 void* CreateDestinationBuffer( int nDstXSize, int nDstYSize,
520 int *pbWasInitialized = nullptr );
521 static void DestroyDestinationBuffer(void* pDstBuffer);
522
523 const GDALWarpOptions *GetOptions();
524
525 CPLErr ChunkAndWarpImage( int nDstXOff, int nDstYOff,
526 int nDstXSize, int nDstYSize );
527 CPLErr ChunkAndWarpMulti( int nDstXOff, int nDstYOff,
528 int nDstXSize, int nDstYSize );
529 CPLErr WarpRegion( int nDstXOff, int nDstYOff,
530 int nDstXSize, int nDstYSize,
531 int nSrcXOff=0, int nSrcYOff=0,
532 int nSrcXSize=0, int nSrcYSize=0,
533 double dfProgressBase=0.0, double dfProgressScale=1.0);
534 CPLErr WarpRegion( int nDstXOff, int nDstYOff,
535 int nDstXSize, int nDstYSize,
536 int nSrcXOff, int nSrcYOff,
537 int nSrcXSize, int nSrcYSize,
538 double dfSrcXExtraSize, double dfSrcYExtraSize,
539 double dfProgressBase, double dfProgressScale);
540 CPLErr WarpRegionToBuffer( int nDstXOff, int nDstYOff,
541 int nDstXSize, int nDstYSize,
542 void *pDataBuf,
543 GDALDataType eBufDataType,
544 int nSrcXOff=0, int nSrcYOff=0,
545 int nSrcXSize=0, int nSrcYSize=0,
546 double dfProgressBase=0.0, double dfProgressScale=1.0);
547 CPLErr WarpRegionToBuffer( int nDstXOff, int nDstYOff,
548 int nDstXSize, int nDstYSize,
549 void *pDataBuf,
550 GDALDataType eBufDataType,
551 int nSrcXOff, int nSrcYOff,
552 int nSrcXSize, int nSrcYSize,
553 double dfSrcXExtraSize, double dfSrcYExtraSize,
554 double dfProgressBase, double dfProgressScale);
555 };
556
557 #endif /* def __cplusplus */
558
559 CPL_C_START
560
562 typedef void * GDALWarpOperationH;
563
564 GDALWarpOperationH CPL_DLL GDALCreateWarpOperation(const GDALWarpOptions* );
565 void CPL_DLL GDALDestroyWarpOperation( GDALWarpOperationH );
566 CPLErr CPL_DLL GDALChunkAndWarpImage( GDALWarpOperationH, int, int, int, int );
567 CPLErr CPL_DLL GDALChunkAndWarpMulti( GDALWarpOperationH, int, int, int, int );
568 CPLErr CPL_DLL GDALWarpRegion( GDALWarpOperationH,
569 int, int, int, int, int, int, int, int );
570 CPLErr CPL_DLL GDALWarpRegionToBuffer( GDALWarpOperationH, int, int, int, int,
571 void *, GDALDataType,
572 int, int, int, int );
573
574 /************************************************************************/
575 /* Warping kernel functions */
576 /************************************************************************/
577
579 int GWKGetFilterRadius(GDALResampleAlg eResampleAlg);
580
581 typedef double (*FilterFuncType)(double dfX);
582 FilterFuncType GWKGetFilterFunc(GDALResampleAlg eResampleAlg);
583
584 // TODO(schwehr): Can padfVals be a const pointer?
585 typedef double (*FilterFunc4ValuesType)(double* padfVals);
586 FilterFunc4ValuesType GWKGetFilterFunc4Values(GDALResampleAlg eResampleAlg);
589 CPL_C_END
590
591 #endif /* ndef GDAL_ALG_H_INCLUDED */
GDALWarpKernel::nSrcYSize
int nSrcYSize
Height of the source image.
Definition: gdalwarper.h:355
GDALWarpKernel::nXRadius
int nXRadius
X size of window to filter.
Definition: gdalwarper.h:390
GDALWarpKernel::pafUnifiedSrcDensity
float * pafUnifiedSrcDensity
Unified source density of size nSrcXSize * nSrcYSize + WARP_EXTRA_ELTS.
Definition: gdalwarper.h:368
GRA_Med
@ GRA_Med
Definition: gdalwarper.h:61
GDALCreateAndReprojectImage
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:241
GDALWarpKernel::dfXFilter
double dfXFilter
X size of filter kernel.
Definition: gdalwarper.h:386
GDALWarpOptions::padfSrcNoDataImag
double * padfSrcNoDataImag
Definition: gdalwarper.h:167
GDALWarpKernel::dfProgressScale
double dfProgressScale
Scale value for progress computation.
Definition: gdalwarper.h:421
GDALWarpOptions::pfnProgress
GDALProgressFunc pfnProgress
Definition: gdalwarper.h:178
GByte
unsigned char GByte
Unsigned byte type.
Definition: cpl_port.h:203
GDALWarpKernel::nFiltInitX
int nFiltInitX
X filtering offset.
Definition: gdalwarper.h:394
GDALAutoCreateWarpedVRTEx
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:156
GDALWarpOptions::pTransformerArg
void * pTransformerArg
Definition: gdalwarper.h:187
GDALWarpOptions::pPostWarpProcessorArg
void * pPostWarpProcessorArg
Unused.
Definition: gdalwarper.h:222
GDALWarpKernel::dfYFilter
double dfYFilter
Y size of filter kernel.
Definition: gdalwarper.h:388
GDALWarpOptions::padfDstNoDataImag
double * padfDstNoDataImag
Definition: gdalwarper.h:174
GDALWarpKernel::papabySrcImage
GByte ** papabySrcImage
Array of nBands source images of size nSrcXSize * nSrcYSize.
Definition: gdalwarper.h:361
GDALWarpKernel::eResample
GDALResampleAlg eResample
Resample algorithm.
Definition: gdalwarper.h:346
GDALWarpKernel::papszWarpOptions
char ** papszWarpOptions
Warp options.
Definition: gdalwarper.h:343
GDALWarpOptions::pfnDstDensityMaskFunc
GDALMaskFunc pfnDstDensityMaskFunc
Unused.
Definition: gdalwarper.h:205
GDALTransformerFunc
int(* GDALTransformerFunc)(void *pTransformerArg, int bDstToSrc, int nPointCount, double *x, double *y, double *z, int *panSuccess)
Definition: gdal_alg.h:115
GDALWarpKernel::nDstYOff
int nDstYOff
Y offset of the destination buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:406
GDALWarpKernel::dfYScale
double dfYScale
Y resampling scale, i.e.
Definition: gdalwarper.h:384
GRA_CubicSpline
@ GRA_CubicSpline
Definition: gdalwarper.h:54
GDALWarpOptions::pDstDensityMaskFuncArg
void * pDstDensityMaskFuncArg
Unused.
Definition: gdalwarper.h:207
GDALWarpRegionToBuffer
CPLErr GDALWarpRegionToBuffer(GDALWarpOperationH, int, int, int, int, void *, GDALDataType, int, int, int, int)
Definition: gdalwarpoperation.cpp:2336
GDALWarpInitSrcNoDataReal
void GDALWarpInitSrcNoDataReal(GDALWarpOptions *, double dNoDataReal)
Initialize padfSrcNoDataReal with specified value.
Definition: gdalwarper.cpp:1406
GDALWarpOptions::pSrcDensityMaskFuncArg
void * pSrcDensityMaskFuncArg
Unused.
Definition: gdalwarper.h:202
GDALAutoCreateWarpedVRT
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:130
cpl_minixml.h
GWKAOM_Min
@ GWKAOM_Min
Definition: gdalwarper.h:77
GDALDestroyWarpOptions
void GDALDestroyWarpOptions(GDALWarpOptions *)
Destroy a warp options structure.
Definition: gdalwarper.cpp:1285
GRA_Sum
@ GRA_Sum
Definition: gdalwarper.h:64
GDALWarpOptions::nBandCount
int nBandCount
Definition: gdalwarper.h:148
GDALWarpKernel::nSrcYOff
int nSrcYOff
Y offset of the source buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:401
GDALCreateWarpedVRT
GDALDatasetH GDALCreateWarpedVRT(GDALDatasetH hSrcDS, int nPixels, int nLines, double *padfGeoTransform, GDALWarpOptions *psOptions)
Create virtual warped dataset.
Definition: vrtwarped.cpp:372
GDALWarpKernel
This class represents the lowest level of abstraction of warping.
Definition: gdalwarper.h:337
GWKAOM_Average
@ GWKAOM_Average
Definition: gdalwarper.h:73
GWKAverageOrModeAlg
GWKAverageOrModeAlg
Definition: gdalwarper.h:72
GDALDataType
GDALDataType
Definition: gdal.h:63
GRA_Q1
@ GRA_Q1
Definition: gdalwarper.h:62
GDALWarpKernel::nYRadius
int nYRadius
Y size of window to filter.
Definition: gdalwarper.h:392
CPLXMLNode
Document node structure.
Definition: cpl_minixml.h:69
GDALWarpOperation
Definition: gdalwarper.h:463
GDALWarpKernel::dfXScale
double dfXScale
X resampling scale, i.e.
Definition: gdalwarper.h:382
GDALWarpKernel::dfSrcXExtraSize
double dfSrcXExtraSize
Extra pixels (included in nSrcXSize) reserved for filter window.
Definition: gdalwarper.h:357
GDALWarpInitDstNoDataReal
void GDALWarpInitDstNoDataReal(GDALWarpOptions *, double dNoDataReal)
Initialize padfDstNoDataReal with specified value.
Definition: gdalwarper.cpp:1386
GDALWarpOptions::papszWarpOptions
char ** papszWarpOptions
Definition: gdalwarper.h:129
GDALWarpKernel::pafDstDensity
float * pafDstDensity
Destination density of size nDstXSize * nDstYSize.
Definition: gdalwarper.h:379
GDALWarpInitDstNoDataImag
void GDALWarpInitDstNoDataImag(GDALWarpOptions *, double dNoDataImag)
Initialize padfDstNoDataImag with specified value.
Definition: gdalwarper.cpp:1444
GDALWarpOptions::pfnSrcValidityMaskFunc
GDALMaskFunc pfnSrcValidityMaskFunc
Unused.
Definition: gdalwarper.h:195
GDALWarpOptions::pProgressArg
void * pProgressArg
Definition: gdalwarper.h:181
GRA_Lanczos
@ GRA_Lanczos
Definition: gdalwarper.h:55
GDALWarpKernel::nFiltInitY
int nFiltInitY
Y filtering offset.
Definition: gdalwarper.h:396
CPL_C_START
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:304
GRA_Average
@ GRA_Average
Definition: gdalwarper.h:56
GDALWarpOptions
Warp control options for use with GDALWarpOperation::Initialize()
Definition: gdalwarper.h:127
GWKAOM_Max
@ GWKAOM_Max
Definition: gdalwarper.h:76
GDALWarpOptions::nSrcAlphaBand
int nSrcAlphaBand
Definition: gdalwarper.h:157
GDALDestroyWarpOperation
void GDALDestroyWarpOperation(GDALWarpOperationH)
Definition: gdalwarpoperation.cpp:831
GDALWarpKernel::pProgress
void * pProgress
User data provided to pfnProgress.
Definition: gdalwarper.h:416
GDALWarpOptions::panSrcBands
int * panSrcBands
Definition: gdalwarper.h:151
GDALWarpKernel::dfSrcYExtraSize
double dfSrcYExtraSize
Extra pixels (included in nSrcYSize) reserved for filter window.
Definition: gdalwarper.h:359
GDALWarpKernel::pfnTransformer
GDALTransformerFunc pfnTransformer
Pixel transformation function.
Definition: gdalwarper.h:409
GDALWarpOptions::hSrcDS
GDALDatasetH hSrcDS
Definition: gdalwarper.h:142
GWKAOM_RMS
@ GWKAOM_RMS
Definition: gdalwarper.h:80
CSLConstList
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1056
GRA_Cubic
@ GRA_Cubic
Definition: gdalwarper.h:53
GWKAOM_Sum
@ GWKAOM_Sum
Definition: gdalwarper.h:79
GDALCloneWarpOptions
GDALWarpOptions * GDALCloneWarpOptions(const GDALWarpOptions *)
Clone a warp options structure.
Definition: gdalwarper.cpp:1326
GDALWarpOptions::papSrcPerBandValidityMaskFuncArg
void ** papSrcPerBandValidityMaskFuncArg
Unused.
Definition: gdalwarper.h:192
GDALReprojectImage
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
GDALWarpKernel::pTransformerArg
void * pTransformerArg
User data provided to pfnTransformer.
Definition: gdalwarper.h:411
GRA_Min
@ GRA_Min
Definition: gdalwarper.h:60
CPL_C_END
#define CPL_C_END
Macro to end a block of C symbols.
Definition: cpl_port.h:306
GDALWarpOptions::padfDstNoDataReal
double * padfDstNoDataReal
Definition: gdalwarper.h:170
GDALWarpKernel::nBands
int nBands
Number of input and output bands (excluding alpha bands)
Definition: gdalwarper.h:350
GDALWarpOptions::panDstBands
int * panDstBands
Definition: gdalwarper.h:154
GRA_RMS
@ GRA_RMS
Definition: gdalwarper.h:65
GDALWarpKernel::panUnifiedSrcValid
GUInt32 * panUnifiedSrcValid
Unified validity mask of size (nSrcXSize * nSrcYSize + WARP_EXTRA_ELTS) / 8.
Definition: gdalwarper.h:366
GDALWarpOperationH
void * GDALWarpOperationH
Opaque type representing a GDALWarpOperation object.
Definition: gdalwarper.h:562
GDALWarpRegion
CPLErr GDALWarpRegion(GDALWarpOperationH, int, int, int, int, int, int, int, int)
Definition: gdalwarpoperation.cpp:1693
GWKAOM_Fmode
@ GWKAOM_Fmode
Definition: gdalwarper.h:74
GDALWarpOptions::papfnSrcPerBandValidityMaskFunc
GDALMaskFunc * papfnSrcPerBandValidityMaskFunc
Unused.
Definition: gdalwarper.h:190
GDALResampleAlg
GDALResampleAlg
Definition: gdalwarper.h:50
GRA_Bilinear
@ GRA_Bilinear
Definition: gdalwarper.h:52
GRA_Max
@ GRA_Max
Definition: gdalwarper.h:59
GDALWarpOptions::hDstDS
GDALDatasetH hDstDS
Definition: gdalwarper.h:145
gdal_alg.h
GDALWarpInitSrcNoDataImag
void GDALWarpInitSrcNoDataImag(GDALWarpOptions *, double dNoDataImag)
Initialize padfSrcNoDataImag with specified value.
Definition: gdalwarper.cpp:1463
GDALWarpOptions::pDstValidityMaskFuncArg
void * pDstValidityMaskFuncArg
Unused.
Definition: gdalwarper.h:212
GDALWarpInitDefaultBandMapping
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:1588
GDALWarpKernel::padfDstNoDataReal
double * padfDstNoDataReal
Array of nBands value for destination nodata.
Definition: gdalwarper.h:424
GDALChunkAndWarpImage
CPLErr GDALChunkAndWarpImage(GDALWarpOperationH, int, int, int, int)
Definition: gdalwarpoperation.cpp:1013
GDALWarpOptions::pfnSrcDensityMaskFunc
GDALMaskFunc pfnSrcDensityMaskFunc
Unused.
Definition: gdalwarper.h:200
GDALWarpOptions::pPreWarpProcessorArg
void * pPreWarpProcessorArg
Unused.
Definition: gdalwarper.h:217
GDALWarpKernel::papabyDstImage
GByte ** papabyDstImage
Array of nBands destination images of size nDstXSize * nDstYSize.
Definition: gdalwarper.h:375
GDALWarpOptions::dfCutlineBlendDist
double dfCutlineBlendDist
Definition: gdalwarper.h:228
GDALWarpOptions::hCutline
void * hCutline
Definition: gdalwarper.h:225
GDALWarpKernel::eWorkingDataType
GDALDataType eWorkingDataType
Working data type.
Definition: gdalwarper.h:348
GRA_Mode
@ GRA_Mode
Definition: gdalwarper.h:57
GDALWarpOptions::padfSrcNoDataReal
double * padfSrcNoDataReal
Definition: gdalwarper.h:163
GDALWarpOptions::eResampleAlg
GDALResampleAlg eResampleAlg
Definition: gdalwarper.h:135
GDALChunkAndWarpMulti
CPLErr GDALChunkAndWarpMulti(GDALWarpOperationH, int, int, int, int)
Definition: gdalwarpoperation.cpp:1248
CPLErr
CPLErr
Error category.
Definition: cpl_error.h:52
GDALWarpOptions::nDstAlphaBand
int nDstAlphaBand
Definition: gdalwarper.h:160
GDALWarpOptions::pfnTransformer
GDALTransformerFunc pfnTransformer
Definition: gdalwarper.h:184
GDALWarpKernel::nSrcXOff
int nSrcXOff
X offset of the source buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:399
GWKAOM_Quant
@ GWKAOM_Quant
Definition: gdalwarper.h:78
GDALWarpKernel::nDstXOff
int nDstXOff
X offset of the destination buffer regarding the top-left corner of the image.
Definition: gdalwarper.h:404
GDALWarpKernel::nDstYSize
int nDstYSize
Height of the destination image.
Definition: gdalwarper.h:373
GDALWarpInitNoDataReal
void GDALWarpInitNoDataReal(GDALWarpOptions *, double dNoDataReal)
Initialize padfSrcNoDataReal and padfDstNoDataReal with specified value.
Definition: gdalwarper.cpp:1426
GDALWarpOptions::pfnDstValidityMaskFunc
GDALMaskFunc pfnDstValidityMaskFunc
Unused.
Definition: gdalwarper.h:210
GDALCreateWarpOperation
GDALWarpOperationH GDALCreateWarpOperation(const GDALWarpOptions *)
Definition: gdalwarpoperation.cpp:810
GRA_NearestNeighbour
@ GRA_NearestNeighbour
Definition: gdalwarper.h:51
GDALWarpKernel::nDstXSize
int nDstXSize
Width of the destination image.
Definition: gdalwarper.h:371
GWKAOM_Imode
@ GWKAOM_Imode
Definition: gdalwarper.h:75
GDALWarpResolveWorkingDataType
void GDALWarpResolveWorkingDataType(GDALWarpOptions *)
If the working data type is unknown, this method will determine a valid working data type to support ...
Definition: gdalwarper.cpp:1483
GDALWarpKernel::panDstValid
GUInt32 * panDstValid
Validify mask of size (nDstXSize * nDstYSize) / 8.
Definition: gdalwarper.h:377
GDALInitializeWarpedVRT
CPLErr GDALInitializeWarpedVRT(GDALDatasetH hDS, GDALWarpOptions *psWO)
Set warp info on virtual warped dataset.
Definition: vrtwarped.cpp:1265
GDALWarpOptions::pSrcValidityMaskFuncArg
void * pSrcValidityMaskFuncArg
Unused.
Definition: gdalwarper.h:197
GDALWarpOptions::dfWarpMemoryLimit
double dfWarpMemoryLimit
Definition: gdalwarper.h:132
GDALWarpKernel::nSrcXSize
int nSrcXSize
Width of the source image.
Definition: gdalwarper.h:353
CPL_DISALLOW_COPY_ASSIGN
#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:930
GDALWarpKernel::pfnProgress
GDALProgressFunc pfnProgress
Progress function.
Definition: gdalwarper.h:414
GDALCreateWarpOptions
GDALWarpOptions * GDALCreateWarpOptions(void)
Create a warp options structure.
Definition: gdalwarper.cpp:1266
GDALDatasetH
void * GDALDatasetH
Opaque type used for the C bindings of the C++ GDALDataset class.
Definition: gdal.h:269
GDALWarpOptions::eWorkingDataType
GDALDataType eWorkingDataType
Definition: gdalwarper.h:139
GRA_Q3
@ GRA_Q3
Definition: gdalwarper.h:63
GDALWarpKernel::papanBandSrcValid
GUInt32 ** papanBandSrcValid
Array of nBands validity mask of size (nSrcXSize * nSrcYSize + WARP_EXTRA_ELTS) / 8.
Definition: gdalwarper.h:364
GDALWarpKernel::dfProgressBase
double dfProgressBase
Base/offset value for progress computation.
Definition: gdalwarper.h:419
GDALDriverH
void * GDALDriverH
Opaque type used for the C bindings of the C++ GDALDriver class.
Definition: gdal.h:275
GUInt32
unsigned int GUInt32
Unsigned int32 type.
Definition: cpl_port.h:195