とらりもん - GDAL_C++ Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
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);
* 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);