c++实现当使用 HDF5 文件存储 DEM 数据集时,要确保使用 Envi 打开时能够正确反映地理信息,你需要生成符合 Envi 文件格式要求的头文件(.hdr)。下面是一个示例代码,演示如何生成符合 Envi 文件格式要求的头文件:
时间: 2023-07-15 17:12:43 浏览: 53
下面是一个示例代码,演示如何生成符合 Envi 文件格式要求的头文件:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string filename = "test.h5"; // HDF5 文件名
int width = 512; // DEM 数据集宽度
int height = 512; // DEM 数据集高度
double xllcorner = 0.0; // 西南角经度
double yllcorner = 0.0; // 西南角纬度
double cellsize = 0.1; // 像素大小
ofstream hdrfile("test.hdr");
if (!hdrfile.is_open())
{
cerr << "Failed to create header file!" << endl;
return -1;
}
hdrfile << "ENVI" << endl;
hdrfile << "description = HDF5 DEM dataset" << endl;
hdrfile << "samples = " << width << endl;
hdrfile << "lines = " << height << endl;
hdrfile << "bands = 1" << endl;
hdrfile << "header offset = 0" << endl;
hdrfile << "file type = ENVI Standard" << endl;
hdrfile << "data type = 4" << endl;
hdrfile << "interleave = bsq" << endl;
hdrfile << "byte order = 0" << endl;
hdrfile << "xllcorner = " << xllcorner << endl;
hdrfile << "yllcorner = " << yllcorner << endl;
hdrfile << "cellsize = " << cellsize << endl;
hdrfile << "map info = {Geographic, 1.0000, 1.0000, "
<< xllcorner << ", " << yllcorner << ", "
<< cellsize << ", " << cellsize << ", WGS-84, units=Degrees}" << endl;
hdrfile.close();
return 0;
}
```
在这个示例中,我们创建了一个名为 `test.hdr` 的 Envi 格式头文件,并设置了相关参数,包括文件描述、数据集宽度和高度、像素大小、地理参考信息等。通过修改这些参数,你可以生成符合你自己 DEM 数据集要求的头文件。