使用GDAL进行RPC坐标转换

对于高分辨率遥感卫星数据而言,目前几乎都提供了有理函数模型(RFM)来进行图像校正(SPOT系列提供了有理函数模型之外还提供了严格轨道模型)。对遥感影像进行校正目前最常用的就是使用有理函数模型来进行校正。

有理函数模型的计算公式网上可以搜到,同时我之前的博客中也有比较详细的说明,可以参考这篇博客http://blog.csdn.net/liminlu0314/article/details/24810593

GDAL库从1.3左右就开始提供基于RPC的坐标转换,到目前2.x版本以来,基于RPC的坐标转换一直在持续优化,从1.X版本到2.X版本,计算速度有了较大提升。


下面是使用GDAL基于RPC坐标转换的代码:

#include "gdal_priv.h"
#include "gdal_alg.h" void main()
{
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");
CPLSetConfigOption("GDAL_DATA", "./data");
GDALAllRegister();//注册驱动 const char* pszTif = "F:\\ZY3_TLC_E115.5_N39.8_20150110_L1A0002974893-NAD.tiff"; //打开数据
GDALDataset *pDS = (GDALDataset*)GDALOpen(pszTif, GA_ReadOnly);
//从元数据中获取RPC信息
char** papszRPC = pDS->GetMetadata("RPC"); //将获取的RPC信息构造成结构体
GDALRPCInfo oInfo;
GDALExtractRPCInfo(papszRPC, &oInfo); GDALClose((GDALDatasetH)pDS); //设置RPC模型中所需的DEM路径
char** papszTransOption = NULL;
papszTransOption = CSLSetNameValue( papszTransOption, "RPC_DEM", "E:\\DEM.img" ); //设置DEM //使用RPC信息,DEM等构造RPC转换参数
void *pRPCTransform = GDALCreateRPCTransformer(&oInfo, FALSE, 0, papszTransOption); //定义图像的四个角点行列号坐标
double dX[4] = {0, 24525, 24525, 0};
double dY[4] = {0, 0, 24438, 24438};
double dZ[4] = {0, 0, 0, 0};
int nSuccess[4] = {FALSE}; //输出原始行列号坐标
printf("row col:\n");
for(int i=0; i<4; i++)
printf("%d\tX=%.7f\tY=%.7f\tZ=%.7f\n", i, dX[i], dY[i], dZ[i]); //调用RPC坐标转换函数进行坐标转换反算(行列号转经纬度)
GDALRPCTransform(pRPCTransform, FALSE, 4, dX, dY, dZ, nSuccess); //输出转换的经纬度
printf("long lat:\n");
for(int i=0; i<4; i++)
printf("%d\tX=%.7f\tY=%.7f\tZ=%.7f\n", i, dX[i], dY[i], dZ[i]); //调用RPC坐标转换函数进行坐标正算(经纬度转行列号)
GDALRPCTransform(pRPCTransform, TRUE, 4, dX, dY, dZ, nSuccess); //输出转换后的行列号坐标
printf("row2 col2:\n");
for(int i=0; i<4; i++)
printf("%d\tX=%.7f\tY=%.7f\tZ=%.7f\n", i, dX[i], dY[i], dZ[i]); //释放资源
GDALDestroyRPCTransformer(pRPCTransform);
CSLDestroy(papszTransOption);
}

使用GDAL进行RPC坐标转换的更多相关文章

  1. 使用GDAL图书馆RPC校正问题

    很快就会GDAL库更新1.11版本号之后,在发现之前写RPC像方误差修正模型校准结果特别大(在更新结果之前的版本号和PCI结果一致).所以初步推断是GDAL库的bug,经过各个參数改动发现原来是指定的 ...

  2. GDAL的安装和配置(编译proj.4)

    1.下载地址 http://trac.osgeo.org/gdal/wiki/DownloadSource 下面是两个版本: http://pan.baidu.com/s/1bntuXER  (1.1 ...

  3. 修改GDAL库支持RPC像方改正模型

    最近在做基于RPC的像方改正模型,方便对数据进行测试,修改了GDAL库中的RPC纠正模型,使之可以支持RPC像方改正参数. 下面是RPC模型的公式,rn,cn为归一化之后的图像行列号坐标,PLH为归一 ...

  4. 改动GDAL库支持RPC像方改正模型

    近期在做基于RPC的像方改正模型.方便对数据进行測试,改动了GDAL库中的RPC纠正模型,使之能够支持RPC像方改正參数. 以下是RPC模型的公式,rn,cn为归一化之后的图像行列号坐标,PLH为归一 ...

  5. 使用GDAL库中的RPC校正问题

    最近将GDAL库更新至1.11版本之后,发现之前写的RPC像方改正模型校正的结果偏差特别大(更新版本之前结果和PCI处理的结果一致).所以初步判断是GDAL库的bug,经过各个参数修改发现原来是指定的 ...

  6. GDAL坐标转换

    一.引言 最近研究了一下GIS.测绘学的坐标转换的问题,感觉大部分资料专业性太强,上来就是一通专业性论述:但感觉对于相关从业者来说,其实不必了解那么多背景知识的:就通过GDAL这个工具,来简单总结下坐 ...

  7. GDAL 2.0版本RPC校正速度测试

    GDAL2.0版本的更新日志中提到了对RPC校正的优化,今天测试了一下,发现提升的速度还是蛮快的,测试的数据是一个IRS-P5的数据. 单线程测试 首先使用一个线程进行测试,使用下面的批处理进行运行, ...

  8. 利用GDAL实现影像的几何校正

    一.概述 遥感影像和地理坐标进行关联的方式一般有好几种,一种是直接给出了仿射变换系数,即6个參数,左上角地理坐标,纵横方向上的分辨率,以及旋转系数.在这样的情况下,求出某一像素点的地理坐标非常easy ...

  9. GDAL编译(转)

    一.简单的编译 1.使用VisualStudio IDE编译 首先进入GDAL的源代码目录,可以看到有几个sln为后缀的文件名,比如makegdal10.sln,makegdal80.sln,make ...

随机推荐

  1. html标记语言 --图像标记

    html标记语言 --图像标记 三.图像标记 1.使用方法 <img src="路径/文件名.格式" width="属性值" height="属 ...

  2. js中获取元素的样式兼容性的写法

    1:设计元素的样式:el.style.color="red"||el.style["color"]="red"  获取元素的样式:el.st ...

  3. 机器学习:scipy和sklearn中普通最小二乘法与多项式回归的使用对

    相关内容连接: 机器学习:Python中如何使用最小二乘法(以下简称文一) 机器学习:形如抛物线的散点图在python和R中的非线性回归拟合方法(以下简称文二) 有些内容已经在上面两篇博文中提到了,所 ...

  4. 前端之旅HTML与CSS篇之IE6常见BUG

    1.IE6怪异解析之padding与border算入宽高原因:未加文档声明造成非盒模型解析解决方法:加入文档声明<!doctype html> 2.IE6在块元素.左右浮动.设定marin ...

  5. java的继承性

    在java继承中,子类也称为派生类,父类也称为基类或者超类,基本语法 :子类 extends 父类{} 实现一个简单的继承类: class Person{ private String name; p ...

  6. 【实验吧】CTF_Web_登录一下好吗?

    实验吧CTF---Web篇 1. 打开登录地址(http://ctf5.shiyanbar.com/web/wonderkun/web/index.html),发现为一个登录界面,第一想到的是查看源代 ...

  7. [SCOI2008]着色方案

    1079: [SCOI2008]着色方案 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2228  Solved: 1353[Submit][Stat ...

  8. [HNOI2010]弹飞绵羊

    Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置 ...

  9. ●BZOJ 3566 [SHOI2014]概率充电器

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3566题解: 概率dp,树形dp 如果求出每个点被通电的概率t, 那么期望答案就是t1×1+t ...

  10. 2015 多校联赛 ——HDU5353(构造)

    Each soda has some candies in their hand. And they want to make the number of candies the same by do ...