#include <iostream>
#include <gdal_priv.h>
#include <gdal_alg_priv.h>
#include <gdal.h>
using namespace std;
int main() {
//注册所有的驱动
GDALAllRegister();
//设置支持中文路径和文件名
//CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");
//打开文件
string file_path_name = "H:/DEM/DEM12.5.tif";
GDALDataset* poDataset = (GDALDataset*)GDALOpen(file_path_name.c_str(), GA_ReadOnly);
if (poDataset == NULL)
{
cout << "指定的文件不能打开!" <<endl;
return 0;
}
// 获取波段信息
GDALRasterBand* poBand = poDataset->GetRasterBand(1);
int nXSize = poDataset->GetRasterXSize();
int nYSize = poDataset->GetRasterYSize();
cout << "width = " << nXSize << endl;
cout << "height = " << nYSize << endl;
// 获取投影参考系
string projection = poDataset->GetProjectionRef();
cout << "Projection = " << projection << endl;
// 获取投影坐标范围
double geoTransform[6];
poDataset->GetGeoTransform(geoTransform);
double minX = geoTransform[0];
double minY = geoTransform[3] + nXSize * geoTransform[4] + nYSize * geoTransform[5];
double maxX = geoTransform[0] + nXSize * geoTransform[1] + nYSize * geoTransform[2];
double maxY = geoTransform[3];
cout.setf(ios::fixed);
cout.precision(8);
cout << "X-axis minimum:" << minX << ",\nY-axis minimum:" << minY << ",\nX-axis maximum:" << maxX << ",\nY-axis maximum:" << maxY << endl;
// 读取数据
int* pafScanline = new int[nXSize];
for (int i = 0; i < nYSize; i++) {
poBand->RasterIO(GF_Read, 0, i, nXSize,1, pafScanline, nXSize, 1, GDT_Int16, 0, 0);
}
delete[] pafScanline;
//关闭栅格文件
GDALClose(poDataset);
return 0;
}
结果:
gis结果: