GDAL
gdal_alg.h
Go to the documentation of this file.
1 /******************************************************************************
2  * $Id: gdal_alg.h 9b04a6ce329ade6272643ab59d0ffaabd313955c 2021-10-11 23:32:03 +0200 Even Rouault $
3  *
4  * Project: GDAL Image Processing Algorithms
5  * Purpose: Prototypes, and definitions for various GDAL based algorithms.
6  * Author: Frank Warmerdam, warmerdam@pobox.com
7  *
8  ******************************************************************************
9  * Copyright (c) 2001, Frank Warmerdam
10  * Copyright (c) 2008-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 GDAL_ALG_H_INCLUDED
32 #define GDAL_ALG_H_INCLUDED
33 
40 #ifndef DOXYGEN_SKIP
41 #include "gdal.h"
42 #include "cpl_minixml.h"
43 #include "ogr_api.h"
44 #endif
45 
47 
48 int CPL_DLL CPL_STDCALL GDALComputeMedianCutPCT( GDALRasterBandH hRed,
49  GDALRasterBandH hGreen,
50  GDALRasterBandH hBlue,
51  int (*pfnIncludePixel)(int,int,void*),
52  int nColors,
53  GDALColorTableH hColorTable,
54  GDALProgressFunc pfnProgress,
55  void * pProgressArg );
56 
57 int CPL_DLL CPL_STDCALL GDALDitherRGB2PCT( GDALRasterBandH hRed,
58  GDALRasterBandH hGreen,
59  GDALRasterBandH hBlue,
60  GDALRasterBandH hTarget,
61  GDALColorTableH hColorTable,
62  GDALProgressFunc pfnProgress,
63  void * pProgressArg );
64 
65 int CPL_DLL CPL_STDCALL GDALChecksumImage( GDALRasterBandH hBand,
66  int nXOff, int nYOff, int nXSize, int nYSize );
67 
68 CPLErr CPL_DLL CPL_STDCALL
70  GDALRasterBandH hProximityBand,
71  char **papszOptions,
72  GDALProgressFunc pfnProgress,
73  void * pProgressArg );
74 
75 CPLErr CPL_DLL CPL_STDCALL
76 GDALFillNodata( GDALRasterBandH hTargetBand,
77  GDALRasterBandH hMaskBand,
78  double dfMaxSearchDist,
79  int bDeprecatedOption,
80  int nSmoothingIterations,
81  char **papszOptions,
82  GDALProgressFunc pfnProgress,
83  void * pProgressArg );
84 
85 CPLErr CPL_DLL CPL_STDCALL
87  GDALRasterBandH hMaskBand,
88  OGRLayerH hOutLayer, int iPixValField,
89  char **papszOptions,
90  GDALProgressFunc pfnProgress,
91  void * pProgressArg );
92 
93 CPLErr CPL_DLL CPL_STDCALL
95  GDALRasterBandH hMaskBand,
96  OGRLayerH hOutLayer, int iPixValField,
97  char **papszOptions,
98  GDALProgressFunc pfnProgress,
99  void * pProgressArg );
100 
101 CPLErr CPL_DLL CPL_STDCALL
102 GDALSieveFilter( GDALRasterBandH hSrcBand, GDALRasterBandH hMaskBand,
103  GDALRasterBandH hDstBand,
104  int nSizeThreshold, int nConnectedness,
105  char **papszOptions,
106  GDALProgressFunc pfnProgress,
107  void * pProgressArg );
108 
109 /*
110  * Warp Related.
111  */
112 
113 typedef int
114 (*GDALTransformerFunc)( void *pTransformerArg,
115  int bDstToSrc, int nPointCount,
116  double *x, double *y, double *z, int *panSuccess );
117 
119 #define GDAL_GTI2_SIGNATURE "GTI2"
120 
121 typedef struct {
122  GByte abySignature[4];
123  const char *pszClassName;
124  GDALTransformerFunc pfnTransform;
125  void (*pfnCleanup)( void * pTransformerArg );
126  CPLXMLNode *(*pfnSerialize)( void * pTransformerArg );
127  void* (*pfnCreateSimilar)( void* pTransformerArg, double dfSrcRatioX, double dfSrcRatioY );
128 } GDALTransformerInfo;
132 void CPL_DLL GDALDestroyTransformer( void *pTransformerArg );
133 int CPL_DLL GDALUseTransformer( void *pTransformerArg,
134  int bDstToSrc, int nPointCount,
135  double *x, double *y, double *z,
136  int *panSuccess );
137 void* GDALCreateSimilarTransformer( void* psTransformerArg, double dfSrcRatioX, double dfSrcRatioY );
140 /* High level transformer for going from image coordinates on one file
141  to image coordinates on another, potentially doing reprojection,
142  utilizing GCPs or using the geotransform. */
143 
144 void CPL_DLL *
145 GDALCreateGenImgProjTransformer( GDALDatasetH hSrcDS, const char *pszSrcWKT,
146  GDALDatasetH hDstDS, const char *pszDstWKT,
147  int bGCPUseOK, double dfGCPErrorThreshold,
148  int nOrder );
149 void CPL_DLL *
151  char **papszOptions );
152 void CPL_DLL *
153 GDALCreateGenImgProjTransformer3( const char *pszSrcWKT,
154  const double *padfSrcGeoTransform,
155  const char *pszDstWKT,
156  const double *padfDstGeoTransform );
157 
158 void CPL_DLL *
160  const double *padfSrcGeoTransform,
161  OGRSpatialReferenceH hDstSRS,
162  const double *padfDstGeoTransform,
163  const char* const *papszOptions );
164 
166  const double * );
167 void CPL_DLL GDALDestroyGenImgProjTransformer( void * );
168 int CPL_DLL GDALGenImgProjTransform(
169  void *pTransformArg, int bDstToSrc, int nPointCount,
170  double *x, double *y, double *z, int *panSuccess );
171 
172 void GDALSetTransformerDstGeoTransform( void *, const double * );
173 void GDALGetTransformerDstGeoTransform( void*, double* );
174 
175 /* Geo to geo reprojection transformer. */
176 void CPL_DLL *
177 GDALCreateReprojectionTransformer( const char *pszSrcWKT,
178  const char *pszDstWKT );
179 void CPL_DLL *
181  OGRSpatialReferenceH hSrcSRS,
182  OGRSpatialReferenceH hDstSRS,
183  const char* const *papszOptions);
184 void CPL_DLL GDALDestroyReprojectionTransformer( void * );
185 int CPL_DLL GDALReprojectionTransform(
186  void *pTransformArg, int bDstToSrc, int nPointCount,
187  double *x, double *y, double *z, int *panSuccess );
188 
189 /* GCP based transformer ... forward is to georef coordinates */
190 void CPL_DLL *
191 GDALCreateGCPTransformer( int nGCPCount, const GDAL_GCP *pasGCPList,
192  int nReqOrder, int bReversed );
193 
194 /* GCP based transformer with refinement of the GCPs ... forward is to georef coordinates */
195 void CPL_DLL *
196 GDALCreateGCPRefineTransformer( int nGCPCount, const GDAL_GCP *pasGCPList,
197  int nReqOrder, int bReversed, double tolerance, int minimumGcps);
198 
199 void CPL_DLL GDALDestroyGCPTransformer( void *pTransformArg );
200 int CPL_DLL GDALGCPTransform(
201  void *pTransformArg, int bDstToSrc, int nPointCount,
202  double *x, double *y, double *z, int *panSuccess );
203 
204 /* Thin Plate Spine transformer ... forward is to georef coordinates */
205 
206 void CPL_DLL *
207 GDALCreateTPSTransformer( int nGCPCount, const GDAL_GCP *pasGCPList,
208  int bReversed );
209 void CPL_DLL GDALDestroyTPSTransformer( void *pTransformArg );
210 int CPL_DLL GDALTPSTransform(
211  void *pTransformArg, int bDstToSrc, int nPointCount,
212  double *x, double *y, double *z, int *panSuccess );
213 
215 #ifdef GDAL_COMPILATION
216 #define RPCInfoV1ToMD RPCInfoToMD
217 #else
218 #define RPCInfoToMD RPCInfoV2ToMD
219 #endif
220 char CPL_DLL ** RPCInfoV1ToMD( GDALRPCInfoV1 *psRPCInfo );
221 char CPL_DLL ** RPCInfoV2ToMD( GDALRPCInfoV2 *psRPCInfo );
224 /* RPC based transformer ... src is pixel/line/elev, dst is long/lat/elev */
225 
227 #ifdef GDAL_COMPILATION
228 #define GDALCreateRPCTransformerV1 GDALCreateRPCTransformer
229 #else
230 #define GDALCreateRPCTransformer GDALCreateRPCTransformerV2
231 #endif
232 
233 void CPL_DLL *
234 GDALCreateRPCTransformerV1( GDALRPCInfoV1 *psRPC, int bReversed,
235  double dfPixErrThreshold,
236  char **papszOptions );
239 void CPL_DLL *
240 GDALCreateRPCTransformerV2( const GDALRPCInfoV2 *psRPC, int bReversed,
241  double dfPixErrThreshold,
242  char **papszOptions );
243 
244 void CPL_DLL GDALDestroyRPCTransformer( void *pTransformArg );
245 int CPL_DLL GDALRPCTransform(
246  void *pTransformArg, int bDstToSrc, int nPointCount,
247  double *x, double *y, double *z, int *panSuccess );
248 
249 /* Geolocation transformer */
250 
251 void CPL_DLL *
253  char **papszGeolocationInfo,
254  int bReversed );
255 void CPL_DLL GDALDestroyGeoLocTransformer( void *pTransformArg );
256 int CPL_DLL GDALGeoLocTransform(
257  void *pTransformArg, int bDstToSrc, int nPointCount,
258  double *x, double *y, double *z, int *panSuccess );
259 
260 /* Approximate transformer */
261 void CPL_DLL *
263  void *pRawTransformerArg, double dfMaxError );
264 void CPL_DLL GDALApproxTransformerOwnsSubtransformer( void *pCBData,
265  int bOwnFlag );
266 void CPL_DLL GDALDestroyApproxTransformer( void *pApproxArg );
267 int CPL_DLL GDALApproxTransform(
268  void *pTransformArg, int bDstToSrc, int nPointCount,
269  double *x, double *y, double *z, int *panSuccess );
270 
271 int CPL_DLL CPL_STDCALL
273  GDALDatasetH hDstDS,
274  int nBandCount, int *panBandList,
275  GDALTransformerFunc pfnTransform,
276  void *pTransformArg,
277  GDALProgressFunc pfnProgress,
278  void *pProgressArg,
279  char **papszWarpOptions );
280 
281 CPLErr CPL_DLL CPL_STDCALL
283  GDALTransformerFunc pfnTransformer,
284  void *pTransformArg,
285  double *padfGeoTransformOut,
286  int *pnPixels, int *pnLines );
287 CPLErr CPL_DLL CPL_STDCALL
289  GDALTransformerFunc pfnTransformer,
290  void *pTransformArg,
291  double *padfGeoTransformOut,
292  int *pnPixels, int *pnLines,
293  double *padfExtents,
294  int nOptions );
295 
297 CPLXMLNode CPL_DLL *
298 GDALSerializeTransformer( GDALTransformerFunc pfnFunc, void *pTransformArg );
299 CPLErr CPL_DLL GDALDeserializeTransformer( CPLXMLNode *psTree,
300  GDALTransformerFunc *ppfnFunc,
301  void **ppTransformArg );
304 CPLErr CPL_DLL
306  GDALRasterBandH hYBand,
307  GDALRasterBandH hZBand,
308  GDALTransformerFunc pfnTransformer,
309  void *pTransformArg,
310  GDALProgressFunc pfnProgress,
311  void *pProgressArg,
312  char **papszOptions );
313 
314 /* -------------------------------------------------------------------- */
315 /* Contour Line Generation */
316 /* -------------------------------------------------------------------- */
317 
319 typedef CPLErr (*GDALContourWriter)( double dfLevel, int nPoints,
320  double *padfX, double *padfY, void * );
321 
323 typedef void *GDALContourGeneratorH;
324 
325 GDALContourGeneratorH CPL_DLL
326 GDAL_CG_Create( int nWidth, int nHeight,
327  int bNoDataSet, double dfNoDataValue,
328  double dfContourInterval, double dfContourBase,
329  GDALContourWriter pfnWriter, void *pCBData );
331  double *padfScanline );
332 void CPL_DLL GDAL_CG_Destroy( GDALContourGeneratorH hCG );
333 
335 typedef struct
336 {
337  void *hLayer;
338 
339  double adfGeoTransform[6];
340 
341  int nElevField;
342  int nElevFieldMin;
343  int nElevFieldMax;
344  int nIDField;
345  int nNextID;
346 } OGRContourWriterInfo;
347 
348 CPLErr CPL_DLL
349 OGRContourWriter( double, int, double *, double *, void *pInfo );
352 CPLErr CPL_DLL
354  double dfContourInterval, double dfContourBase,
355  int nFixedLevelCount, double *padfFixedLevels,
356  int bUseNoData, double dfNoDataValue,
357  void *hLayer, int iIDField, int iElevField,
358  GDALProgressFunc pfnProgress, void *pProgressArg );
359 
360 CPLErr CPL_DLL
361 GDALContourGenerateEx( GDALRasterBandH hBand, void *hLayer,
362  CSLConstList options,
363  GDALProgressFunc pfnProgress, void *pProgressArg );
364 
365 /* -------------------------------------------------------------------- */
366 /* Viewshed Generation */
367 /* -------------------------------------------------------------------- */
368 
370 typedef enum {
371  GVM_Diagonal = 1,
372  GVM_Edge = 2,
373  GVM_Max = 3,
374  GVM_Min = 4
376 
378 typedef enum {
379  GVOT_NORMAL = 1,
380  GVOT_MIN_TARGET_HEIGHT_FROM_DEM = 2,
381  GVOT_MIN_TARGET_HEIGHT_FROM_GROUND = 3
383 
384 GDALDatasetH CPL_DLL
386  const char* pszDriverName,
387  const char* pszTargetRasterName,
388  CSLConstList papszCreationOptions,
389  double dfObserverX, double dfObserverY, double dfObserverHeight,
390  double dfTargetHeight, double dfVisibleVal, double dfInvisibleVal,
391  double dfOutOfRangeVal, double dfNoDataVal, double dfCurvCoeff,
392  GDALViewshedMode eMode, double dfMaxDistance,
393  GDALProgressFunc pfnProgress, void *pProgressArg,
394  GDALViewshedOutputType heightMode, CSLConstList papszExtraOptions);
395 
396 /************************************************************************/
397 /* Rasterizer API - geometries burned into GDAL raster. */
398 /************************************************************************/
399 
400 CPLErr CPL_DLL
402  int nBandCount, int *panBandList,
403  int nGeomCount, OGRGeometryH *pahGeometries,
404  GDALTransformerFunc pfnTransformer,
405  void *pTransformArg,
406  double *padfGeomBurnValue,
407  char **papszOptions,
408  GDALProgressFunc pfnProgress,
409  void * pProgressArg );
410 CPLErr CPL_DLL
412  int nBandCount, int *panBandList,
413  int nLayerCount, OGRLayerH *pahLayers,
414  GDALTransformerFunc pfnTransformer,
415  void *pTransformArg,
416  double *padfLayerBurnValues,
417  char **papszOptions,
418  GDALProgressFunc pfnProgress,
419  void *pProgressArg );
420 
421 CPLErr CPL_DLL
422 GDALRasterizeLayersBuf( void *pData, int nBufXSize, int nBufYSize,
423  GDALDataType eBufType, int nPixelSpace, int nLineSpace,
424  int nLayerCount, OGRLayerH *pahLayers,
425  const char *pszDstProjection,
426  double *padfDstGeoTransform,
427  GDALTransformerFunc pfnTransformer,
428  void *pTransformArg, double dfBurnValue,
429  char **papszOptions, GDALProgressFunc pfnProgress,
430  void *pProgressArg );
431 
432 /************************************************************************/
433 /* Gridding interface. */
434 /************************************************************************/
435 
453 
455 typedef struct
456 {
458  double dfPower;
460  double dfSmoothing;
466  double dfRadius1;
468  double dfRadius2;
473  double dfAngle;
490 
492 typedef struct
493 {
495  double dfPower;
497  double dfRadius;
499  double dfSmoothing;
500 
517 
519 typedef struct
520 {
522  double dfRadius1;
524  double dfRadius2;
529  double dfAngle;
539 
541 typedef struct
542 {
544  double dfRadius1;
546  double dfRadius2;
551  double dfAngle;
555 
557 typedef struct
558 {
560  double dfRadius1;
562  double dfRadius2;
567  double dfAngle;
577 
579 typedef struct
580 {
586  double dfRadius;
590 
591 CPLErr CPL_DLL
593  const double *, const double *, const double *,
594  double, double, double, double,
595  GUInt32, GUInt32, GDALDataType, void *,
596  GDALProgressFunc, void *);
597 
599 typedef struct GDALGridContext GDALGridContext;
600 
601 GDALGridContext CPL_DLL*
602 GDALGridContextCreate( GDALGridAlgorithm eAlgorithm, const void *poOptions,
603  GUInt32 nPoints,
604  const double *padfX, const double *padfY, const double *padfZ,
605  int bCallerWillKeepPointArraysAlive );
606 
607 void CPL_DLL GDALGridContextFree(GDALGridContext* psContext);
608 
610  double dfXMin, double dfXMax, double dfYMin, double dfYMax,
611  GUInt32 nXSize, GUInt32 nYSize, GDALDataType eType, void *pData,
612  GDALProgressFunc pfnProgress, void *pProgressArg );
613 
614 GDAL_GCP CPL_DLL *
616  GDALDatasetH hSecondImage,
617  char **papszOptions,
618  int *pnGCPCount );
619 
620 /************************************************************************/
621 /* Delaunay triangulation interface. */
622 /************************************************************************/
623 
625 typedef struct
626 {
627  int anVertexIdx[3];
628  int anNeighborIdx[3];
629  /* anNeighborIdx[k] is the triangle to the opposite side */
630  /* of the opposite segment of anVertexIdx[k] */
631 } GDALTriFacet;
632 
640 typedef struct
641 {
642  double dfMul1X;
643  double dfMul1Y;
644  double dfMul2X;
645  double dfMul2Y;
646  double dfCstX;
647  double dfCstY;
649 
651 typedef struct
652 {
653  int nFacets;
657 
658 int CPL_DLL GDALHasTriangulation(void);
659 
661  const double* padfX,
662  const double* padfY);
664  GDALTriangulation* psDT,
665  const double* padfX,
666  const double* padfY);
668  const GDALTriangulation* psDT,
669  int nFacetIdx,
670  double dfX,
671  double dfY,
672  double* pdfL1,
673  double* pdfL2,
674  double* pdfL3);
676  double dfX,
677  double dfY,
678  int* panOutputFacetIdx );
680  int nFacetIdx,
681  double dfX,
682  double dfY,
683  int* panOutputFacetIdx );
684 void CPL_DLL GDALTriangulationFree(GDALTriangulation* psDT);
685 
687 // GDAL internal use only
688 void GDALTriangulationTerminate(void);
692 #ifndef CPL_WARN_DEPRECATED_GDALOpenVerticalShiftGrid
693 #define CPL_WARN_DEPRECATED_GDALOpenVerticalShiftGrid CPL_WARN_DEPRECATED
694 #endif
698  const char* pszProj4Geoidgrids,
699  int* pbError )
701  CPL_WARN_DEPRECATED_GDALOpenVerticalShiftGrid("GDALOpenVerticalShiftGrid() will be removed in GDAL 4.0")
703  ;
704 
706 #ifndef CPL_WARN_DEPRECATED_GDALApplyVerticalShiftGrid
707 #define CPL_WARN_DEPRECATED_GDALApplyVerticalShiftGrid CPL_WARN_DEPRECATED
708 #endif
712  GDALDatasetH hGridDataset,
713  int bInverse,
714  double dfSrcUnitToMeter,
715  double dfDstUnitToMeter,
716  const char* const* papszOptions )
718  CPL_WARN_DEPRECATED_GDALApplyVerticalShiftGrid("GDALApplyVerticalShiftGrid() will be removed in GDAL 4.0")
720  ;
721 
722 CPL_C_END
723 
724 #endif /* ndef GDAL_ALG_H_INCLUDED */
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
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
Public (C callable) GDAL entry points.
GDALDataType
Definition: gdal.h:62
void * GDALDatasetH
Opaque type used for the C bindings of the C++ GDALDataset class.
Definition: gdal.h:268
void * GDALRasterBandH
Opaque type used for the C bindings of the C++ GDALRasterBand class.
Definition: gdal.h:271
void * GDALColorTableH
Opaque type used for the C bindings of the C++ GDALColorTable class.
Definition: gdal.h:277
CPLErr GDALContourGenerateEx(GDALRasterBandH hBand, void *hLayer, CSLConstList options, GDALProgressFunc pfnProgress, void *pProgressArg)
Create vector contours from raster DEM.
Definition: contour.cpp:523
void * GDALCreateGenImgProjTransformer3(const char *pszSrcWKT, const double *padfSrcGeoTransform, const char *pszDstWKT, const double *padfDstGeoTransform)
Create image to image transformer.
Definition: gdaltransformer.cpp:2225
struct GDALGridContext GDALGridContext
Grid context opaque type.
Definition: gdal_alg.h:599
CPLErr GDALFillNodata(GDALRasterBandH hTargetBand, GDALRasterBandH hMaskBand, double dfMaxSearchDist, int bDeprecatedOption, int nSmoothingIterations, char **papszOptions, GDALProgressFunc pfnProgress, void *pProgressArg)
Fill selected raster regions by interpolation from the edges.
Definition: rasterfill.cpp:412
int GDALGenImgProjTransform(void *pTransformArg, int bDstToSrc, int nPointCount, double *x, double *y, double *z, int *panSuccess)
Perform general image reprojection transformation.
Definition: gdaltransformer.cpp:2458
GDALContourGeneratorH GDAL_CG_Create(int nWidth, int nHeight, int bNoDataSet, double dfNoDataValue, double dfContourInterval, double dfContourBase, GDALContourWriter pfnWriter, void *pCBData)
Create contour generator.
Definition: contour.cpp:712
void GDALSetGenImgProjTransformerDstGeoTransform(void *, const double *)
Set GenImgProj output geotransform.
Definition: gdaltransformer.cpp:2389
void GDALDestroyGeoLocTransformer(void *pTransformArg)
Destroy GeoLocation transformer.
Definition: gdalgeoloc.cpp:779
void GDALGridContextFree(GDALGridContext *psContext)
Free a context used created by GDALGridContextCreate()
Definition: gdalgrid.cpp:2129
void GDALTriangulationFree(GDALTriangulation *psDT)
Free a triangulation.
Definition: delaunay.c:275
CPLErr GDALGridCreate(GDALGridAlgorithm, const void *, GUInt32, const double *, const double *, const double *, double, double, double, double, GUInt32, GUInt32, GDALDataType, void *, GDALProgressFunc, void *)
Create regular grid from the scattered data.
Definition: gdalgrid.cpp:2422
void * GDALCreateTPSTransformer(int nGCPCount, const GDAL_GCP *pasGCPList, int bReversed)
Create Thin Plate Spline transformer from GCPs.
Definition: gdal_tps.cpp:144
int GDALDitherRGB2PCT(GDALRasterBandH hRed, GDALRasterBandH hGreen, GDALRasterBandH hBlue, GDALRasterBandH hTarget, GDALColorTableH hColorTable, GDALProgressFunc pfnProgress, void *pProgressArg)
24bit to 8bit conversion with dithering.
Definition: gdaldither.cpp:147
int GDALTriangulationComputeBarycentricCoordinates(const GDALTriangulation *psDT, int nFacetIdx, double dfX, double dfY, double *pdfL1, double *pdfL2, double *pdfL3)
Computes the barycentric coordinates of a point.
Definition: delaunay.c:378
CPLErr GDALSieveFilter(GDALRasterBandH hSrcBand, GDALRasterBandH hMaskBand, GDALRasterBandH hDstBand, int nSizeThreshold, int nConnectedness, char **papszOptions, GDALProgressFunc pfnProgress, void *pProgressArg)
Removes small raster polygons.
Definition: gdalsievefilter.cpp:200
GDALDatasetH GDALApplyVerticalShiftGrid(GDALDatasetH hSrcDataset, GDALDatasetH hGridDataset, int bInverse, double dfSrcUnitToMeter, double dfDstUnitToMeter, const char *const *papszOptions)
Apply a vertical shift grid to a source (DEM typically) dataset.
Definition: gdalapplyverticalshiftgrid.cpp:376
CPLErr GDALPolygonize(GDALRasterBandH hSrcBand, GDALRasterBandH hMaskBand, OGRLayerH hOutLayer, int iPixValField, char **papszOptions, GDALProgressFunc pfnProgress, void *pProgressArg)
Create polygon coverage from raster data.
Definition: polygonize.cpp:949
GDALViewshedMode
Viewshed Modes.
Definition: gdal_alg.h:370
GDALTriangulation * GDALTriangulationCreateDelaunay(int nPoints, const double *padfX, const double *padfY)
Computes a Delaunay triangulation of the passed points.
Definition: delaunay.c:118
void GDALDestroyGCPTransformer(void *pTransformArg)
Destroy GCP transformer.
Definition: gdal_crs.cpp:367
void * GDALCreateApproxTransformer(GDALTransformerFunc pfnRawTransformer, void *pRawTransformerArg, double dfMaxError)
Create an approximating transformer.
Definition: gdaltransformer.cpp:3442
CPLErr GDALRasterizeGeometries(GDALDatasetH hDS, int nBandCount, int *panBandList, int nGeomCount, OGRGeometryH *pahGeometries, GDALTransformerFunc pfnTransformer, void *pTransformArg, double *padfGeomBurnValue, char **papszOptions, GDALProgressFunc pfnProgress, void *pProgressArg)
Burn geometries into raster.
Definition: gdalrasterize.cpp:753
GDALGridAlgorithm
Gridding Algorithms.
Definition: gdal_alg.h:437
@ GGA_MetricMinimum
Definition: gdal_alg.h:441
@ GGA_InverseDistanceToAPowerNearestNeighbor
Definition: gdal_alg.h:451
@ GGA_InverseDistanceToAPower
Definition: gdal_alg.h:438
@ GGA_MetricAverageDistancePts
Definition: gdal_alg.h:447
@ GGA_MetricMaximum
Definition: gdal_alg.h:442
@ GGA_NearestNeighbor
Definition: gdal_alg.h:440
@ GGA_MetricAverageDistance
Definition: gdal_alg.h:445
@ GGA_MovingAverage
Definition: gdal_alg.h:439
@ GGA_MetricCount
Definition: gdal_alg.h:444
@ GGA_MetricRange
Definition: gdal_alg.h:443
@ GGA_Linear
Definition: gdal_alg.h:449
void GDALDestroyGenImgProjTransformer(void *)
GenImgProjTransformer deallocator.
Definition: gdaltransformer.cpp:2420
int GDALRPCTransform(void *pTransformArg, int bDstToSrc, int nPointCount, double *x, double *y, double *z, int *panSuccess)
RPC transform.
Definition: gdal_rpc.cpp:2090
int GDALComputeMedianCutPCT(GDALRasterBandH hRed, GDALRasterBandH hGreen, GDALRasterBandH hBlue, int(*pfnIncludePixel)(int, int, void *), int nColors, GDALColorTableH hColorTable, GDALProgressFunc pfnProgress, void *pProgressArg)
Compute optimal PCT for RGB image.
Definition: gdalmediancut.cpp:147
int GDALTriangulationFindFacetBruteForce(const GDALTriangulation *psDT, double dfX, double dfY, int *panOutputFacetIdx)
Returns the index of the triangle that contains the point by iterating over all triangles.
Definition: delaunay.c:426
GDALDatasetH GDALOpenVerticalShiftGrid(const char *pszProj4Geoidgrids, int *pbError)
Load proj.4 geoidgrids as GDAL dataset.
Definition: gdalapplyverticalshiftgrid.cpp:619
void GDAL_CG_Destroy(GDALContourGeneratorH hCG)
Destroy contour generator.
Definition: contour.cpp:746
void GDALApproxTransformerOwnsSubtransformer(void *pCBData, int bOwnFlag)
Set bOwnSubtransformer flag.
Definition: gdaltransformer.cpp:3485
void * GDALCreateGenImgProjTransformer4(OGRSpatialReferenceH hSrcSRS, const double *padfSrcGeoTransform, OGRSpatialReferenceH hDstSRS, const double *padfDstGeoTransform, const char *const *papszOptions)
Create image to image transformer.
Definition: gdaltransformer.cpp:2280
int GDALApproxTransform(void *pTransformArg, int bDstToSrc, int nPointCount, double *x, double *y, double *z, int *panSuccess)
Perform approximate transformation.
Definition: gdaltransformer.cpp:3834
void * GDALCreateGenImgProjTransformer(GDALDatasetH hSrcDS, const char *pszSrcWKT, GDALDatasetH hDstDS, const char *pszDstWKT, int bGCPUseOK, double dfGCPErrorThreshold, int nOrder)
Create image to image transformer.
Definition: gdaltransformer.cpp:1230
CPLErr GDALFPolygonize(GDALRasterBandH hSrcBand, GDALRasterBandH hMaskBand, OGRLayerH hOutLayer, int iPixValField, char **papszOptions, GDALProgressFunc pfnProgress, void *pProgressArg)
Create polygon coverage from raster data.
Definition: polygonize.cpp:1028
CPLErr GDALGridContextProcess(GDALGridContext *psContext, double dfXMin, double dfXMax, double dfYMin, double dfYMax, GUInt32 nXSize, GUInt32 nYSize, GDALDataType eType, void *pData, GDALProgressFunc pfnProgress, void *pProgressArg)
Do the gridding of a window of a raster.
Definition: gdalgrid.cpp:2183
CPLErr GDALSuggestedWarpOutput(GDALDatasetH hSrcDS, GDALTransformerFunc pfnTransformer, void *pTransformArg, double *padfGeoTransformOut, int *pnPixels, int *pnLines)
Suggest output file size.
Definition: gdaltransformer.cpp:233
CPLErr GDALComputeProximity(GDALRasterBandH hSrcBand, GDALRasterBandH hProximityBand, char **papszOptions, GDALProgressFunc pfnProgress, void *pProgressArg)
Compute the proximity of all pixels in the image to a set of pixels in the source image.
Definition: gdalproximity.cpp:112
CPLErr GDALTransformGeolocations(GDALRasterBandH hXBand, GDALRasterBandH hYBand, GDALRasterBandH hZBand, GDALTransformerFunc pfnTransformer, void *pTransformArg, GDALProgressFunc pfnProgress, void *pProgressArg, char **papszOptions)
Transform locations held in bands.
Definition: gdaltransformgeolocs.cpp:68
void GDALGetTransformerDstGeoTransform(void *, double *)
Get ApproxTransformer or GenImgProj output geotransform.
Definition: gdaltransformer.cpp:4499
CPLErr GDALSuggestedWarpOutput2(GDALDatasetH hSrcDS, GDALTransformerFunc pfnTransformer, void *pTransformArg, double *padfGeoTransformOut, int *pnPixels, int *pnLines, double *padfExtents, int nOptions)
Suggest output file size.
Definition: gdaltransformer.cpp:410
void * GDALCreateRPCTransformerV2(const GDALRPCInfoV2 *psRPC, int bReversed, double dfPixErrThreshold, char **papszOptions)
Create an RPC based transformer.
Definition: gdal_rpc.cpp:817
void * GDALCreateGenImgProjTransformer2(GDALDatasetH hSrcDS, GDALDatasetH hDstDS, char **papszOptions)
Create image to image transformer.
Definition: gdaltransformer.cpp:1611
GDALDatasetH GDALViewshedGenerate(GDALRasterBandH hBand, const char *pszDriverName, const char *pszTargetRasterName, CSLConstList papszCreationOptions, double dfObserverX, double dfObserverY, double dfObserverHeight, double dfTargetHeight, double dfVisibleVal, double dfInvisibleVal, double dfOutOfRangeVal, double dfNoDataVal, double dfCurvCoeff, GDALViewshedMode eMode, double dfMaxDistance, GDALProgressFunc pfnProgress, void *pProgressArg, GDALViewshedOutputType heightMode, CSLConstList papszExtraOptions)
Create viewshed from raster DEM.
Definition: viewshed.cpp:202
CPLErr GDAL_CG_FeedLine(GDALContourGeneratorH hCG, double *padfScanline)
Feed a line to the contour generator.
Definition: contour.cpp:734
int GDALTriangulationComputeBarycentricCoefficients(GDALTriangulation *psDT, const double *padfX, const double *padfY)
Computes barycentric coefficients for each triangles of the triangulation.
Definition: delaunay.c:301
int GDALGCPTransform(void *pTransformArg, int bDstToSrc, int nPointCount, double *x, double *y, double *z, int *panSuccess)
Transforms point based on GCP derived polynomial model.
Definition: gdal_crs.cpp:409
GDALViewshedOutputType
Viewshed output types.
Definition: gdal_alg.h:378
void GDALDestroyApproxTransformer(void *pApproxArg)
Cleanup approximate transformer.
Definition: gdaltransformer.cpp:3506
int GDALHasTriangulation(void)
Returns if GDAL is built with Delaunay triangulation support.
Definition: delaunay.c:95
CPLErr(* GDALContourWriter)(double dfLevel, int nPoints, double *padfX, double *padfY, void *)
Contour writer callback type.
Definition: gdal_alg.h:319
int(* GDALTransformerFunc)(void *pTransformerArg, int bDstToSrc, int nPointCount, double *x, double *y, double *z, int *panSuccess)
Definition: gdal_alg.h:114
void * GDALCreateGeoLocTransformer(GDALDatasetH hBaseDS, char **papszGeolocationInfo, int bReversed)
Create GeoLocation transformer.
Definition: gdalgeoloc.cpp:605
CPLErr GDALRasterizeLayersBuf(void *pData, int nBufXSize, int nBufYSize, GDALDataType eBufType, int nPixelSpace, int nLineSpace, int nLayerCount, OGRLayerH *pahLayers, const char *pszDstProjection, double *padfDstGeoTransform, GDALTransformerFunc pfnTransformer, void *pTransformArg, double dfBurnValue, char **papszOptions, GDALProgressFunc pfnProgress, void *pProgressArg)
Burn geometries from the specified list of layer into raster.
Definition: gdalrasterize.cpp:1565
int GDALTPSTransform(void *pTransformArg, int bDstToSrc, int nPointCount, double *x, double *y, double *z, int *panSuccess)
Transforms point based on GCP derived polynomial model.
Definition: gdal_tps.cpp:358
GDALGridContext * GDALGridContextCreate(GDALGridAlgorithm eAlgorithm, const void *poOptions, GUInt32 nPoints, const double *padfX, const double *padfY, const double *padfZ, int bCallerWillKeepPointArraysAlive)
Creates a context to do regular gridding from the scattered data.
Definition: gdalgrid.cpp:1733
int GDALChecksumImage(GDALRasterBandH hBand, int nXOff, int nYOff, int nXSize, int nYSize)
Compute checksum for image region.
Definition: gdalchecksum.cpp:66
void * GDALCreateReprojectionTransformerEx(OGRSpatialReferenceH hSrcSRS, OGRSpatialReferenceH hDstSRS, const char *const *papszOptions)
Create reprojection transformer.
Definition: gdaltransformer.cpp:3007
void GDALSetTransformerDstGeoTransform(void *, const double *)
Set ApproxTransformer or GenImgProj output geotransform.
Definition: gdaltransformer.cpp:4475
void * GDALCreateGCPTransformer(int nGCPCount, const GDAL_GCP *pasGCPList, int nReqOrder, int bReversed)
Create GCP based polynomial transformer.
Definition: gdal_crs.cpp:330
void * GDALContourGeneratorH
Contour generator opaque type.
Definition: gdal_alg.h:323
void * GDALCreateGCPRefineTransformer(int nGCPCount, const GDAL_GCP *pasGCPList, int nReqOrder, int bReversed, double tolerance, int minimumGcps)
Create GCP based polynomial transformer, with a tolerance threshold to discard GCPs that transform ba...
Definition: gdal_crs.cpp:340
CPLErr GDALContourGenerate(GDALRasterBandH hBand, double dfContourInterval, double dfContourBase, int nFixedLevelCount, double *padfFixedLevels, int bUseNoData, double dfNoDataValue, void *hLayer, int iIDField, int iElevField, GDALProgressFunc pfnProgress, void *pProgressArg)
Create vector contours from raster DEM.
Definition: contour.cpp:310
void GDALDestroyRPCTransformer(void *pTransformArg)
Destroy RPC tranformer.
Definition: gdal_rpc.cpp:1105
void * GDALCreateReprojectionTransformer(const char *pszSrcWKT, const char *pszDstWKT)
Create reprojection transformer.
Definition: gdaltransformer.cpp:2936
CPLErr GDALRasterizeLayers(GDALDatasetH hDS, int nBandCount, int *panBandList, int nLayerCount, OGRLayerH *pahLayers, GDALTransformerFunc pfnTransformer, void *pTransformArg, double *padfLayerBurnValues, char **papszOptions, GDALProgressFunc pfnProgress, void *pProgressArg)
Burn geometries from the specified list of layers into raster.
Definition: gdalrasterize.cpp:1175
int GDALSimpleImageWarp(GDALDatasetH hSrcDS, GDALDatasetH hDstDS, int nBandCount, int *panBandList, GDALTransformerFunc pfnTransform, void *pTransformArg, GDALProgressFunc pfnProgress, void *pProgressArg, char **papszWarpOptions)
Perform simple image warp.
Definition: gdalsimplewarp.cpp:230
void GDALDestroyReprojectionTransformer(void *)
Destroy reprojection transformation.
Definition: gdaltransformer.cpp:3106
GDAL_GCP * GDALComputeMatchingPoints(GDALDatasetH hFirstImage, GDALDatasetH hSecondImage, char **papszOptions, int *pnGCPCount)
GDALComputeMatchingPoints.
Definition: gdalmatching.cpp:188
int GDALReprojectionTransform(void *pTransformArg, int bDstToSrc, int nPointCount, double *x, double *y, double *z, int *panSuccess)
Perform reprojection transformation.
Definition: gdaltransformer.cpp:3139
int GDALGeoLocTransform(void *pTransformArg, int bDstToSrc, int nPointCount, double *x, double *y, double *z, int *panSuccess)
Use GeoLocation transformer.
Definition: gdalgeoloc.cpp:810
int GDALTriangulationFindFacetDirected(const GDALTriangulation *psDT, int nFacetIdx, double dfX, double dfY, int *panOutputFacetIdx)
Returns the index of the triangle that contains the point by walking in the triangulation.
Definition: delaunay.c:521
void GDALDestroyTPSTransformer(void *pTransformArg)
Destroy TPS transformer.
Definition: gdal_tps.cpp:313
C API and defines for OGRFeature, OGRGeometry, and OGRDataSource related classes.
void * OGRGeometryH
Opaque type for a geometry.
Definition: ogr_api.h:65
void * OGRSpatialReferenceH
Opaque type for a spatial reference system.
Definition: ogr_api.h:80
void * OGRLayerH
Opaque type for a layer (OGRLayer)
Definition: ogr_api.h:589
Document node structure.
Definition: cpl_minixml.h:70
Data metrics method control options.
Definition: gdal_alg.h:558
double dfRadius2
Definition: gdal_alg.h:562
double dfAngle
Definition: gdal_alg.h:567
double dfNoDataValue
Definition: gdal_alg.h:575
double dfRadius1
Definition: gdal_alg.h:560
GUInt32 nMinPoints
Definition: gdal_alg.h:573
Inverse distance to a power, with nearest neighbour search, control options.
Definition: gdal_alg.h:493
GUInt32 nMinPoints
Definition: gdal_alg.h:513
double dfNoDataValue
Definition: gdal_alg.h:515
GUInt32 nMaxPoints
Definition: gdal_alg.h:507
double dfSmoothing
Definition: gdal_alg.h:499
Inverse distance to a power method control options.
Definition: gdal_alg.h:456
GUInt32 nMinPoints
Definition: gdal_alg.h:486
double dfPower
Definition: gdal_alg.h:458
double dfRadius2
Definition: gdal_alg.h:468
double dfNoDataValue
Definition: gdal_alg.h:488
double dfSmoothing
Definition: gdal_alg.h:460
double dfAngle
Definition: gdal_alg.h:473
double dfRadius1
Definition: gdal_alg.h:466
GUInt32 nMaxPoints
Definition: gdal_alg.h:480
double dfAnisotropyRatio
Definition: gdal_alg.h:462
double dfAnisotropyAngle
Definition: gdal_alg.h:464
Linear method control options.
Definition: gdal_alg.h:580
double dfNoDataValue
Definition: gdal_alg.h:588
double dfRadius
Definition: gdal_alg.h:586
Moving average method control options.
Definition: gdal_alg.h:520
double dfRadius1
Definition: gdal_alg.h:522
double dfNoDataValue
Definition: gdal_alg.h:537
double dfAngle
Definition: gdal_alg.h:529
GUInt32 nMinPoints
Definition: gdal_alg.h:535
double dfRadius2
Definition: gdal_alg.h:524
Nearest neighbor method control options.
Definition: gdal_alg.h:542
double dfNoDataValue
Definition: gdal_alg.h:553
double dfRadius2
Definition: gdal_alg.h:546
double dfAngle
Definition: gdal_alg.h:551
double dfRadius1
Definition: gdal_alg.h:544
Structure to store Rational Polynomial Coefficients / Rigorous Projection Model.
Definition: gdal.h:1248
Triangle barycentric coefficients.
Definition: gdal_alg.h:641
double dfCstY
dfCstY
Definition: gdal_alg.h:647
double dfCstX
dfCstX
Definition: gdal_alg.h:646
double dfMul2Y
dfMul2Y
Definition: gdal_alg.h:645
double dfMul1Y
dfMul1Y
Definition: gdal_alg.h:643
double dfMul2X
dfMul2X
Definition: gdal_alg.h:644
double dfMul1X
dfMul1X
Definition: gdal_alg.h:642
Triangle fact.
Definition: gdal_alg.h:626
Triangulation structure.
Definition: gdal_alg.h:652
GDALTriBarycentricCoefficients * pasFacetCoefficients
arra of nFacets barycentric coefficients
Definition: gdal_alg.h:655
int nFacets
number of facets
Definition: gdal_alg.h:653
GDALTriFacet * pasFacets
array of nFacets facets
Definition: gdal_alg.h:654
Ground Control Point.
Definition: gdal.h:711