我想通过使用Gdal C++从geotiff图像中获取经度和纬度。获取这些坐标的大多数资源和教程通常使用C和Phyton。众所周知,C++的Gdal来源是不同的。是否有任何文档或教程如何使用C++获得这种位置?还是有人知道如何在Gdal C++中获取这些坐标?
最佳答案
像这样:
GDALDataset *fin = (GDALDataset*)GDALOpen(filename.c_str(), GA_ReadOnly);
if(fin==NULL)
throw std::runtime_error("Could not open file '"+filename+"' with GDAL!");
std::vector<double> geotransform(6);
if(fin->GetGeoTransform(geotransform.data())!=CE_None)
throw std::runtime_error("Could not get a geotransform!");
//From https://www.gdal.org/gdal_datamodel.html "Affine GeoTransform"
// Xgeo = GT(0) + Xpixel*GT(1) + Yline*GT(2)
// Ygeo = GT(3) + Xpixel*GT(4) + Yline*GT(5)
int x = 0;
int y = 0;
double lng=geotransform[0] + x*geotransform[1] + y*geotransform[2];
double lat=geotransform[3] + x*geotransform[4] + y*geotransform[5];
GDAL没有C++接口(interface),因此您就像在C中一样完成大部分工作。