00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110 #ifndef GDAL_ALG_H_INCLUDED
00111 #define GDAL_ALG_H_INCLUDED
00112
00119 #include "gdal.h"
00120 #include "cpl_minixml.h"
00121 #include "ogr_api.h"
00122
00123 CPL_C_START
00124
00125 int CPL_DLL CPL_STDCALL GDALComputeMedianCutPCT( GDALRasterBandH hRed,
00126 GDALRasterBandH hGreen,
00127 GDALRasterBandH hBlue,
00128 int (*pfnIncludePixel)(int,int,void*),
00129 int nColors,
00130 GDALColorTableH hColorTable,
00131 GDALProgressFunc pfnProgress,
00132 void * pProgressArg );
00133
00134 int CPL_DLL CPL_STDCALL GDALDitherRGB2PCT( GDALRasterBandH hRed,
00135 GDALRasterBandH hGreen,
00136 GDALRasterBandH hBlue,
00137 GDALRasterBandH hTarget,
00138 GDALColorTableH hColorTable,
00139 GDALProgressFunc pfnProgress,
00140 void * pProgressArg );
00141
00142 int CPL_DLL CPL_STDCALL GDALChecksumImage( GDALRasterBandH hBand,
00143 int nXOff, int nYOff, int nXSize, int nYSize );
00144
00145
00146
00147
00148
00149
00150 typedef int
00151 (*GDALTransformerFunc)( void *pTransformerArg,
00152 int bDstToSrc, int nPointCount,
00153 double *x, double *y, double *z, int *panSuccess );
00154
00155 typedef struct {
00156 char szSignature[4];
00157 char *pszClassName;
00158 GDALTransformerFunc pfnTransform;
00159 void (*pfnCleanup)( void * );
00160 CPLXMLNode *(*pfnSerialize)( void * );
00161 } GDALTransformerInfo;
00162
00163 void CPL_DLL GDALDestroyTransformer( void *pTransformerArg );
00164
00165
00166
00167
00168
00169
00170 void CPL_DLL *
00171 GDALCreateGenImgProjTransformer( GDALDatasetH hSrcDS, const char *pszSrcWKT,
00172 GDALDatasetH hDstDS, const char *pszDstWKT,
00173 int bGCPUseOK, double dfGCPErrorThreshold,
00174 int nOrder );
00175 void CPL_DLL GDALSetGenImgProjTransformerDstGeoTransform( void *,
00176 const double * );
00177 void CPL_DLL GDALDestroyGenImgProjTransformer( void * );
00178 int CPL_DLL GDALGenImgProjTransform(
00179 void *pTransformArg, int bDstToSrc, int nPointCount,
00180 double *x, double *y, double *z, int *panSuccess );
00181
00182
00183 void CPL_DLL *
00184 GDALCreateReprojectionTransformer( const char *pszSrcWKT,
00185 const char *pszDstWKT );
00186 void CPL_DLL GDALDestroyReprojectionTransformer( void * );
00187 int CPL_DLL GDALReprojectionTransform(
00188 void *pTransformArg, int bDstToSrc, int nPointCount,
00189 double *x, double *y, double *z, int *panSuccess );
00190
00191
00192 void CPL_DLL *
00193 GDALCreateGCPTransformer( int nGCPCount, const GDAL_GCP *pasGCPList,
00194 int nReqOrder, int bReversed );
00195 void CPL_DLL GDALDestroyGCPTransformer( void *pTransformArg );
00196 int CPL_DLL GDALGCPTransform(
00197 void *pTransformArg, int bDstToSrc, int nPointCount,
00198 double *x, double *y, double *z, int *panSuccess );
00199
00200
00201
00202 void CPL_DLL *
00203 GDALCreateTPSTransformer( int nGCPCount, const GDAL_GCP *pasGCPList,
00204 int bReversed );
00205 void CPL_DLL GDALDestroyTPSTransformer( void *pTransformArg );
00206 int CPL_DLL GDALTPSTransform(
00207 void *pTransformArg, int bDstToSrc, int nPointCount,
00208 double *x, double *y, double *z, int *panSuccess );
00209
00210
00211
00212 void CPL_DLL *
00213 GDALCreateRPCTransformer( GDALRPCInfo *psRPC, int bReversed,
00214 double dfPixErrThreshold );
00215 void CPL_DLL GDALDestroyRPCTransformer( void *pTransformArg );
00216 int CPL_DLL GDALRPCTransform(
00217 void *pTransformArg, int bDstToSrc, int nPointCount,
00218 double *x, double *y, double *z, int *panSuccess );
00219
00220
00221
00222 void CPL_DLL *
00223 GDALCreateGeoLocTransformer( GDALDatasetH hBaseDS,
00224 char **papszGeolocationInfo,
00225 int bReversed );
00226 void CPL_DLL GDALDestroyGeoLocTransformer( void *pTransformArg );
00227 int CPL_DLL GDALGeoLocTransform(
00228 void *pTransformArg, int bDstToSrc, int nPointCount,
00229 double *x, double *y, double *z, int *panSuccess );
00230
00231
00232 void CPL_DLL *
00233 GDALCreateApproxTransformer( GDALTransformerFunc pfnRawTransformer,
00234 void *pRawTransformerArg, double dfMaxError );
00235 void CPL_DLL GDALApproxTransformerOwnsSubtransformer( void *pCBData,
00236 int bOwnFlag );
00237 void CPL_DLL GDALDestroyApproxTransformer( void *pApproxArg );
00238 int CPL_DLL GDALApproxTransform(
00239 void *pTransformArg, int bDstToSrc, int nPointCount,
00240 double *x, double *y, double *z, int *panSuccess );
00241
00242
00243
00244
00245 int CPL_DLL CPL_STDCALL
00246 GDALSimpleImageWarp( GDALDatasetH hSrcDS,
00247 GDALDatasetH hDstDS,
00248 int nBandCount, int *panBandList,
00249 GDALTransformerFunc pfnTransform,
00250 void *pTransformArg,
00251 GDALProgressFunc pfnProgress,
00252 void *pProgressArg,
00253 char **papszWarpOptions );
00254
00255 CPLErr CPL_DLL CPL_STDCALL
00256 GDALSuggestedWarpOutput( GDALDatasetH hSrcDS,
00257 GDALTransformerFunc pfnTransformer,
00258 void *pTransformArg,
00259 double *padfGeoTransformOut,
00260 int *pnPixels, int *pnLines );
00261 CPLErr CPL_DLL CPL_STDCALL
00262 GDALSuggestedWarpOutput2( GDALDatasetH hSrcDS,
00263 GDALTransformerFunc pfnTransformer,
00264 void *pTransformArg,
00265 double *padfGeoTransformOut,
00266 int *pnPixels, int *pnLines,
00267 double *padfExtents,
00268 int nOptions );
00269
00270 CPLXMLNode CPL_DLL *
00271 GDALSerializeTransformer( GDALTransformerFunc pfnFunc, void *pTransformArg );
00272 CPLErr CPL_DLL GDALDeserializeTransformer( CPLXMLNode *psTree,
00273 GDALTransformerFunc *ppfnFunc,
00274 void **ppTransformArg );
00275
00276
00277
00278
00279
00280
00281 typedef CPLErr (*GDALContourWriter)( double dfLevel, int nPoints,
00282 double *padfX, double *padfY, void * );
00283
00284 typedef void *GDALContourGeneratorH;
00285
00286 GDALContourGeneratorH CPL_DLL
00287 GDAL_CG_Create( int nWidth, int nHeight,
00288 int bNoDataSet, double dfNoDataValue,
00289 double dfContourInterval, double dfContourBase,
00290 GDALContourWriter pfnWriter, void *pCBData );
00291 CPLErr CPL_DLL GDAL_CG_FeedLine( GDALContourGeneratorH hCG,
00292 double *padfScanline );
00293 void CPL_DLL GDAL_CG_Destroy( GDALContourGeneratorH hCG );
00294
00295 typedef struct
00296 {
00297 void *hLayer;
00298
00299 double adfGeoTransform[6];
00300
00301 int nElevField;
00302 int nIDField;
00303 int nNextID;
00304 } OGRContourWriterInfo;
00305
00306 CPLErr CPL_DLL
00307 OGRContourWriter( double, int, double *, double *, void *pInfo );
00308
00309 CPLErr CPL_DLL
00310 GDALContourGenerate( GDALRasterBandH hBand,
00311 double dfContourInterval, double dfContourBase,
00312 int nFixedLevelCount, double *padfFixedLevels,
00313 int bUseNoData, double dfNoDataValue,
00314 void *hLayer, int iIDField, int iElevField,
00315 GDALProgressFunc pfnProgress, void *pProgressArg );
00316
00317
00318
00319
00320 typedef void (*llScanlineFunc)( void *pCBData, int nY, int nXStart, int nXEnd);
00321
00322
00323 void GDALdllImageFilledPolygon(int nRasterXSize, int nRasterYSize,
00324 int nPartCount, int *panPartSize,
00325 double *padfX, double *padfY,
00326 llScanlineFunc pfnScanlineFunc, void *pCBData );
00327
00328
00329
00330
00331
00332 CPLErr CPL_DLL
00333 GDALRasterizeGeometries( GDALDatasetH hDS,
00334 int nBandCount, int *panBandList,
00335 int nGeomCount, OGRGeometryH *pahGeometries,
00336 GDALTransformerFunc pfnTransformer,
00337 void *pTransformArg,
00338 double *padfGeomBurnValue,
00339 char **papszOptions,
00340 GDALProgressFunc pfnProgress,
00341 void * pProgressArg );
00342
00343 CPL_C_END
00344
00345 #endif