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
39
40#ifndef DOXYGEN_SKIP
41#include "gdal.h"
42#include "cpl_minixml.h"
43#include "ogr_api.h"
44#endif
45
47
48int 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
57int 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
65int CPL_DLL CPL_STDCALL GDALChecksumImage( GDALRasterBandH hBand,
66 int nXOff, int nYOff, int nXSize, int nYSize );
67
68CPLErr CPL_DLL CPL_STDCALL
70 GDALRasterBandH hProximityBand,
71 char **papszOptions,
72 GDALProgressFunc pfnProgress,
73 void * pProgressArg );
74
75CPLErr CPL_DLL CPL_STDCALL
77 GDALRasterBandH hMaskBand,
78 double dfMaxSearchDist,
79 int bDeprecatedOption,
80 int nSmoothingIterations,
81 char **papszOptions,
82 GDALProgressFunc pfnProgress,
83 void * pProgressArg );
84
85CPLErr CPL_DLL CPL_STDCALL
87 GDALRasterBandH hMaskBand,
88 OGRLayerH hOutLayer, int iPixValField,
89 char **papszOptions,
90 GDALProgressFunc pfnProgress,
91 void * pProgressArg );
92
93CPLErr CPL_DLL CPL_STDCALL
95 GDALRasterBandH hMaskBand,
96 OGRLayerH hOutLayer, int iPixValField,
97 char **papszOptions,
98 GDALProgressFunc pfnProgress,
99 void * pProgressArg );
100
101CPLErr CPL_DLL CPL_STDCALL
103 GDALRasterBandH hDstBand,
104 int nSizeThreshold, int nConnectedness,
105 char **papszOptions,
106 GDALProgressFunc pfnProgress,
107 void * pProgressArg );
108
109/*
110 * Warp Related.
111 */
112
113typedef 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
121typedef 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;
130
132void CPL_DLL GDALDestroyTransformer( void *pTransformerArg );
133int CPL_DLL GDALUseTransformer( void *pTransformerArg,
134 int bDstToSrc, int nPointCount,
135 double *x, double *y, double *z,
136 int *panSuccess );
137void* GDALCreateSimilarTransformer( void* psTransformerArg, double dfSrcRatioX, double dfSrcRatioY );
139
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
144void CPL_DLL *
145GDALCreateGenImgProjTransformer( GDALDatasetH hSrcDS, const char *pszSrcWKT,
146 GDALDatasetH hDstDS, const char *pszDstWKT,
147 int bGCPUseOK, double dfGCPErrorThreshold,
148 int nOrder );
149void CPL_DLL *
151 char **papszOptions );
152void CPL_DLL *
153GDALCreateGenImgProjTransformer3( const char *pszSrcWKT,
154 const double *padfSrcGeoTransform,
155 const char *pszDstWKT,
156 const double *padfDstGeoTransform );
157
158void CPL_DLL *
160 const double *padfSrcGeoTransform,
161 OGRSpatialReferenceH hDstSRS,
162 const double *padfDstGeoTransform,
163 const char* const *papszOptions );
164
166 const double * );
167void CPL_DLL GDALDestroyGenImgProjTransformer( void * );
168int CPL_DLL GDALGenImgProjTransform(
169 void *pTransformArg, int bDstToSrc, int nPointCount,
170 double *x, double *y, double *z, int *panSuccess );
171
172void GDALSetTransformerDstGeoTransform( void *, const double * );
173void GDALGetTransformerDstGeoTransform( void*, double* );
174
175/* Geo to geo reprojection transformer. */
176void CPL_DLL *
177GDALCreateReprojectionTransformer( const char *pszSrcWKT,
178 const char *pszDstWKT );
179void CPL_DLL *
181 OGRSpatialReferenceH hSrcSRS,
182 OGRSpatialReferenceH hDstSRS,
183 const char* const *papszOptions);
184void CPL_DLL GDALDestroyReprojectionTransformer( void * );
185int 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 */
190void CPL_DLL *
191GDALCreateGCPTransformer( 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 */
195void CPL_DLL *
196GDALCreateGCPRefineTransformer( int nGCPCount, const GDAL_GCP *pasGCPList,
197 int nReqOrder, int bReversed, double tolerance, int minimumGcps);
198
199void CPL_DLL GDALDestroyGCPTransformer( void *pTransformArg );
200int 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
206void CPL_DLL *
207GDALCreateTPSTransformer( int nGCPCount, const GDAL_GCP *pasGCPList,
208 int bReversed );
209void CPL_DLL GDALDestroyTPSTransformer( void *pTransformArg );
210int 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
220char CPL_DLL ** RPCInfoV1ToMD( GDALRPCInfoV1 *psRPCInfo );
221char CPL_DLL ** RPCInfoV2ToMD( GDALRPCInfoV2 *psRPCInfo );
223
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
233void CPL_DLL *
234GDALCreateRPCTransformerV1( GDALRPCInfoV1 *psRPC, int bReversed,
235 double dfPixErrThreshold,
236 char **papszOptions );
238
239void CPL_DLL *
240GDALCreateRPCTransformerV2( const GDALRPCInfoV2 *psRPC, int bReversed,
241 double dfPixErrThreshold,
242 char **papszOptions );
243
244void CPL_DLL GDALDestroyRPCTransformer( void *pTransformArg );
245int CPL_DLL GDALRPCTransform(
246 void *pTransformArg, int bDstToSrc, int nPointCount,
247 double *x, double *y, double *z, int *panSuccess );
248
249/* Geolocation transformer */
250
251void CPL_DLL *
253 char **papszGeolocationInfo,
254 int bReversed );
255void CPL_DLL GDALDestroyGeoLocTransformer( void *pTransformArg );
256int CPL_DLL GDALGeoLocTransform(
257 void *pTransformArg, int bDstToSrc, int nPointCount,
258 double *x, double *y, double *z, int *panSuccess );
259
260/* Approximate transformer */
261void CPL_DLL *
263 void *pRawTransformerArg, double dfMaxError );
264void CPL_DLL GDALApproxTransformerOwnsSubtransformer( void *pCBData,
265 int bOwnFlag );
266void CPL_DLL GDALDestroyApproxTransformer( void *pApproxArg );
267int CPL_DLL GDALApproxTransform(
268 void *pTransformArg, int bDstToSrc, int nPointCount,
269 double *x, double *y, double *z, int *panSuccess );
270
271int 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
281CPLErr CPL_DLL CPL_STDCALL
283 GDALTransformerFunc pfnTransformer,
284 void *pTransformArg,
285 double *padfGeoTransformOut,
286 int *pnPixels, int *pnLines );
287CPLErr 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
297CPLXMLNode CPL_DLL *
298GDALSerializeTransformer( GDALTransformerFunc pfnFunc, void *pTransformArg );
299CPLErr CPL_DLL GDALDeserializeTransformer( CPLXMLNode *psTree,
300 GDALTransformerFunc *ppfnFunc,
301 void **ppTransformArg );
303
304CPLErr 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
319typedef CPLErr (*GDALContourWriter)( double dfLevel, int nPoints,
320 double *padfX, double *padfY, void * );
321
324
326GDAL_CG_Create( int nWidth, int nHeight,
327 int bNoDataSet, double dfNoDataValue,
328 double dfContourInterval, double dfContourBase,
329 GDALContourWriter pfnWriter, void *pCBData );
331 double *padfScanline );
332void CPL_DLL GDAL_CG_Destroy( GDALContourGeneratorH hCG );
333
335typedef 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
348CPLErr CPL_DLL
349OGRContourWriter( double, int, double *, double *, void *pInfo );
351
352CPLErr 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
360CPLErr CPL_DLL
361GDALContourGenerateEx( GDALRasterBandH hBand, void *hLayer,
362 CSLConstList options,
363 GDALProgressFunc pfnProgress, void *pProgressArg );
364
365/* -------------------------------------------------------------------- */
366/* Viewshed Generation */
367/* -------------------------------------------------------------------- */
368
370typedef enum {
371 GVM_Diagonal = 1,
372 GVM_Edge = 2,
373 GVM_Max = 3,
374 GVM_Min = 4
376
378typedef enum {
379 GVOT_NORMAL = 1,
380 GVOT_MIN_TARGET_HEIGHT_FROM_DEM = 2,
381 GVOT_MIN_TARGET_HEIGHT_FROM_GROUND = 3
383
384GDALDatasetH 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
400CPLErr 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 );
410CPLErr 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
421CPLErr CPL_DLL
422GDALRasterizeLayersBuf( 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
490
517
539
541typedef struct
542{
544 double dfRadius1;
546 double dfRadius2;
551 double dfAngle;
555
577
579typedef struct
580{
586 double dfRadius;
590
591CPLErr CPL_DLL
593 const double *, const double *, const double *,
594 double, double, double, double,
595 GUInt32, GUInt32, GDALDataType, void *,
596 GDALProgressFunc, void *);
597
599typedef struct GDALGridContext GDALGridContext;
600
601GDALGridContext CPL_DLL*
602GDALGridContextCreate( GDALGridAlgorithm eAlgorithm, const void *poOptions,
603 GUInt32 nPoints,
604 const double *padfX, const double *padfY, const double *padfZ,
605 int bCallerWillKeepPointArraysAlive );
606
607void CPL_DLL GDALGridContextFree(GDALGridContext* psContext);
608
609CPLErr CPL_DLL GDALGridContextProcess(GDALGridContext* psContext,
610 double dfXMin, double dfXMax, double dfYMin, double dfYMax,
611 GUInt32 nXSize, GUInt32 nYSize, GDALDataType eType, void *pData,
612 GDALProgressFunc pfnProgress, void *pProgressArg );
613
614GDAL_GCP CPL_DLL *
616 GDALDatasetH hSecondImage,
617 char **papszOptions,
618 int *pnGCPCount );
619
620/************************************************************************/
621/* Delaunay triangulation interface. */
622/************************************************************************/
623
625typedef struct
626{
627 int anVertexIdx[3];
629 /* anNeighborIdx[k] is the triangle to the opposite side */
630 /* of the opposite segment of anVertexIdx[k] */
632
640typedef struct
641{
642 double dfMul1X;
643 double dfMul1Y;
644 double dfMul2X;
645 double dfMul2Y;
646 double dfCstX;
647 double dfCstY;
649
657
658int 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 );
684void CPL_DLL GDALTriangulationFree(GDALTriangulation* psDT);
685
687// GDAL internal use only
688void GDALTriangulationTerminate(void);
690
692#ifndef CPL_WARN_DEPRECATED_GDALOpenVerticalShiftGrid
693#define CPL_WARN_DEPRECATED_GDALOpenVerticalShiftGrid CPL_WARN_DEPRECATED
694#endif
696
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
710
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
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 * GDALCreateGeoLocTransformer(GDALDatasetH hBaseDS, char **papszGeolocationInfo, int bReversed)
Create GeoLocation transformer.
Definition gdalgeoloc.cpp:605
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:2538
GDALTriangulation * GDALTriangulationCreateDelaunay(int nPoints, const double *padfX, const double *padfY)
Computes a Delaunay triangulation of the passed points.
Definition delaunay.c:131
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 * 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
void * GDALCreateReprojectionTransformer(const char *pszSrcWKT, const char *pszDstWKT)
Create reprojection transformer.
Definition gdaltransformer.cpp:3017
void * GDALCreateReprojectionTransformerEx(OGRSpatialReferenceH hSrcSRS, OGRSpatialReferenceH hDstSRS, const char *const *papszOptions)
Create reprojection transformer.
Definition gdaltransformer.cpp:3088
void GDALSetGenImgProjTransformerDstGeoTransform(void *, const double *)
Set GenImgProj output geotransform.
Definition gdaltransformer.cpp:2469
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:304
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:1300
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
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:407
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
void GDALDestroyGCPTransformer(void *pTransformArg)
Destroy GCP transformer.
Definition gdal_crs.cpp:367
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:764
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:2500
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:455
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:3566
int GDALApproxTransform(void *pTransformArg, int bDstToSrc, int nPointCount, double *x, double *y, double *z, int *panSuccess)
Perform approximate transformation.
Definition gdaltransformer.cpp:3915
void * GDALCreateGenImgProjTransformer4(OGRSpatialReferenceH hSrcSRS, const double *padfSrcGeoTransform, OGRSpatialReferenceH hDstSRS, const double *padfDstGeoTransform, const char *const *papszOptions)
Create image to image transformer.
Definition gdaltransformer.cpp:2360
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
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
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:4580
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
GDAL_GCP * GDALComputeMatchingPoints(GDALDatasetH hFirstImage, GDALDatasetH hSecondImage, char **papszOptions, int *pnGCPCount)
GDALComputeMatchingPoints.
Definition gdalmatching.cpp:188
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:330
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
void * GDALCreateRPCTransformerV2(const GDALRPCInfoV2 *psRPC, int bReversed, double dfPixErrThreshold, char **papszOptions)
Create an RPC based transformer.
Definition gdal_rpc.cpp:817
GDALViewshedOutputType
Viewshed output types.
Definition gdal_alg.h:378
int(* GDALTransformerFunc)(void *pTransformerArg, int bDstToSrc, int nPointCount, double *x, double *y, double *z, int *panSuccess)
Definition gdal_alg.h:114
void GDALDestroyApproxTransformer(void *pApproxArg)
Cleanup approximate transformer.
Definition gdaltransformer.cpp:3587
void * GDALCreateGenImgProjTransformer3(const char *pszSrcWKT, const double *padfSrcGeoTransform, const char *pszDstWKT, const double *padfDstGeoTransform)
Create image to image transformer.
Definition gdaltransformer.cpp:2305
int GDALHasTriangulation(void)
Returns if GDAL is built with Delaunay triangulation support.
Definition delaunay.c:100
CPLErr(* GDALContourWriter)(double dfLevel, int nPoints, double *padfX, double *padfY, void *)
Contour writer callback type.
Definition gdal_alg.h:319
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:1576
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
int GDALChecksumImage(GDALRasterBandH hBand, int nXOff, int nYOff, int nXSize, int nYSize)
Compute checksum for image region.
Definition gdalchecksum.cpp:66
void GDALSetTransformerDstGeoTransform(void *, const double *)
Set ApproxTransformer or GenImgProj output geotransform.
Definition gdaltransformer.cpp:4556
void * GDALContourGeneratorH
Contour generator opaque type.
Definition gdal_alg.h:323
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
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:1186
void * GDALCreateGenImgProjTransformer2(GDALDatasetH hSrcDS, GDALDatasetH hDstDS, char **papszOptions)
Create image to image transformer.
Definition gdaltransformer.cpp:1683
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:3187
void * GDALCreateGCPTransformer(int nGCPCount, const GDAL_GCP *pasGCPList, int nReqOrder, int bReversed)
Create GCP based polynomial transformer.
Definition gdal_crs.cpp:330
int GDALReprojectionTransform(void *pTransformArg, int bDstToSrc, int nPointCount, double *x, double *y, double *z, int *panSuccess)
Perform reprojection transformation.
Definition gdaltransformer.cpp:3220
void * GDALCreateApproxTransformer(GDALTransformerFunc pfnRawTransformer, void *pRawTransformerArg, double dfMaxError)
Create an approximating transformer.
Definition gdaltransformer.cpp:3523
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:550
void * GDALCreateTPSTransformer(int nGCPCount, const GDAL_GCP *pasGCPList, int bReversed)
Create Thin Plate Spline transformer from GCPs.
Definition gdal_tps.cpp:144
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
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
int anVertexIdx[3]
index to the padfX/padfY arrays
Definition gdal_alg.h:627
int anNeighborIdx[3]
index to GDALDelaunayTriangulation.pasFacets, or -1
Definition gdal_alg.h:628
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