- Main Page
- Related Pages
- Classes
- Files

- File List
- File Members

# gdal_alg.h

Go to the documentation of this file.

    00001 /******************************************************************************
    00002  * $Id: gdal_alg.h 27850 2014-10-12 16:58:09Z rouault $
    00003  *
    00004  * Project:  GDAL Image Processing Algorithms
    00005  * Purpose:  Prototypes, and definitions for various GDAL based algorithms.
    00006  * Author:   Frank Warmerdam, warmerdam@pobox.com
    00007  *
    00008  ******************************************************************************
    00009  * Copyright (c) 2001, Frank Warmerdam
    00010  * Copyright (c) 2008-2012, Even Rouault <even dot rouault at mines-paris dot org>
    00011  *
    00012  * Permission is hereby granted, free of charge, to any person obtaining a
    00013  * copy of this software and associated documentation files (the "Software"),
    00014  * to deal in the Software without restriction, including without limitation
    00015  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    00016  * and/or sell copies of the Software, and to permit persons to whom the
    00017  * Software is furnished to do so, subject to the following conditions:
    00018  *
    00019  * The above copyright notice and this permission notice shall be included
    00020  * in all copies or substantial portions of the Software.
    00021  *
    00022  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    00023  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    00024  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    00025  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    00026  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    00027  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    00028  * DEALINGS IN THE SOFTWARE.
    00029  ****************************************************************************/
    00030
    00031 #ifndef GDAL_ALG_H_INCLUDED
    00032 #define GDAL_ALG_H_INCLUDED
    00033
    00040 #ifndef DOXYGEN_SKIP
    00041 #include "gdal.h"
    00042 #include "cpl_minixml.h"
    00043 #include "ogr_api.h"
    00044 #endif
    00045
    00046 CPL_C_START
    00047
    00048 int CPL_DLL CPL_STDCALL GDALComputeMedianCutPCT( GDALRasterBandH hRed,
    00049                              GDALRasterBandH hGreen,
    00050                              GDALRasterBandH hBlue,
    00051                              int (*pfnIncludePixel)(int,int,void*),
    00052                              int nColors,
    00053                              GDALColorTableH hColorTable,
    00054                              GDALProgressFunc pfnProgress,
    00055                              void * pProgressArg );
    00056
    00057 int CPL_DLL CPL_STDCALL GDALDitherRGB2PCT( GDALRasterBandH hRed,
    00058                        GDALRasterBandH hGreen,
    00059                        GDALRasterBandH hBlue,
    00060                        GDALRasterBandH hTarget,
    00061                        GDALColorTableH hColorTable,
    00062                        GDALProgressFunc pfnProgress,
    00063                        void * pProgressArg );
    00064
    00065 int CPL_DLL CPL_STDCALL GDALChecksumImage( GDALRasterBandH hBand,
    00066                                int nXOff, int nYOff, int nXSize, int nYSize );
    00067
    00068 CPLErr CPL_DLL CPL_STDCALL
    00069 GDALComputeProximity( GDALRasterBandH hSrcBand,
    00070                       GDALRasterBandH hProximityBand,
    00071                       char **papszOptions,
    00072                       GDALProgressFunc pfnProgress,
    00073                       void * pProgressArg );
    00074
    00075 CPLErr CPL_DLL CPL_STDCALL
    00076 GDALFillNodata( GDALRasterBandH hTargetBand,
    00077                 GDALRasterBandH hMaskBand,
    00078                 double dfMaxSearchDist,
    00079                 int bDeprecatedOption,
    00080                 int nSmoothingIterations,
    00081                 char **papszOptions,
    00082                 GDALProgressFunc pfnProgress,
    00083                 void * pProgressArg );
    00084
    00085 CPLErr CPL_DLL CPL_STDCALL
    00086 GDALPolygonize( GDALRasterBandH hSrcBand,
    00087                 GDALRasterBandH hMaskBand,
    00088                 OGRLayerH hOutLayer, int iPixValField,
    00089                 char **papszOptions,
    00090                 GDALProgressFunc pfnProgress,
    00091                 void * pProgressArg );
    00092
    00093 CPLErr CPL_DLL CPL_STDCALL
    00094 GDALFPolygonize( GDALRasterBandH hSrcBand,
    00095                 GDALRasterBandH hMaskBand,
    00096                 OGRLayerH hOutLayer, int iPixValField,
    00097                 char **papszOptions,
    00098                 GDALProgressFunc pfnProgress,
    00099                 void * pProgressArg );
    00100
    00101 CPLErr CPL_DLL CPL_STDCALL
    00102 GDALSieveFilter( GDALRasterBandH hSrcBand, GDALRasterBandH hMaskBand,
    00103                  GDALRasterBandH hDstBand,
    00104                  int nSizeThreshold, int nConnectedness,
    00105                  char **papszOptions,
    00106                  GDALProgressFunc pfnProgress,
    00107                  void * pProgressArg );
    00108
    00109 /*
    00110  * Warp Related.
    00111  */
    00112
    00113 typedef int
    00114 (*GDALTransformerFunc)( void *pTransformerArg,
    00115                         int bDstToSrc, int nPointCount,
    00116                         double *x, double *y, double *z, int *panSuccess );
    00117
    00118 #define GDAL_GTI2_SIGNATURE     "GTI2"
    00119
    00120 typedef struct {
    00121     GByte abySignature[4];
    00122     const char *pszClassName;
    00123     GDALTransformerFunc pfnTransform;
    00124     void (*pfnCleanup)( void * pTransformerArg );
    00125     CPLXMLNode *(*pfnSerialize)( void * pTransformerArg );
    00126     void* (*pfnCreateSimilar)( void* pTransformerArg, double dfSrcRatioX, double dfSrcRatioY );
    00127 } GDALTransformerInfo;
    00128
    00129 void CPL_DLL GDALDestroyTransformer( void *pTransformerArg );
    00130 int  CPL_DLL GDALUseTransformer( void *pTranformerArg,
    00131                                  int bDstToSrc, int nPointCount,
    00132                                  double *x, double *y, double *z,
    00133                                  int *panSuccess );
    00134 void* GDALCreateSimilarTransformer( void* psTransformerArg, double dfSrcRatioX, double dfSrcRatioY );
    00135
    00136
    00137 /* High level transformer for going from image coordinates on one file
    00138    to image coordiantes on another, potentially doing reprojection,
    00139    utilizing GCPs or using the geotransform. */
    00140
    00141 void CPL_DLL *
    00142 GDALCreateGenImgProjTransformer( GDALDatasetH hSrcDS, const char *pszSrcWKT,
    00143                                  GDALDatasetH hDstDS, const char *pszDstWKT,
    00144                                  int bGCPUseOK, double dfGCPErrorThreshold,
    00145                                  int nOrder );
    00146 void CPL_DLL *
    00147 GDALCreateGenImgProjTransformer2( GDALDatasetH hSrcDS, GDALDatasetH hDstDS,
    00148                                   char **papszOptions );
    00149 void CPL_DLL *
    00150 GDALCreateGenImgProjTransformer3( const char *pszSrcWKT,
    00151                                   const double *padfSrcGeoTransform,
    00152                                   const char *pszDstWKT,
    00153                                   const double *padfDstGeoTransform );
    00154 void CPL_DLL GDALSetGenImgProjTransformerDstGeoTransform( void *,
    00155                                                           const double * );
    00156 void CPL_DLL GDALDestroyGenImgProjTransformer( void * );
    00157 int CPL_DLL GDALGenImgProjTransform(
    00158     void *pTransformArg, int bDstToSrc, int nPointCount,
    00159     double *x, double *y, double *z, int *panSuccess );
    00160
    00161 void GDALSetTransformerDstGeoTransform( void *, const double * );
    00162
    00163 /* Geo to geo reprojection transformer. */
    00164 void CPL_DLL *
    00165 GDALCreateReprojectionTransformer( const char *pszSrcWKT,
    00166                                    const char *pszDstWKT );
    00167 void CPL_DLL GDALDestroyReprojectionTransformer( void * );
    00168 int CPL_DLL GDALReprojectionTransform(
    00169     void *pTransformArg, int bDstToSrc, int nPointCount,
    00170     double *x, double *y, double *z, int *panSuccess );
    00171
    00172 /* GCP based transformer ... forward is to georef coordinates */
    00173 void CPL_DLL *
    00174 GDALCreateGCPTransformer( int nGCPCount, const GDAL_GCP *pasGCPList,
    00175                           int nReqOrder, int bReversed );
    00176
    00177 /* GCP based transformer with refinement of the GCPs ... forward is to georef coordinates */
    00178 void CPL_DLL *
    00179 GDALCreateGCPRefineTransformer( int nGCPCount, const GDAL_GCP *pasGCPList,
    00180                                 int nReqOrder, int bReversed, double tolerance, int minimumGcps);
    00181
    00182 void CPL_DLL GDALDestroyGCPTransformer( void *pTransformArg );
    00183 int CPL_DLL GDALGCPTransform(
    00184     void *pTransformArg, int bDstToSrc, int nPointCount,
    00185     double *x, double *y, double *z, int *panSuccess );
    00186
    00187 /* Thin Plate Spine transformer ... forward is to georef coordinates */
    00188
    00189 void CPL_DLL *
    00190 GDALCreateTPSTransformer( int nGCPCount, const GDAL_GCP *pasGCPList,
    00191                           int bReversed );
    00192 void CPL_DLL GDALDestroyTPSTransformer( void *pTransformArg );
    00193 int CPL_DLL GDALTPSTransform(
    00194     void *pTransformArg, int bDstToSrc, int nPointCount,
    00195     double *x, double *y, double *z, int *panSuccess );
    00196
    00197 char CPL_DLL ** RPCInfoToMD( GDALRPCInfo *psRPCInfo );
    00198
    00199 /* RPC based transformer ... src is pixel/line/elev, dst is long/lat/elev */
    00200
    00201 void CPL_DLL *
    00202 GDALCreateRPCTransformer( GDALRPCInfo *psRPC, int bReversed,
    00203                           double dfPixErrThreshold,
    00204                           char **papszOptions );
    00205 void CPL_DLL GDALDestroyRPCTransformer( void *pTransformArg );
    00206 int CPL_DLL GDALRPCTransform(
    00207     void *pTransformArg, int bDstToSrc, int nPointCount,
    00208     double *x, double *y, double *z, int *panSuccess );
    00209
    00210 /* Geolocation transformer */
    00211
    00212 void CPL_DLL *
    00213 GDALCreateGeoLocTransformer( GDALDatasetH hBaseDS,
    00214                              char **papszGeolocationInfo,
    00215                              int bReversed );
    00216 void CPL_DLL GDALDestroyGeoLocTransformer( void *pTransformArg );
    00217 int CPL_DLL GDALGeoLocTransform(
    00218     void *pTransformArg, int bDstToSrc, int nPointCount,
    00219     double *x, double *y, double *z, int *panSuccess );
    00220
    00221 /* Approximate transformer */
    00222 void CPL_DLL *
    00223 GDALCreateApproxTransformer( GDALTransformerFunc pfnRawTransformer,
    00224                              void *pRawTransformerArg, double dfMaxError );
    00225 void CPL_DLL GDALApproxTransformerOwnsSubtransformer( void *pCBData,
    00226                                                       int bOwnFlag );
    00227 void CPL_DLL GDALDestroyApproxTransformer( void *pApproxArg );
    00228 int  CPL_DLL GDALApproxTransform(
    00229     void *pTransformArg, int bDstToSrc, int nPointCount,
    00230     double *x, double *y, double *z, int *panSuccess );
    00231
    00232
    00233
    00234
    00235 int CPL_DLL CPL_STDCALL
    00236 GDALSimpleImageWarp( GDALDatasetH hSrcDS,
    00237                      GDALDatasetH hDstDS,
    00238                      int nBandCount, int *panBandList,
    00239                      GDALTransformerFunc pfnTransform,
    00240                      void *pTransformArg,
    00241                      GDALProgressFunc pfnProgress,
    00242                      void *pProgressArg,
    00243                      char **papszWarpOptions );
    00244
    00245 CPLErr CPL_DLL CPL_STDCALL
    00246 GDALSuggestedWarpOutput( GDALDatasetH hSrcDS,
    00247                          GDALTransformerFunc pfnTransformer,
    00248                          void *pTransformArg,
    00249                          double *padfGeoTransformOut,
    00250                          int *pnPixels, int *pnLines );
    00251 CPLErr CPL_DLL CPL_STDCALL
    00252 GDALSuggestedWarpOutput2( GDALDatasetH hSrcDS,
    00253                           GDALTransformerFunc pfnTransformer,
    00254                           void *pTransformArg,
    00255                           double *padfGeoTransformOut,
    00256                           int *pnPixels, int *pnLines,
    00257                           double *padfExtents,
    00258                           int nOptions );
    00259
    00260 CPLXMLNode CPL_DLL *
    00261 GDALSerializeTransformer( GDALTransformerFunc pfnFunc, void *pTransformArg );
    00262 CPLErr CPL_DLL GDALDeserializeTransformer( CPLXMLNode *psTree,
    00263                                            GDALTransformerFunc *ppfnFunc,
    00264                                            void **ppTransformArg );
    00265
    00266 CPLErr CPL_DLL
    00267 GDALTransformGeolocations( GDALRasterBandH hXBand,
    00268                            GDALRasterBandH hYBand,
    00269                            GDALRasterBandH hZBand,
    00270                            GDALTransformerFunc pfnTransformer,
    00271                            void *pTransformArg,
    00272                            GDALProgressFunc pfnProgress,
    00273                            void *pProgressArg,
    00274                            char **papszOptions );
    00275
    00276 /* -------------------------------------------------------------------- */
    00277 /*      Contour Line Generation                                         */
    00278 /* -------------------------------------------------------------------- */
    00279
    00280 typedef CPLErr (*GDALContourWriter)( double dfLevel, int nPoints,
    00281                                      double *padfX, double *padfY, void * );
    00282
    00283 typedef void *GDALContourGeneratorH;
    00284
    00285 GDALContourGeneratorH CPL_DLL
    00286 GDAL_CG_Create( int nWidth, int nHeight,
    00287                 int bNoDataSet, double dfNoDataValue,
    00288                 double dfContourInterval, double dfContourBase,
    00289                 GDALContourWriter pfnWriter, void *pCBData );
    00290 CPLErr CPL_DLL GDAL_CG_FeedLine( GDALContourGeneratorH hCG,
    00291                                  double *padfScanline );
    00292 void CPL_DLL GDAL_CG_Destroy( GDALContourGeneratorH hCG );
    00293
    00294 typedef struct
    00295 {
    00296     void   *hLayer;
    00297
    00298     double adfGeoTransform[6];
    00299
    00300     int    nElevField;
    00301     int    nIDField;
    00302     int    nNextID;
    00303 } OGRContourWriterInfo;
    00304
    00305 CPLErr CPL_DLL
    00306 OGRContourWriter( double, int, double *, double *, void *pInfo );
    00307
    00308 CPLErr CPL_DLL
    00309 GDALContourGenerate( GDALRasterBandH hBand,
    00310                             double dfContourInterval, double dfContourBase,
    00311                             int nFixedLevelCount, double *padfFixedLevels,
    00312                             int bUseNoData, double dfNoDataValue,
    00313                             void *hLayer, int iIDField, int iElevField,
    00314                             GDALProgressFunc pfnProgress, void *pProgressArg );
    00315
    00316 /************************************************************************/
    00317 /*      Rasterizer API - geometries burned into GDAL raster.            */
    00318 /************************************************************************/
    00319
    00320 CPLErr CPL_DLL
    00321 GDALRasterizeGeometries( GDALDatasetH hDS,
    00322                          int nBandCount, int *panBandList,
    00323                          int nGeomCount, OGRGeometryH *pahGeometries,
    00324                          GDALTransformerFunc pfnTransformer,
    00325                          void *pTransformArg,
    00326                          double *padfGeomBurnValue,
    00327                          char **papszOptions,
    00328                          GDALProgressFunc pfnProgress,
    00329                          void * pProgressArg );
    00330 CPLErr CPL_DLL
    00331 GDALRasterizeLayers( GDALDatasetH hDS,
    00332                      int nBandCount, int *panBandList,
    00333                      int nLayerCount, OGRLayerH *pahLayers,
    00334                      GDALTransformerFunc pfnTransformer,
    00335                      void *pTransformArg,
    00336                      double *padfLayerBurnValues,
    00337                      char **papszOptions,
    00338                      GDALProgressFunc pfnProgress,
    00339                      void *pProgressArg );
    00340
    00341 CPLErr CPL_DLL
    00342 GDALRasterizeLayersBuf( void *pData, int nBufXSize, int nBufYSize,
    00343                         GDALDataType eBufType, int nPixelSpace, int nLineSpace,
    00344                         int nLayerCount, OGRLayerH *pahLayers,
    00345                         const char *pszDstProjection,
    00346                         double *padfDstGeoTransform,
    00347                         GDALTransformerFunc pfnTransformer,
    00348                         void *pTransformArg, double dfBurnValue,
    00349                         char **papszOptions, GDALProgressFunc pfnProgress,
    00350                         void *pProgressArg );
    00351
    00352
    00353 /************************************************************************/
    00354 /*  Gridding interface.                                                 */
    00355 /************************************************************************/
    00356
    00358 typedef enum {    GGA_InverseDistanceToAPower = 1,                 GGA_MovingAverage = 2,               GGA_NearestNeighbor = 3,    GGA_MetricMinimum = 4,    GGA_MetricMaximum = 5,       GGA_MetricRange = 6, GGA_MetricCount = 7, GGA_MetricAverageDistance = 8,
    00368                                         GGA_MetricAverageDistancePts = 9
    00369 } GDALGridAlgorithm;
    00370
    00372 typedef struct
    00373 {
    00375     double  dfPower;
    00377     double  dfSmoothing;
    00379     double  dfAnisotropyRatio;
    00381     double  dfAnisotropyAngle;
    00383     double  dfRadius1;
    00385     double  dfRadius2;
    00390     double  dfAngle;
    00397     GUInt32 nMaxPoints;
    00403     GUInt32 nMinPoints;
    00405     double  dfNoDataValue;
    00406 } GDALGridInverseDistanceToAPowerOptions;
    00407
    00409 typedef struct
    00410 {
    00412     double  dfRadius1;
    00414     double  dfRadius2;
    00419     double  dfAngle;
    00425     GUInt32 nMinPoints;
    00427     double  dfNoDataValue;
    00428 } GDALGridMovingAverageOptions;
    00429
    00431 typedef struct
    00432 {
    00434     double  dfRadius1;
    00436     double  dfRadius2;
    00441     double  dfAngle;
    00443     double  dfNoDataValue;
    00444 } GDALGridNearestNeighborOptions;
    00445
    00447 typedef struct
    00448 {
    00450     double  dfRadius1;
    00452     double  dfRadius2;
    00457     double  dfAngle;
    00463     GUInt32 nMinPoints;
    00465     double  dfNoDataValue;
    00466 } GDALGridDataMetricsOptions;
    00467
    00468 CPLErr CPL_DLL
    00469 GDALGridCreate( GDALGridAlgorithm, const void *, GUInt32,
    00470                 const double *, const double *, const double *,
    00471                 double, double, double, double,
    00472                 GUInt32, GUInt32, GDALDataType, void *,
    00473                 GDALProgressFunc, void *);
    00474
    00475 GDAL_GCP CPL_DLL *
    00476 GDALComputeMatchingPoints( GDALDatasetH hFirstImage,
    00477                            GDALDatasetH hSecondImage,
    00478                            char **papszOptions,
    00479                            int *pnGCPCount );
    00480 CPL_C_END
    00481
    00482 #endif /* ndef GDAL_ALG_H_INCLUDED */

Generated for GDAL by 1.7.1.