GDAL一次多项式进行几何纠正

本文详细介绍了如何利用GDAL库进行一次多项式几何校正,通过实例代码展示校正过程,帮助读者理解并应用到地理信息系统(GIS)的数据处理中。
摘要由CSDN通过智能技术生成

用代码说明一切!!!

static int CreateGCPsList( const char * pszGCPsFilename, 
						  GDAL_GCP *pasGCPs );
static void DestoryGCPs( int nGCPCount, GDAL_GCP *pasGCPs );

static int GCPTransformToGeoTransform( int nGCPCount,
 GDAL_GCP *pasGCPs,
double *padfGeoTransform );
static int ApplyGeoTransformOnOtherTransform(
	double *padfSrcGeoTransform,
	double *padfInputGeoTransform );

static GDALDataset *CreateOutputDataset( GDALDataset *pSrcDataset,
const char *pszDstFileFormat,
const char *pszDstFilename );
static int WarpImage( GDALDataset *pSrcDataset, 
					 GDALDataset *pDstDataset );

int _tmain(int argc, _TCHAR* argv[])
{
	using namespace std;

	static const int MAX_GCP = 6;
	int bRet = EXIT_FAILURE;

	const char *pszSrcFilename = "../data/in.tif";
	const char *pszGCPsFilename = "../data/gcps.txt";
	const char *pszDstFilename = "../data/out.tif";	

/* ----------------------------------------------------------------- */
/* -----------------------从输入文件读取控制点---------------------- */
/* ----------------------------------------------------------------- */
	GDAL_GCP aGCPsList[MAX_GCP];
	int nGCPsCount = 0;
	nGCPsCount = CreateGCPsList( pszGCPsFilename, aGCPsList );
	if ( nGCPsCount < 3 )
	{
		std::cerr << "CreateGCPsList failed!" 
			<< std::endl;
		goto Main_clean;
	}

	GDALAllRegister();

/* ----------------------------------------------------------------- */
/* -----------------------从输入数据文件创建数据集------------------ */
/* ----------------------------------------------------------------- */
	GDALDataset *pSrcDataset = (GDALDataset *)GDALOpen( 
		pszSrcFilename,
		GA_Update );
	if ( pSrcDataset == NULL )
	{
		std::cerr << "GDALOpen Source file failed!"
			<< std::endl;
		goto Main_clean;
	}

/* ----------------------------------------------------------------- */
/* -----------------------将控制点变换转化为地理仿射变换------------ */
/* ----------------------------------------------------------------- */
	double adfSrcGeoTransform[6];
	pSrcDataset->GetGeoTransform( adfSrcGeoTransform );

	double adfGCPGeoTransform[6];
	if ( !GCPTransformToGeoTransform( nGCPsCount, aGCPsList, 
		adfGCPGeoTransform) )
	{
		std::cerr << "GCPTransformToGeoTransform failed!"
	
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值