GDAL
|
00001 /****************************************************************************** 00002 * $Id: gdal.h 14816 2008-07-05 08:54:56Z rouault $ 00003 * 00004 * Project: GDAL Core 00005 * Purpose: GDAL Core C/Public declarations. 00006 * Author: Frank Warmerdam, warmerdam@pobox.com 00007 * 00008 ****************************************************************************** 00009 * Copyright (c) 1998, 2002 Frank Warmerdam 00010 * 00011 * Permission is hereby granted, free of charge, to any person obtaining a 00012 * copy of this software and associated documentation files (the "Software"), 00013 * to deal in the Software without restriction, including without limitation 00014 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 00015 * and/or sell copies of the Software, and to permit persons to whom the 00016 * Software is furnished to do so, subject to the following conditions: 00017 * 00018 * The above copyright notice and this permission notice shall be included 00019 * in all copies or substantial portions of the Software. 00020 * 00021 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 00022 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00023 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 00024 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00025 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 00026 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 00027 * DEALINGS IN THE SOFTWARE. 00028 ****************************************************************************/ 00029 00030 #ifndef GDAL_H_INCLUDED 00031 #define GDAL_H_INCLUDED 00032 00039 #include "gdal_version.h" 00040 #include "cpl_port.h" 00041 #include "cpl_error.h" 00042 00043 /* -------------------------------------------------------------------- */ 00044 /* Significant constants. */ 00045 /* -------------------------------------------------------------------- */ 00046 00047 CPL_C_START 00048 00050 typedef enum { 00051 GDT_Unknown = 0, GDT_Byte = 1, GDT_UInt16 = 2, GDT_Int16 = 3, GDT_UInt32 = 4, GDT_Int32 = 5, GDT_Float32 = 6, GDT_Float64 = 7, GDT_CInt16 = 8, GDT_CInt32 = 9, GDT_CFloat32 = 10, GDT_CFloat64 = 11, 00063 GDT_TypeCount = 12 /* maximum type # + 1 */ 00064 } GDALDataType; 00065 00066 int CPL_DLL CPL_STDCALL GDALGetDataTypeSize( GDALDataType ); 00067 int CPL_DLL CPL_STDCALL GDALDataTypeIsComplex( GDALDataType ); 00068 const char CPL_DLL * CPL_STDCALL GDALGetDataTypeName( GDALDataType ); 00069 GDALDataType CPL_DLL CPL_STDCALL GDALGetDataTypeByName( const char * ); 00070 GDALDataType CPL_DLL CPL_STDCALL GDALDataTypeUnion( GDALDataType, GDALDataType ); 00071 00073 typedef enum { GA_ReadOnly = 0, GA_Update = 1 00076 } GDALAccess; 00077 00079 typedef enum { GF_Read = 0, GF_Write = 1 00082 } GDALRWFlag; 00083 00085 typedef enum 00086 { 00087 GCI_Undefined=0, GCI_GrayIndex=1, GCI_PaletteIndex=2, GCI_RedBand=3, GCI_GreenBand=4, GCI_BlueBand=5, GCI_AlphaBand=6, GCI_HueBand=7, GCI_SaturationBand=8, GCI_LightnessBand=9, GCI_CyanBand=10, GCI_MagentaBand=11, GCI_YellowBand=12, GCI_BlackBand=13, GCI_YCbCr_YBand=14, GCI_YCbCr_CbBand=15, GCI_YCbCr_CrBand=16, GCI_Max=16 00105 } GDALColorInterp; 00106 00108 const char CPL_DLL *GDALGetColorInterpretationName( GDALColorInterp ); 00109 00111 typedef enum 00112 { GPI_Gray=0, GPI_RGB=1, GPI_CMYK=2, GPI_HLS=3 00117 } GDALPaletteInterp; 00118 00120 const char CPL_DLL *GDALGetPaletteInterpretationName( GDALPaletteInterp ); 00121 00122 /* "well known" metadata items. */ 00123 00124 #define GDALMD_AREA_OR_POINT "AREA_OR_POINT" 00125 # define GDALMD_AOP_AREA "Area" 00126 # define GDALMD_AOP_POINT "Point" 00127 00128 /* -------------------------------------------------------------------- */ 00129 /* GDAL Specific error codes. */ 00130 /* */ 00131 /* error codes 100 to 299 reserved for GDAL. */ 00132 /* -------------------------------------------------------------------- */ 00133 #define CPLE_WrongFormat 200 00134 00135 /* -------------------------------------------------------------------- */ 00136 /* Define handle types related to various internal classes. */ 00137 /* -------------------------------------------------------------------- */ 00138 typedef void *GDALMajorObjectH; 00139 typedef void *GDALDatasetH; 00140 typedef void *GDALRasterBandH; 00141 typedef void *GDALDriverH; 00142 typedef void *GDALProjDefH; 00143 typedef void *GDALColorTableH; 00144 typedef void *GDALRasterAttributeTableH; 00145 00146 /* -------------------------------------------------------------------- */ 00147 /* Callback "progress" function. */ 00148 /* -------------------------------------------------------------------- */ 00149 00150 typedef int (CPL_STDCALL *GDALProgressFunc)(double,const char *, void *); 00151 int CPL_DLL CPL_STDCALL GDALDummyProgress( double, const char *, void *); 00152 int CPL_DLL CPL_STDCALL GDALTermProgress( double, const char *, void *); 00153 int CPL_DLL CPL_STDCALL GDALScaledProgress( double, const char *, void *); 00154 void CPL_DLL * CPL_STDCALL GDALCreateScaledProgress( double, double, 00155 GDALProgressFunc, void * ); 00156 void CPL_DLL CPL_STDCALL GDALDestroyScaledProgress( void * ); 00157 00158 /* ==================================================================== */ 00159 /* Registration/driver related. */ 00160 /* ==================================================================== */ 00161 00162 typedef struct { 00163 char *pszOptionName; 00164 char *pszValueType; /* "boolean", "int", "float", "string", 00165 "string-select" */ 00166 char *pszDescription; 00167 char **papszOptions; 00168 } GDALOptionDefinition; 00169 00170 #define GDAL_DMD_LONGNAME "DMD_LONGNAME" 00171 #define GDAL_DMD_HELPTOPIC "DMD_HELPTOPIC" 00172 #define GDAL_DMD_MIMETYPE "DMD_MIMETYPE" 00173 #define GDAL_DMD_EXTENSION "DMD_EXTENSION" 00174 #define GDAL_DMD_CREATIONOPTIONLIST "DMD_CREATIONOPTIONLIST" 00175 #define GDAL_DMD_CREATIONDATATYPES "DMD_CREATIONDATATYPES" 00176 00177 #define GDAL_DCAP_CREATE "DCAP_CREATE" 00178 #define GDAL_DCAP_CREATECOPY "DCAP_CREATECOPY" 00179 #define GDAL_DCAP_VIRTUALIO "DCAP_VIRTUALIO" 00180 00181 void CPL_DLL CPL_STDCALL GDALAllRegister( void ); 00182 00183 GDALDatasetH CPL_DLL CPL_STDCALL GDALCreate( GDALDriverH hDriver, 00184 const char *, int, int, int, GDALDataType, 00185 char ** ); 00186 GDALDatasetH CPL_DLL CPL_STDCALL 00187 GDALCreateCopy( GDALDriverH, const char *, GDALDatasetH, 00188 int, char **, GDALProgressFunc, void * ); 00189 00190 GDALDriverH CPL_DLL CPL_STDCALL GDALIdentifyDriver( const char * pszFilename, 00191 char ** papszFileList ); 00192 GDALDatasetH CPL_DLL CPL_STDCALL 00193 GDALOpen( const char *pszFilename, GDALAccess eAccess ); 00194 GDALDatasetH CPL_DLL CPL_STDCALL GDALOpenShared( const char *, GDALAccess ); 00195 int CPL_DLL CPL_STDCALL GDALDumpOpenDatasets( FILE * ); 00196 00197 GDALDriverH CPL_DLL CPL_STDCALL GDALGetDriverByName( const char * ); 00198 int CPL_DLL CPL_STDCALL GDALGetDriverCount( void ); 00199 GDALDriverH CPL_DLL CPL_STDCALL GDALGetDriver( int ); 00200 void CPL_DLL CPL_STDCALL GDALDestroyDriver( GDALDriverH ); 00201 int CPL_DLL CPL_STDCALL GDALRegisterDriver( GDALDriverH ); 00202 void CPL_DLL CPL_STDCALL GDALDeregisterDriver( GDALDriverH ); 00203 void CPL_DLL CPL_STDCALL GDALDestroyDriverManager( void ); 00204 CPLErr CPL_DLL CPL_STDCALL GDALDeleteDataset( GDALDriverH, const char * ); 00205 CPLErr CPL_DLL CPL_STDCALL GDALRenameDataset( GDALDriverH, 00206 const char * pszNewName, 00207 const char * pszOldName ); 00208 CPLErr CPL_DLL CPL_STDCALL GDALCopyDatasetFiles( GDALDriverH, 00209 const char * pszNewName, 00210 const char * pszOldName); 00211 int CPL_DLL CPL_STDCALL GDALValidateCreationOptions( GDALDriverH, 00212 char** papszCreationOptions); 00213 00214 /* The following are deprecated */ 00215 const char CPL_DLL * CPL_STDCALL GDALGetDriverShortName( GDALDriverH ); 00216 const char CPL_DLL * CPL_STDCALL GDALGetDriverLongName( GDALDriverH ); 00217 const char CPL_DLL * CPL_STDCALL GDALGetDriverHelpTopic( GDALDriverH ); 00218 const char CPL_DLL * CPL_STDCALL GDALGetDriverCreationOptionList( GDALDriverH ); 00219 00220 /* ==================================================================== */ 00221 /* GDAL_GCP */ 00222 /* ==================================================================== */ 00223 00225 typedef struct 00226 { 00228 char *pszId; 00229 00231 char *pszInfo; 00232 00234 double dfGCPPixel; 00236 double dfGCPLine; 00237 00239 double dfGCPX; 00240 00242 double dfGCPY; 00243 00245 double dfGCPZ; 00246 } GDAL_GCP; 00247 00248 void CPL_DLL CPL_STDCALL GDALInitGCPs( int, GDAL_GCP * ); 00249 void CPL_DLL CPL_STDCALL GDALDeinitGCPs( int, GDAL_GCP * ); 00250 GDAL_GCP CPL_DLL * CPL_STDCALL GDALDuplicateGCPs( int, const GDAL_GCP * ); 00251 00252 int CPL_DLL CPL_STDCALL 00253 GDALGCPsToGeoTransform( int nGCPCount, const GDAL_GCP *pasGCPs, 00254 double *padfGeoTransform, int bApproxOK ); 00255 int CPL_DLL CPL_STDCALL 00256 GDALInvGeoTransform( double *padfGeoTransformIn, 00257 double *padfInvGeoTransformOut ); 00258 void CPL_DLL CPL_STDCALL GDALApplyGeoTransform( double *, double, double, 00259 double *, double * ); 00260 00261 /* ==================================================================== */ 00262 /* major objects (dataset, and, driver, drivermanager). */ 00263 /* ==================================================================== */ 00264 00265 char CPL_DLL ** CPL_STDCALL GDALGetMetadata( GDALMajorObjectH, const char * ); 00266 CPLErr CPL_DLL CPL_STDCALL GDALSetMetadata( GDALMajorObjectH, char **, 00267 const char * ); 00268 const char CPL_DLL * CPL_STDCALL 00269 GDALGetMetadataItem( GDALMajorObjectH, const char *, const char * ); 00270 CPLErr CPL_DLL CPL_STDCALL 00271 GDALSetMetadataItem( GDALMajorObjectH, const char *, const char *, 00272 const char * ); 00273 const char CPL_DLL * CPL_STDCALL GDALGetDescription( GDALMajorObjectH ); 00274 void CPL_DLL CPL_STDCALL GDALSetDescription( GDALMajorObjectH, const char * ); 00275 00276 /* ==================================================================== */ 00277 /* GDALDataset class ... normally this represents one file. */ 00278 /* ==================================================================== */ 00279 00280 GDALDriverH CPL_DLL CPL_STDCALL GDALGetDatasetDriver( GDALDatasetH ); 00281 char CPL_DLL ** CPL_STDCALL GDALGetFileList( GDALDatasetH ); 00282 void CPL_DLL CPL_STDCALL GDALClose( GDALDatasetH ); 00283 int CPL_DLL CPL_STDCALL GDALGetRasterXSize( GDALDatasetH ); 00284 int CPL_DLL CPL_STDCALL GDALGetRasterYSize( GDALDatasetH ); 00285 int CPL_DLL CPL_STDCALL GDALGetRasterCount( GDALDatasetH ); 00286 GDALRasterBandH CPL_DLL CPL_STDCALL GDALGetRasterBand( GDALDatasetH, int ); 00287 00288 CPLErr CPL_DLL CPL_STDCALL GDALAddBand( GDALDatasetH hDS, GDALDataType eType, 00289 char **papszOptions ); 00290 00291 CPLErr CPL_DLL CPL_STDCALL GDALDatasetRasterIO( 00292 GDALDatasetH hDS, GDALRWFlag eRWFlag, 00293 int nDSXOff, int nDSYOff, int nDSXSize, int nDSYSize, 00294 void * pBuffer, int nBXSize, int nBYSize, GDALDataType eBDataType, 00295 int nBandCount, int *panBandCount, 00296 int nPixelSpace, int nLineSpace, int nBandSpace); 00297 00298 CPLErr CPL_DLL CPL_STDCALL GDALDatasetAdviseRead( GDALDatasetH hDS, 00299 int nDSXOff, int nDSYOff, int nDSXSize, int nDSYSize, 00300 int nBXSize, int nBYSize, GDALDataType eBDataType, 00301 int nBandCount, int *panBandCount, char **papszOptions ); 00302 00303 const char CPL_DLL * CPL_STDCALL GDALGetProjectionRef( GDALDatasetH ); 00304 CPLErr CPL_DLL CPL_STDCALL GDALSetProjection( GDALDatasetH, const char * ); 00305 CPLErr CPL_DLL CPL_STDCALL GDALGetGeoTransform( GDALDatasetH, double * ); 00306 CPLErr CPL_DLL CPL_STDCALL GDALSetGeoTransform( GDALDatasetH, double * ); 00307 00308 int CPL_DLL CPL_STDCALL GDALGetGCPCount( GDALDatasetH ); 00309 const char CPL_DLL * CPL_STDCALL GDALGetGCPProjection( GDALDatasetH ); 00310 const GDAL_GCP CPL_DLL * CPL_STDCALL GDALGetGCPs( GDALDatasetH ); 00311 CPLErr CPL_DLL CPL_STDCALL GDALSetGCPs( GDALDatasetH, int, const GDAL_GCP *, 00312 const char * ); 00313 00314 void CPL_DLL * CPL_STDCALL GDALGetInternalHandle( GDALDatasetH, const char * ); 00315 int CPL_DLL CPL_STDCALL GDALReferenceDataset( GDALDatasetH ); 00316 int CPL_DLL CPL_STDCALL GDALDereferenceDataset( GDALDatasetH ); 00317 00318 CPLErr CPL_DLL CPL_STDCALL 00319 GDALBuildOverviews( GDALDatasetH, const char *, int, int *, 00320 int, int *, GDALProgressFunc, void * ); 00321 void CPL_DLL CPL_STDCALL GDALGetOpenDatasets( GDALDatasetH **hDS, int *pnCount ); 00322 int CPL_DLL CPL_STDCALL GDALGetAccess( GDALDatasetH hDS ); 00323 void CPL_DLL CPL_STDCALL GDALFlushCache( GDALDatasetH hDS ); 00324 00325 CPLErr CPL_DLL CPL_STDCALL 00326 GDALCreateDatasetMaskBand( GDALDatasetH hDS, int nFlags ); 00327 00328 CPLErr CPL_DLL CPL_STDCALL GDALDatasetCopyWholeRaster( 00329 GDALDatasetH hSrcDS, GDALDatasetH hDstDS, char **papszOptions, 00330 GDALProgressFunc pfnProgress, void *pProgressData ); 00331 00332 CPLErr CPL_DLL 00333 GDALRegenerateOverviews( GDALRasterBandH hSrcBand, 00334 int nOverviewCount, GDALRasterBandH *pahOverviewBands, 00335 const char *pszResampling, 00336 GDALProgressFunc pfnProgress, void *pProgressData ); 00337 00338 /* ==================================================================== */ 00339 /* GDALRasterBand ... one band/channel in a dataset. */ 00340 /* ==================================================================== */ 00341 00346 #define SRCVAL(papoSource, eSrcType, ii) \ 00347 (eSrcType == GDT_Byte ? \ 00348 ((GByte *)papoSource)[ii] : \ 00349 (eSrcType == GDT_Float32 ? \ 00350 ((float *)papoSource)[ii] : \ 00351 (eSrcType == GDT_Float64 ? \ 00352 ((double *)papoSource)[ii] : \ 00353 (eSrcType == GDT_Int32 ? \ 00354 ((GInt32 *)papoSource)[ii] : \ 00355 (eSrcType == GDT_UInt16 ? \ 00356 ((GUInt16 *)papoSource)[ii] : \ 00357 (eSrcType == GDT_Int16 ? \ 00358 ((GInt16 *)papoSource)[ii] : \ 00359 (eSrcType == GDT_UInt32 ? \ 00360 ((GUInt32 *)papoSource)[ii] : \ 00361 (eSrcType == GDT_CInt16 ? \ 00362 ((GInt16 *)papoSource)[ii * 2] : \ 00363 (eSrcType == GDT_CInt32 ? \ 00364 ((GInt32 *)papoSource)[ii * 2] : \ 00365 (eSrcType == GDT_CFloat32 ? \ 00366 ((float *)papoSource)[ii * 2] : \ 00367 (eSrcType == GDT_CFloat64 ? \ 00368 ((double *)papoSource)[ii * 2] : 0))))))))))) 00369 00370 typedef CPLErr 00371 (*GDALDerivedPixelFunc)(void **papoSources, int nSources, void *pData, 00372 int nBufXSize, int nBufYSize, 00373 GDALDataType eSrcType, GDALDataType eBufType, 00374 int nPixelSpace, int nLineSpace); 00375 00376 GDALDataType CPL_DLL CPL_STDCALL GDALGetRasterDataType( GDALRasterBandH ); 00377 void CPL_DLL CPL_STDCALL 00378 GDALGetBlockSize( GDALRasterBandH, int * pnXSize, int * pnYSize ); 00379 00380 CPLErr CPL_DLL CPL_STDCALL GDALRasterAdviseRead( GDALRasterBandH hRB, 00381 int nDSXOff, int nDSYOff, int nDSXSize, int nDSYSize, 00382 int nBXSize, int nBYSize, GDALDataType eBDataType, char **papszOptions ); 00383 00384 CPLErr CPL_DLL CPL_STDCALL 00385 GDALRasterIO( GDALRasterBandH hRBand, GDALRWFlag eRWFlag, 00386 int nDSXOff, int nDSYOff, int nDSXSize, int nDSYSize, 00387 void * pBuffer, int nBXSize, int nBYSize,GDALDataType eBDataType, 00388 int nPixelSpace, int nLineSpace ); 00389 CPLErr CPL_DLL CPL_STDCALL GDALReadBlock( GDALRasterBandH, int, int, void * ); 00390 CPLErr CPL_DLL CPL_STDCALL GDALWriteBlock( GDALRasterBandH, int, int, void * ); 00391 int CPL_DLL CPL_STDCALL GDALGetRasterBandXSize( GDALRasterBandH ); 00392 int CPL_DLL CPL_STDCALL GDALGetRasterBandYSize( GDALRasterBandH ); 00393 GDALAccess CPL_DLL CPL_STDCALL GDALGetRasterAccess( GDALRasterBandH ); 00394 int CPL_DLL CPL_STDCALL GDALGetBandNumber( GDALRasterBandH ); 00395 GDALDatasetH CPL_DLL CPL_STDCALL GDALGetBandDataset( GDALRasterBandH ); 00396 00397 GDALColorInterp CPL_DLL CPL_STDCALL 00398 GDALGetRasterColorInterpretation( GDALRasterBandH ); 00399 CPLErr CPL_DLL CPL_STDCALL 00400 GDALSetRasterColorInterpretation( GDALRasterBandH, GDALColorInterp ); 00401 GDALColorTableH CPL_DLL CPL_STDCALL GDALGetRasterColorTable( GDALRasterBandH ); 00402 CPLErr CPL_DLL CPL_STDCALL GDALSetRasterColorTable( GDALRasterBandH, GDALColorTableH ); 00403 int CPL_DLL CPL_STDCALL GDALHasArbitraryOverviews( GDALRasterBandH ); 00404 int CPL_DLL CPL_STDCALL GDALGetOverviewCount( GDALRasterBandH ); 00405 GDALRasterBandH CPL_DLL CPL_STDCALL GDALGetOverview( GDALRasterBandH, int ); 00406 double CPL_DLL CPL_STDCALL GDALGetRasterNoDataValue( GDALRasterBandH, int * ); 00407 CPLErr CPL_DLL CPL_STDCALL GDALSetRasterNoDataValue( GDALRasterBandH, double ); 00408 char CPL_DLL ** CPL_STDCALL GDALGetRasterCategoryNames( GDALRasterBandH ); 00409 CPLErr CPL_DLL CPL_STDCALL GDALSetRasterCategoryNames( GDALRasterBandH, char ** ); 00410 double CPL_DLL CPL_STDCALL GDALGetRasterMinimum( GDALRasterBandH, int *pbSuccess ); 00411 double CPL_DLL CPL_STDCALL GDALGetRasterMaximum( GDALRasterBandH, int *pbSuccess ); 00412 CPLErr CPL_DLL CPL_STDCALL GDALGetRasterStatistics( 00413 GDALRasterBandH, int bApproxOK, int bForce, 00414 double *pdfMin, double *pdfMax, double *pdfMean, double *pdfStdDev ); 00415 CPLErr CPL_DLL CPL_STDCALL GDALComputeRasterStatistics( 00416 GDALRasterBandH, int bApproxOK, 00417 double *pdfMin, double *pdfMax, double *pdfMean, double *pdfStdDev, 00418 GDALProgressFunc pfnProgress, void *pProgressData ); 00419 CPLErr CPL_DLL CPL_STDCALL GDALSetRasterStatistics( 00420 GDALRasterBandH hBand, 00421 double dfMin, double dfMax, double dfMean, double dfStdDev ); 00422 00423 const char CPL_DLL * CPL_STDCALL GDALGetRasterUnitType( GDALRasterBandH ); 00424 double CPL_DLL CPL_STDCALL GDALGetRasterOffset( GDALRasterBandH, int *pbSuccess ); 00425 CPLErr CPL_DLL CPL_STDCALL GDALSetRasterOffset( GDALRasterBandH hBand, double dfNewOffset); 00426 double CPL_DLL CPL_STDCALL GDALGetRasterScale( GDALRasterBandH, int *pbSuccess ); 00427 CPLErr CPL_DLL CPL_STDCALL GDALSetRasterScale( GDALRasterBandH hBand, double dfNewOffset ); 00428 void CPL_DLL CPL_STDCALL 00429 GDALComputeRasterMinMax( GDALRasterBandH hBand, int bApproxOK, 00430 double adfMinMax[2] ); 00431 CPLErr CPL_DLL CPL_STDCALL GDALFlushRasterCache( GDALRasterBandH hBand ); 00432 CPLErr CPL_DLL CPL_STDCALL GDALGetRasterHistogram( GDALRasterBandH hBand, 00433 double dfMin, double dfMax, 00434 int nBuckets, int *panHistogram, 00435 int bIncludeOutOfRange, int bApproxOK, 00436 GDALProgressFunc pfnProgress, 00437 void * pProgressData ); 00438 CPLErr CPL_DLL CPL_STDCALL GDALGetDefaultHistogram( GDALRasterBandH hBand, 00439 double *pdfMin, double *pdfMax, 00440 int *pnBuckets, int **ppanHistogram, 00441 int bForce, 00442 GDALProgressFunc pfnProgress, 00443 void * pProgressData ); 00444 CPLErr CPL_DLL CPL_STDCALL GDALSetDefaultHistogram( GDALRasterBandH hBand, 00445 double dfMin, double dfMax, 00446 int nBuckets, int *panHistogram ); 00447 int CPL_DLL CPL_STDCALL 00448 GDALGetRandomRasterSample( GDALRasterBandH, int, float * ); 00449 GDALRasterBandH CPL_DLL CPL_STDCALL 00450 GDALGetRasterSampleOverview( GDALRasterBandH, int ); 00451 CPLErr CPL_DLL CPL_STDCALL GDALFillRaster( GDALRasterBandH hBand, 00452 double dfRealValue, double dfImaginaryValue ); 00453 CPLErr CPL_DLL CPL_STDCALL 00454 GDALComputeBandStats( GDALRasterBandH hBand, int nSampleStep, 00455 double *pdfMean, double *pdfStdDev, 00456 GDALProgressFunc pfnProgress, 00457 void *pProgressData ); 00458 CPLErr CPL_DLL GDALOverviewMagnitudeCorrection( GDALRasterBandH hBaseBand, 00459 int nOverviewCount, 00460 GDALRasterBandH *pahOverviews, 00461 GDALProgressFunc pfnProgress, 00462 void *pProgressData ); 00463 00464 GDALRasterAttributeTableH CPL_DLL CPL_STDCALL GDALGetDefaultRAT( 00465 GDALRasterBandH hBand ); 00466 CPLErr CPL_DLL CPL_STDCALL GDALSetDefaultRAT( GDALRasterBandH, 00467 GDALRasterAttributeTableH ); 00468 CPLErr CPL_DLL CPL_STDCALL GDALAddDerivedBandPixelFunc( const char *pszName, 00469 GDALDerivedPixelFunc pfnPixelFunc ); 00470 00471 GDALRasterBandH CPL_DLL CPL_STDCALL GDALGetMaskBand( GDALRasterBandH hBand ); 00472 int CPL_DLL CPL_STDCALL GDALGetMaskFlags( GDALRasterBandH hBand ); 00473 CPLErr CPL_DLL CPL_STDCALL 00474 GDALCreateMaskBand( GDALRasterBandH hBand, int nFlags ); 00475 00476 #define GMF_ALL_VALID 0x01 00477 #define GMF_PER_DATASET 0x02 00478 #define GMF_ALPHA 0x04 00479 #define GMF_NODATA 0x08 00480 00481 /* -------------------------------------------------------------------- */ 00482 /* Helper functions. */ 00483 /* -------------------------------------------------------------------- */ 00484 int CPL_DLL CPL_STDCALL GDALGeneralCmdLineProcessor( int nArgc, char ***ppapszArgv, 00485 int nOptions ); 00486 void CPL_DLL CPL_STDCALL GDALSwapWords( void *pData, int nWordSize, int nWordCount, 00487 int nWordSkip ); 00488 void CPL_DLL CPL_STDCALL 00489 GDALCopyWords( void * pSrcData, GDALDataType eSrcType, int nSrcPixelOffset, 00490 void * pDstData, GDALDataType eDstType, int nDstPixelOffset, 00491 int nWordCount ); 00492 00493 void CPL_DLL 00494 GDALCopyBits( const GByte *pabySrcData, int nSrcOffset, int nSrcStep, 00495 GByte *pabyDstData, int nDstOffset, int nDstStep, 00496 int nBitCount, int nStepCount ); 00497 00498 int CPL_DLL CPL_STDCALL GDALLoadWorldFile( const char *, double * ); 00499 int CPL_DLL CPL_STDCALL GDALReadWorldFile( const char *, const char *, 00500 double * ); 00501 int CPL_DLL CPL_STDCALL GDALWriteWorldFile( const char *, const char *, 00502 double * ); 00503 int CPL_DLL CPL_STDCALL GDALLoadTabFile( const char *, double *, char **, 00504 int *, GDAL_GCP ** ); 00505 int CPL_DLL CPL_STDCALL GDALReadTabFile( const char *, double *, char **, 00506 int *, GDAL_GCP ** ); 00507 char CPL_DLL ** CPL_STDCALL GDALLoadRPBFile( const char *pszFilename, 00508 char **papszSiblingFiles ); 00509 CPLErr CPL_DLL CPL_STDCALL GDALWriteRPBFile( const char *pszFilename, 00510 char **papszMD ); 00511 char CPL_DLL ** CPL_STDCALL GDALLoadIMDFile( const char *pszFilename, 00512 char **papszSiblingFiles ); 00513 CPLErr CPL_DLL CPL_STDCALL GDALWriteIMDFile( const char *pszFilename, 00514 char **papszMD ); 00515 00516 const char CPL_DLL * CPL_STDCALL GDALDecToDMS( double, const char *, int ); 00517 double CPL_DLL CPL_STDCALL GDALPackedDMSToDec( double ); 00518 double CPL_DLL CPL_STDCALL GDALDecToPackedDMS( double ); 00519 00520 /* Note to developers : please keep this section in sync with ogr_core.h */ 00521 00522 #ifndef GDAL_VERSION_INFO_DEFINED 00523 #define GDAL_VERSION_INFO_DEFINED 00524 const char CPL_DLL * CPL_STDCALL GDALVersionInfo( const char * ); 00525 #endif 00526 00527 #ifndef GDAL_CHECK_VERSION 00528 00540 int CPL_DLL CPL_STDCALL GDALCheckVersion( int nVersionMajor, int nVersionMinor, 00541 const char* pszCallingComponentName); 00542 00544 #define GDAL_CHECK_VERSION(pszCallingComponentName) \ 00545 GDALCheckVersion(GDAL_VERSION_MAJOR, GDAL_VERSION_MINOR, pszCallingComponentName) 00546 00547 #endif 00548 00549 typedef struct { 00550 double dfLINE_OFF; 00551 double dfSAMP_OFF; 00552 double dfLAT_OFF; 00553 double dfLONG_OFF; 00554 double dfHEIGHT_OFF; 00555 00556 double dfLINE_SCALE; 00557 double dfSAMP_SCALE; 00558 double dfLAT_SCALE; 00559 double dfLONG_SCALE; 00560 double dfHEIGHT_SCALE; 00561 00562 double adfLINE_NUM_COEFF[20]; 00563 double adfLINE_DEN_COEFF[20]; 00564 double adfSAMP_NUM_COEFF[20]; 00565 double adfSAMP_DEN_COEFF[20]; 00566 00567 double dfMIN_LONG; 00568 double dfMIN_LAT; 00569 double dfMAX_LONG; 00570 double dfMAX_LAT; 00571 00572 } GDALRPCInfo; 00573 00574 int CPL_DLL CPL_STDCALL GDALExtractRPCInfo( char **, GDALRPCInfo * ); 00575 00576 /* ==================================================================== */ 00577 /* Color tables. */ 00578 /* ==================================================================== */ 00580 typedef struct 00581 { 00583 short c1; 00584 00586 short c2; 00587 00589 short c3; 00590 00592 short c4; 00593 } GDALColorEntry; 00594 00595 GDALColorTableH CPL_DLL CPL_STDCALL GDALCreateColorTable( GDALPaletteInterp ); 00596 void CPL_DLL CPL_STDCALL GDALDestroyColorTable( GDALColorTableH ); 00597 GDALColorTableH CPL_DLL CPL_STDCALL GDALCloneColorTable( GDALColorTableH ); 00598 GDALPaletteInterp CPL_DLL CPL_STDCALL GDALGetPaletteInterpretation( GDALColorTableH ); 00599 int CPL_DLL CPL_STDCALL GDALGetColorEntryCount( GDALColorTableH ); 00600 const GDALColorEntry CPL_DLL * CPL_STDCALL GDALGetColorEntry( GDALColorTableH, int ); 00601 int CPL_DLL CPL_STDCALL GDALGetColorEntryAsRGB( GDALColorTableH, int, GDALColorEntry *); 00602 void CPL_DLL CPL_STDCALL GDALSetColorEntry( GDALColorTableH, int, const GDALColorEntry * ); 00603 void CPL_DLL CPL_STDCALL GDALCreateColorRamp( GDALColorTableH hTable, 00604 int nStartIndex, const GDALColorEntry *psStartColor, 00605 int nEndIndex, const GDALColorEntry *psEndColor ); 00606 00607 /* ==================================================================== */ 00608 /* Raster Attribute Table */ 00609 /* ==================================================================== */ 00610 00611 typedef enum { GFT_Integer , GFT_Real, GFT_String 00615 } GDALRATFieldType; 00616 00617 typedef enum { GFU_Generic = 0, GFU_PixelCount = 1, GFU_Name = 2, GFU_Min = 3, GFU_Max = 4, GFU_MinMax = 5, GFU_Red = 6, GFU_Green = 7, GFU_Blue = 8, GFU_Alpha = 9, GFU_RedMin = 10, GFU_GreenMin = 11, GFU_BlueMin = 12, GFU_AlphaMin = 13, GFU_RedMax = 14, GFU_GreenMax = 15, GFU_BlueMax = 16, GFU_AlphaMax = 17, GFU_MaxCount 00637 } GDALRATFieldUsage; 00638 00639 GDALRasterAttributeTableH CPL_DLL CPL_STDCALL 00640 GDALCreateRasterAttributeTable(void); 00641 void CPL_DLL CPL_STDCALL GDALDestroyRasterAttributeTable( 00642 GDALRasterAttributeTableH ); 00643 00644 int CPL_DLL CPL_STDCALL GDALRATGetColumnCount( GDALRasterAttributeTableH ); 00645 00646 const char CPL_DLL * CPL_STDCALL GDALRATGetNameOfCol( 00647 GDALRasterAttributeTableH, int ); 00648 GDALRATFieldUsage CPL_DLL CPL_STDCALL GDALRATGetUsageOfCol( 00649 GDALRasterAttributeTableH, int ); 00650 GDALRATFieldType CPL_DLL CPL_STDCALL GDALRATGetTypeOfCol( 00651 GDALRasterAttributeTableH, int ); 00652 00653 int CPL_DLL CPL_STDCALL GDALRATGetColOfUsage( GDALRasterAttributeTableH, 00654 GDALRATFieldUsage ); 00655 int CPL_DLL CPL_STDCALL GDALRATGetRowCount( GDALRasterAttributeTableH ); 00656 00657 const char CPL_DLL * CPL_STDCALL GDALRATGetValueAsString( 00658 GDALRasterAttributeTableH, int ,int); 00659 int CPL_DLL CPL_STDCALL GDALRATGetValueAsInt( 00660 GDALRasterAttributeTableH, int ,int); 00661 double CPL_DLL CPL_STDCALL GDALRATGetValueAsDouble( 00662 GDALRasterAttributeTableH, int ,int); 00663 00664 void CPL_DLL CPL_STDCALL GDALRATSetValueAsString( GDALRasterAttributeTableH, int, int, 00665 const char * ); 00666 void CPL_DLL CPL_STDCALL GDALRATSetValueAsInt( GDALRasterAttributeTableH, int, int, 00667 int ); 00668 void CPL_DLL CPL_STDCALL GDALRATSetValueAsDouble( GDALRasterAttributeTableH, int, int, 00669 double ); 00670 void CPL_DLL CPL_STDCALL GDALRATSetRowCount( GDALRasterAttributeTableH, 00671 int ); 00672 CPLErr CPL_DLL CPL_STDCALL GDALRATCreateColumn( GDALRasterAttributeTableH, 00673 const char *, 00674 GDALRATFieldType, 00675 GDALRATFieldUsage ); 00676 CPLErr CPL_DLL CPL_STDCALL GDALRATSetLinearBinning( GDALRasterAttributeTableH, 00677 double, double ); 00678 int CPL_DLL CPL_STDCALL GDALRATGetLinearBinning( GDALRasterAttributeTableH, 00679 double *, double * ); 00680 CPLErr CPL_DLL CPL_STDCALL GDALRATInitializeFromColorTable( 00681 GDALRasterAttributeTableH, GDALColorTableH ); 00682 GDALColorTableH CPL_DLL CPL_STDCALL GDALRATTranslateToColorTable( 00683 int nEntryCount ); 00684 void CPL_DLL CPL_STDCALL GDALRATDumpReadable( GDALRasterAttributeTableH, 00685 FILE * ); 00686 GDALRasterAttributeTableH CPL_DLL CPL_STDCALL 00687 GDALRATClone( GDALRasterAttributeTableH ); 00688 00689 int CPL_DLL CPL_STDCALL GDALRATGetRowOfValue( GDALRasterAttributeTableH , double ); 00690 00691 00692 /* ==================================================================== */ 00693 /* GDAL Cache Management */ 00694 /* ==================================================================== */ 00695 00696 void CPL_DLL CPL_STDCALL GDALSetCacheMax( int nBytes ); 00697 int CPL_DLL CPL_STDCALL GDALGetCacheMax(void); 00698 int CPL_DLL CPL_STDCALL GDALGetCacheUsed(void); 00699 int CPL_DLL CPL_STDCALL GDALFlushCacheBlock(void); 00700 00701 CPL_C_END 00702 00703 #endif /* ndef GDAL_H_INCLUDED */