rpb/rpc文件说明与matlab读取

news2025/1/11 12:52:21

什么是rpb/rpc文件?

        rpb文件是用来存储用于遥感数据几何校正的RPC(Rational Polynomial Coefficients )模型的文件。类似的还有RPC文件,rpb与rpc文件只是格式不同,但包含的信息一致。其用于从图像坐标转换到地理坐标,L1级别的遥感数据是没有经过地理编码及几何校正的,因此可以通过数据包内的RPC文件进行数据几何校正(地理编码)。

        RPC参数是有理函多项式函数模型的参数,可以将遥感影像的图像坐标(Line,Sample)即(行号,列号)与其对应的大地坐标(Lat,Long, Height)即(纬度,经度,高程)用比值多项式一一对应起来。RPC的概念得到了很大的关注是因为RPC不仅可以将传感器成像的物理模型隐藏起来,同时可以通过RPC模型校正出几何精度更高的卫星数据。不同数据厂商使用不同的方法生成RPC文件,但目前大多数都采取的非线性最小二乘法(Non linear Least square)。在成像期间,要拟合的数据由物理传感器模型生成。        

        更详细的了解参考:

        卫星RPC有理多项式模型原理与正反算实现(python)-CSDN博客
        看懂卫星遥感数据RPC文件-CSDN博客

rpb/rpc文件格式

        rpb/rpc文件通常以文本文件或xml文件格式存储,对于国产高分数据多采用文本文件格式。

        rpb文件***.rpb格式示例:

satId = "XXX";
bandId = "XXX";
SpecId = "XXX";
BEGIN_GROUP = IMAGE
	errBias =   1.0;
	errRand =    0.0;
	lineOffset = 	+8.787000000000000e+03
	sampOffset = 	+8.787000000000000e+03
	latOffset = 	+5.197788782488139e+01
	longOffset = 	+1.267276217581132e+02
	heightOffset = 	-3.665824527965528e+01
	lineScale = 	+8.787500000000000e+03
	sampScale = 	+8.787500000000000e+03
	latScale = 	+1.000000000000000e+01
	longScale = 	+1.000000000000000e+01
	heightScale = 	+5.036755360952578e+03
	lineNumCoef = (
		-2.489085287819830e-04,
		-1.114244712474867e+01,
		-6.168967195179680e+01,
		+7.117708104229436e-05,
		-1.395349820950307e-01,
		+8.696093392117951e-03,
		-9.575461257281814e-04,
		+7.734382012664702e-01,
		+2.574838134723002e-02,
		+5.070051498763076e-06,
		-5.809725628331042e-03,
		+5.140801824748853e-03,
		+4.289598645908305e-03,
		+2.294752920112858e-03,
		-9.015843957850683e-04,
		+1.035394535926532e-02,
		+1.232218463012144e-02,
		+3.230339260864579e-02,
		+1.047590959343009e-03,
		+2.012768440253724e-08);
	lineDenCoef = (
		+1.000000000000000e+00,
		+4.180010565216353e-04,
		+1.324655197657377e-02,
		-3.795304837771012e-05,
		+2.545365596961364e-01,
		-3.899350380745237e-04,
		+5.589868166444578e-05,
		+1.188681625956534e-03,
		+6.863241299655094e-01,
		-2.002690706130058e-04,
		-2.072288733039329e-04,
		+6.133069607160820e-03,
		-1.449422536681941e-03,
		-2.011485529779256e-06,
		+3.500482182174969e-03,
		+4.198143375537498e-04,
		-2.285845110305829e-06,
		-2.172369339810132e-04,
		-4.144345265331140e-04,
		-1.836223330071302e-09);
	sampNumCoef = (
		+3.116290493890969e-03,
		+3.762565560709448e+01,
		-1.780287250778219e+01,
		+4.667388215545534e-02,
		-1.418392610803636e+00,
		-4.579691619531623e-02,
		+3.030408501996984e-02,
		-5.911326661297898e-01,
		-2.781904253558995e+00,
		-9.782108549302553e-05,
		+1.239834648584903e-03,
		+1.999566996539736e-01,
		+6.939464036194087e-02,
		-4.737705433260331e-02,
		-2.858026398839704e-01,
		-9.898030356627813e-03,
		+2.240107912228240e-02,
		+2.526433759914681e-03,
		+4.945279318567586e-03,
		-5.870434133733310e-05);
	sampDenCoef = (
		+1.000000000000000e+00,
		+3.227373471194835e-01,
		+3.944306307994457e-02,
		-9.509654358749953e-03,
		+1.207778166635094e+01,
		-3.232572945854702e-02,
		+1.355313365456889e-02,
		-1.277420643579939e+01,
		-2.837944635154219e+00,
		-1.255397137925662e-03,
		+8.474582054034840e-02,
		+8.587278629665410e-03,
		+1.984850060313677e-02,
		-6.307604213724449e-04,
		+2.407506405453826e-02,
		-1.315252027876808e-02,
		+2.805758450086238e-05,
		-9.639541191512180e-02,
		-1.882857688509176e-02,
		+1.022672251679239e-05);
END_GROUP = IMAGE
END;

        rpc文件***.rpc格式示例:

LINE_OFF :+8.787000000000000e+03  pixels
SAMP_OFF : +8.787000000000000e+03  pixels
LAT_OFF : +5.197788782488139e+01   degrees
LONG_OFF:  +1.267276217581132e+02   degrees
HEIGHT_OFF: -3.665824527965528e+01   meters
LINE_SCALE: +8.787500000000000e+03  pixels
SAMP_SCALE:  +8.787500000000000e+03  pixels
LAT_SCALE: +1.000000000000000e+01   degrees
LONG_SCALE: +1.000000000000000e+01   degrees
HEIGHT_SCALE :+5.036755360952578e+03   meters
LINE_NUM_COEFF_1:-2.489085287819830e-04
LINE_NUM_COEFF_2:-1.114244712474867e+01
LINE_NUM_COEFF_3:-6.168967195179680e+01
LINE_NUM_COEFF_4:+7.117708104229436e-05
LINE_NUM_COEFF_5:-1.395349820950307e-01
LINE_NUM_COEFF_6:+8.696093392117951e-03
LINE_NUM_COEFF_7:-9.575461257281814e-04
LINE_NUM_COEFF_8:+7.734382012664702e-01
LINE_NUM_COEFF_9:+2.574838134723002e-02
LINE_NUM_COEFF_10:+5.070051498763076e-06
LINE_NUM_COEFF_11:-5.809725628331042e-03
LINE_NUM_COEFF_12:+5.140801824748853e-03
LINE_NUM_COEFF_13:+4.289598645908305e-03
LINE_NUM_COEFF_14:+2.294752920112858e-03
LINE_NUM_COEFF_15:-9.015843957850683e-04
LINE_NUM_COEFF_16:+1.035394535926532e-02
LINE_NUM_COEFF_17:+1.232218463012144e-02
LINE_NUM_COEFF_18:+3.230339260864579e-02
LINE_NUM_COEFF_19:+1.047590959343009e-03
LINE_NUM_COEFF_20:+2.012768440253724e-08
LINE_DEN_COEFF_1:+1.000000000000000e+00
LINE_DEN_COEFF_2:+4.180010565216353e-04
LINE_DEN_COEFF_3:+1.324655197657377e-02
LINE_DEN_COEFF_4:-3.795304837771012e-05
LINE_DEN_COEFF_5:+2.545365596961364e-01
LINE_DEN_COEFF_6:-3.899350380745237e-04
LINE_DEN_COEFF_7:+5.589868166444578e-05
LINE_DEN_COEFF_8:+1.188681625956534e-03
LINE_DEN_COEFF_9:+6.863241299655094e-01
LINE_DEN_COEFF_10:-2.002690706130058e-04
LINE_DEN_COEFF_11:-2.072288733039329e-04
LINE_DEN_COEFF_12:+6.133069607160820e-03
LINE_DEN_COEFF_13:-1.449422536681941e-03
LINE_DEN_COEFF_14:-2.011485529779256e-06
LINE_DEN_COEFF_15:+3.500482182174969e-03
LINE_DEN_COEFF_16:+4.198143375537498e-04
LINE_DEN_COEFF_17:-2.285845110305829e-06
LINE_DEN_COEFF_18:-2.172369339810132e-04
LINE_DEN_COEFF_19:-4.144345265331140e-04
LINE_DEN_COEFF_20:-1.836223330071302e-09
SAMP_NUM_COEFF_1:+3.116290493890969e-03
SAMP_NUM_COEFF_2:+3.762565560709448e+01
SAMP_NUM_COEFF_3:-1.780287250778219e+01
SAMP_NUM_COEFF_4:+4.667388215545534e-02
SAMP_NUM_COEFF_5:-1.418392610803636e+00
SAMP_NUM_COEFF_6:-4.579691619531623e-02
SAMP_NUM_COEFF_7:+3.030408501996984e-02
SAMP_NUM_COEFF_8:-5.911326661297898e-01
SAMP_NUM_COEFF_9:-2.781904253558995e+00
SAMP_NUM_COEFF_10:-9.782108549302553e-05
SAMP_NUM_COEFF_11:+1.239834648584903e-03
SAMP_NUM_COEFF_12:+1.999566996539736e-01
SAMP_NUM_COEFF_13:+6.939464036194087e-02
SAMP_NUM_COEFF_14:-4.737705433260331e-02
SAMP_NUM_COEFF_15:-2.858026398839704e-01
SAMP_NUM_COEFF_16:-9.898030356627813e-03
SAMP_NUM_COEFF_17:+2.240107912228240e-02
SAMP_NUM_COEFF_18:+2.526433759914681e-03
SAMP_NUM_COEFF_19:+4.945279318567586e-03
SAMP_NUM_COEFF_20:-5.870434133733310e-05
SAMP_DEN_COEFF_1:+1.000000000000000e+00
SAMP_DEN_COEFF_2:+3.227373471194835e-01
SAMP_DEN_COEFF_3:+3.944306307994457e-02
SAMP_DEN_COEFF_4:-9.509654358749953e-03
SAMP_DEN_COEFF_5:+1.207778166635094e+01
SAMP_DEN_COEFF_6:-3.232572945854702e-02
SAMP_DEN_COEFF_7:+1.355313365456889e-02
SAMP_DEN_COEFF_8:-1.277420643579939e+01
SAMP_DEN_COEFF_9:-2.837944635154219e+00
SAMP_DEN_COEFF_10:-1.255397137925662e-03
SAMP_DEN_COEFF_11:+8.474582054034840e-02
SAMP_DEN_COEFF_12:+8.587278629665410e-03
SAMP_DEN_COEFF_13:+1.984850060313677e-02
SAMP_DEN_COEFF_14:-6.307604213724449e-04
SAMP_DEN_COEFF_15:+2.407506405453826e-02
SAMP_DEN_COEFF_16:-1.315252027876808e-02
SAMP_DEN_COEFF_17:+2.805758450086238e-05
SAMP_DEN_COEFF_18:-9.639541191512180e-02
SAMP_DEN_COEFF_19:-1.882857688509176e-02
SAMP_DEN_COEFF_20:+1.022672251679239e-05

rpb文件读取(matlab)

        定义读取函数 rpb_reader.m:

function RPC=rpb_reader(f_in_name)
   %author  dou3516
   % 2024-1-13
   % 参考:https://blog.csdn.net/weixin_43955546/article/details/123702554
   % 读取遥感RPB文件,输入经纬度,获取经纬度值对象的像素坐标。
   %f_in_name: 输入RPB文件名称

    % 1 读取RPB文件内容
    fid1=fopen(f_in_name,'r');
    
    read_one_line = fgetl(fid1);
    read_one_line = fgetl(fid1);
    read_one_line = fgetl(fid1);
    read_one_line = fgetl(fid1);
    read_one_line = fgetl(fid1);
    temp=strsplit(read_one_line,{';','=',')',});
    errBias=str2double(temp(2));
    
    read_one_line = fgetl(fid1);
    temp=strsplit(read_one_line,{';','=',')',});
    errRand=str2double(temp(2));
    
    read_one_line = fgetl(fid1);
    temp=strsplit(read_one_line,{';','=',')',});
    RPC.line_off =str2double(temp(2));
    
    read_one_line = fgetl(fid1);
    temp=strsplit(read_one_line,{';','=',')',});
    RPC.samp_off=str2double(temp(2));
    
    read_one_line = fgetl(fid1);
    temp=strsplit(read_one_line,{';','=',')',});
    RPC.lat_off =str2double(temp(2));
    
    read_one_line = fgetl(fid1);
    temp=strsplit(read_one_line,{';','=',')',','});
    RPC.lon_off=str2double(temp(2));
    
    read_one_line = fgetl(fid1);
    temp=strsplit(read_one_line,{';','=',')',','});
    RPC.height_off=str2double(temp(2));
    
    
    read_one_line = fgetl(fid1);
    temp=strsplit(read_one_line,{';','=',')',','});
    RPC.line_scale=str2double(temp(2));
    
    read_one_line = fgetl(fid1);
    temp=strsplit(read_one_line,{';','=',')',','});
    RPC.samp_scale=str2double(temp(2));
    
    read_one_line = fgetl(fid1);
    temp=strsplit(read_one_line,{';','=',')',','});
    RPC.lat_scale =str2double(temp(2));
    
    read_one_line = fgetl(fid1);
    temp=strsplit(read_one_line,{';','=',')',','});
    RPC.lon_scale =str2double(temp(2));
    
    read_one_line = fgetl(fid1);
    temp=strsplit(read_one_line,{';','=',')',','});
    RPC.height_scale =str2double(temp(2));
    
    read_one_line = fgetl(fid1); 
    for i=1:20
         read_one_line = fgetl(fid1);
        temp=strsplit(read_one_line,{';','=',')',','});
        RPC.line_num_coeff(i)=str2double(temp(1));
    end
    read_one_line = fgetl(fid1); 
    for i=1:20
         read_one_line = fgetl(fid1);
        temp=strsplit(read_one_line,{';','=',')',','});
        RPC.line_den_coeff(i)=str2double(temp(1));
    end
     read_one_line = fgetl(fid1); 
    for i=1:20
         read_one_line = fgetl(fid1);
        temp=strsplit(read_one_line,{';','=',')',','});
        RPC.samp_num_coeff(i)=str2double(temp(1));
    end
     read_one_line = fgetl(fid1); 
    for i=1:20
         read_one_line = fgetl(fid1);
        temp=strsplit(read_one_line,{';','=',')',','});
        RPC.samp_den_coeff(i)=str2double(temp(1));
    end
    fclose(fid1);

        示例读取代码:

fRPB = '***.rpb';
RPC = rpb_reader(fRPB);

        读取到的RPC信息示例(注意不同于上述rpb文件的实际信息,仅做示例)如下:

参考:

遥感 RPC, RPB文件相关信息-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1388336.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uint32无符号字节转为Java中的int

文章目录 前言一、无符号字节转为int1.前置知识2.无符号转int代码3.Java中字节转为int 二、字节缓冲流1.基础知识2.String与ByteBuffer转换 总结 前言 Java 中基本类型都是有符号数值,如果接收到了 C/C 处理的无符号数值字节流,将出现转码错误。 提示&a…

多线程——CAS

什么是CAS CAS的全称:Compare and swap,字面意思就是:“比较并交换”,一个CAS涉及到以下操作: 假设内存中的原数据V,旧的预期值A,需要修改的新值B 1.比较A与V是否相等(比较&#xf…

SAP中采购文档价格条件可以删除吗?

首先要声名,基于采购价格条件的严谨性和历史追朔需求,删除属于危险操作。不建议普通用户去执行操作。如果有兴趣,在测试系统中自行测试一下即可。正式系统中,还请慎重处理。 笔者公司日常不会去删除采购价格,日常处理…

网页在线封装App的新兴应用技术

在当今快速发展的技术时代,移动应用(App)无疑成为了连接用户与服务的桥梁。随着市场上App数量的激增,开发者不断探索更高效、成本更低的应用开发方法。其中,网页在线封装App技术,作为一种创新手段&#xff…

行测:国考省考行测:语句表达,位置分析,语句分析,语句填空

国考省考行测:语句表达 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能,附带行测和申论,而常规国考省考最重要的还是申论和行测,所以大家认真准备吧,我讲一起屡屡申论和行测的重要知识点 遇到…

test0116测试2

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 磁盘满的本质分析 专栏:《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具…

Linux Mii management/mdio子系统分析之一 总体概述

Linux Mii management/mdio子系统分析之一 总体概述 (转载)原文链接:https://blog.csdn.net/u014044624/article/details/123303099 从本章开始,我们介绍linux的mii management对应的mdio子模块,该模块主要用于管理phy…

Java登录功能实现原理解密

目录 1、前言 2、登录功能介绍 3、前端实现 4、后端实现 5、数据库存储 6、加密和解密机制 7、安全性考虑 8、结语 1、前言 在Web开发中,登录功能是一个常见的需求。用户在登录页面输入用户名和密码后,系统会验证用户的身份信息,并根…

【文本到上下文 #6】高级词嵌入:Word2Vec、GloVe 和 FastText

一、说明 欢迎来到“完整的 NLP 指南。到目前为止,我们已经探索了自然语言处理的基础知识、应用程序和挑战。我们深入研究了标记化、文本清理、停用词、词干提取、词形还原、词性标记和命名实体识别。我们的探索包括文本表示技术,如词袋、TF-IDF 以及词嵌…

什么是高标准农田?为何要建设?该如何建设?

随着农业技术的不断进步,高标准农田成为了现代农业的标志之一。那么,什么是高标准农田?为何要建设高标准农田?如何建设高标准农田呢?接下来,我们将为您一一解答。 首先,我们来了解一下高标准农田…

【设计模式-3.3】结构型——享元模式

说明:说明:本文介绍设计模式中结构型设计模式中的,享元模式; 游戏地图 在一些闯关类的游戏,如超级玛丽、坦克大战里面,游戏的背景每一个关卡都不相同,但仔细观察可以发现,其都是用…

深入解析JavaScript中的变量作用域和闭包

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 JavaScript作为一门解释执行的脚本语言,其变量作用域与传统编译型语言…

Elasticsearch Windows部署-ELK技术栈

1、下载Elasticsearch、kibana、logstash 本文不介绍ELK相关原理知识,只记录部署操作过程 下载地址Past Releases of Elastic Stack Software | Elastic 选择同一版本,这里选择是当前最新版本8.11.3 解压放在同目录下,方便后续操作与使用 …

Linux网络文件共享服务

目录 一.文件存储类型 1.直连式存储:Direct-Attached Storage,简称DAS 2.存储区域网络:Storage Area Network,简称SAN(可以使用空间,管理也是你来管理) 3.网络附加存储:Network-…

卡尔曼滤波基本原理详解

卡尔曼滤波 卡尔曼滤波简介 卡尔曼滤波器(Kalman Filter)是一种高效的递推滤波器(即基于上一个时刻的估计来更新当前时刻的估计),它能够从一系列含有噪声的观测数据中估计动态系统的状态。它在1960年由鲁道夫卡尔曼提…

kubectl与 jq的另外一些用法

背景: 在日常运维工作中,我们需要管理和操作大量的配置文件,这在使用 Kubernetes 集群管理应用时尤为常见。Kubernetes 提供了一个名为 ConfigMap 的资源对象,它用于存储应用的配置信息。有时,我们需要查找哪些 Confi…

第二证券:旅游股大涨 “预热”春节黄金周

在淄博烧烤热、哈尔滨冰雪热火爆出圈后,希望能接住文旅下一波“泼天富贵”的各地文旅局各出奇招并“卷”出新高度,被各地网友谈论“杀疯了”。 其间,A股游览概念股迎来一波集体上涨,成为不少出资者的重视热点,而行将到…

【原创】docker +宝塔+安装zabbix

Zabbix: Zabbix可以监控各种网络服务、服务器和网络设备,而无需在目标设备上安装客户端。它的强大之处在于自带的Web界面,能够提供实时监控和各种报警功能。方法1: 步骤 创建Docker Compose文件: 首先,你需要创建一个docker-comp…

FFmpeg之AVFormat

文章目录 一、概述二、解封装流程三、重要结构体3.1、AVFormatContext3.2、AVInputFormat3.3、AVOutputFormat3.4、AVStream 四、重要函数分析4.1、avformat_alloc_context4.2、avformat_open_input4.2.1、init_input4.2.2、av_probe_input_format2 4.3、avformat_find_stream_…