GDAL GeoTiff获取标高在指定像素帮助c++
GDAL GeoTiff get elevation at a specified pixel help C++
我不太懂英语,我也不是最好的c++程序员,所以我决定在这里问一个问题来弥补这一点。
我正在尝试从从本页下载的GeoTiff图像中获取标高:http://terracolor.net/sample_imagery.html
我通过GDAL库从图像中获得一些信息,但我不确定这到底是什么。是颜色吗?这是坐标吗?什么是统一?我也对我能读到的不同波段感到困惑。也许以前用过GDAL的人能告诉我这是怎么回事。最后我想要的是给定像素的高度,以米为单位。
下面是我的代码:
int ofApp::getAlt(int x,int y){
GDALDataset *poDataset;
GDALAllRegister();
poDataset = (GDALDataset *) GDALOpen( "data/test.tif", GA_ReadOnly );
if( poDataset == NULL )
{
cout << "no" << endl;
}else{
GDALRasterBand *poBand;
int nBlockXSize, nBlockYSize;
int bGotMin, bGotMax;
double adfMinMax[2];
//printf( "Size is %dx%dx%dn", poDataset->GetRasterXSize(), poDataset->GetRasterYSize(), poDataset->GetRasterCount() );
poBand = poDataset->GetRasterBand( 3 );
poBand->GetBlockSize( &nBlockXSize, &nBlockYSize );
adfMinMax[0] = poBand->GetMinimum( &bGotMin );
adfMinMax[1] = poBand->GetMaximum( &bGotMax );
if( ! (bGotMin && bGotMax) )
GDALComputeRasterMinMax((GDALRasterBandH)poBand, TRUE, adfMinMax);
float *pafScanline;
int nXSize = poBand->GetXSize();
pafScanline = (float *) CPLMalloc(sizeof(float)*nXSize);
poBand->RasterIO( GF_Read, x, y, 1, 1,
pafScanline, nXSize, 1, GDT_Float32,
0, 0 );
//cout << "vvv" << pafScanline[0] << endl;
//printf( "value %f n", pafScanline[0]);
return pafScanline[0];
}
}
Terracolor提供的这些GeoTIFF文件似乎包含颜色信息,而不是海拔。该文件在RGB空间中具有像素颜色,有三个波段(1:红色,2:绿色,3:蓝色)。您可以使用类似于示例的代码处理GeoTIFF文件,但是您需要读取三个波段。数据类型为Byte,而不是GDT_Float32。在使用GDAL处理它们之前,我建议与数据提供者进行检查,或者使用GIS软件(如QGIS)打开其中一些栅格层。.tif文件似乎带有。txt文件中的元数据。
你是对的。多么简单的错误啊。我使用的这些图像中没有高程数据作为波段。我现在使用来自http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp的图像,它以我需要的方式提供所需的数据。然后我可以用我的函数把它读出来。
相关文章:
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何在24位SDL_Surface上设置像素的颜色
- 如何从SDL_Surface获取特定像素的颜色
- 如何将CMSampleBufferRef/CIImage/UIImage转换为像素,例如uint8_t[]
- 在C++中查找像素 RGB 数据的最快方法是什么?
- 是否可以从 OpenGL 缓冲区获取原始大小的像素?
- 选择基于另一个垫子的非零像素的cv::Mat的一部分?
- 如何使用 sdl2 快速绘制像素网格?
- 如何在C++中进行像素操作? - Linux
- 他们如何将红外锁定像素转换为镜头前方 1m 的正常平面上的位置
- 访问随机图像像素的快速方法,最多一次
- OpenCV 像素访问点与 at() - 不同的值
- 如何使用 freetype2 访问单色位图中的像素状态
- 尝试渲染像素坐标时,简单线条渲染失败
- 计算另一个图像像素满足条件的像素值的平均值
- 如何返回定义良好的内存部分?例如来自图像数据的像素的颜色值
- 在Qt-cpp中通过像素获取QString的子字符串
- 有效地计算像素到其对应核线的距离
- GDAL GeoTiff获取标高在指定像素帮助c++