とらりもんHOME  Index  Search  Changes  Login

GDAL_C++

sudo apt-get install libgdal-dev libgdal1-dev libgdal1h gdal-bin
  • CE_None ... GDALの記号定数で, =0。意味はNo erro。
  • GDALDatasetクラスとGDALRasterBandクラス
  • nodataの値はどこに記録されているのか?
  • コンパイル時には-lgdalオプションつける。
  • GeoTIFF出力の例
# include <gdal/gdal_priv.h>
# include <gdal/cpl_conv.h> // for CPLMalloc()
# include <gdal/ogr_spatialref.h>

...

GDALAllRegister();     // register GDAL drivers
GDALDriver *poDriver;
poDriver = GetGDALDriverManager()->GetDriverByName("GTiff");
char **papszOptions = NULL;  // pointer of array of pointer to a string terminated by zero
// compression option データ圧縮。PACKBITはあんまり圧縮してくれない。LZWはがっつり圧縮してくれるけど重い。いずれも可逆圧縮。
// papszOptions = CSLSetNameValue( papszOptions, "COMPRESS", "PACKBITS" );
papszOptions = CSLSetNameValue( papszOptions, "COMPRESS", "LZW" );
GDALDataset *poDstDS;   // pointer to destination dataset
double adfGeoTransform[] = {-180.00, 0.050, 0.00, 70.00, 0.00, -0.050};
string fn= "test.tif";
poDstDS = poDriver->Create( fn.c_str(), NCOL_OUT, NROW_OUT, NBAND, GDT_Float32, papszOptions );
poDstDS->SetGeoTransform( adfGeoTransform );
poDstDS->SetProjection( "GEOGCS[\"GCS_WGS_1984\",DATUM[\"unknown\",SPHEROID[\"WGS_84\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433]]" );
poDstDS->SetMetadataItem("Band_1", "", NULL);
char *pszSRS_WKT = NULL;
CPLFree( pszSRS_WKT );
GDALRasterBand  *poBand_out;
string bandname="Band1";
poBand_out = poDstDS->GetRasterBand(1);
poBand_out->SetNoDataValue(-9999.0);
poBand_out->SetColorInterp("Gray");
poBand_out->SetDescription(bandname.c_str());
if ((poBand_out->RasterIO( GF_Write, 0, 0, NCOL_OUT, NROW_OUT, outband1, NCOL_OUT, NROW_OUT, GDT_Float32, 0, 0 ))==3){
            printf("Error: Failed writing result!\n");
            return RETURN_ERROR;
      }
               }
GDALClose(poDstDS);
Last modified:2019/07/01 11:05:42
Keyword(s):
References:[GDAL]