大家好,欢迎来到IT知识分享网。
什么是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)。在成像期间,要拟合的数据由物理传感器模型生成。
更详细的了解参考:
rpb/rpc文件格式
rpb/rpc文件通常以文本文件或xml文件格式存储,对于国产高分数据多采用文本文件格式。
rpb文件*.rpb格式示例:
satId = "XXX"; bandId = "XXX"; SpecId = "XXX"; BEGIN_GROUP = IMAGE errBias = 1.0; errRand = 0.0; lineOffset = +8.0000e+03 sampOffset = +8.0000e+03 latOffset = +5.8139e+01 longOffset = +1.1132e+02 heightOffset = -3.5528e+01 lineScale = +8.0000e+03 sampScale = +8.0000e+03 latScale = +1.000000000000000e+01 longScale = +1.000000000000000e+01 heightScale = +5.0578e+03 lineNumCoef = ( -2.9830e-04, -1.4867e+01, -6.9680e+01, +7.9436e-05, -1.0307e-01, +8.7951e-03, -9.1814e-04, +7.4702e-01, +2.3002e-02, +5.0076e-06, -5.1042e-03, +5.8853e-03, +4.8305e-03, +2.2858e-03, -9.0683e-04, +1.0532e-02, +1.2144e-02, +3.4579e-02, +1.0009e-03, +2.0724e-08); lineDenCoef = ( +1.000000000000000e+00, +4.6353e-04, +1.7377e-02, -3.1012e-05, +2.1364e-01, -3.5237e-04, +5.4578e-05, +1.6534e-03, +6.5094e-01, -2.0058e-04, -2.0329e-04, +6.0820e-03, -1.1941e-03, -2.0256e-06, +3.4969e-03, +4.7498e-04, -2.5829e-06, -2.0132e-04, -4.1140e-04, -1.1302e-09); sampNumCoef = ( +3.0969e-03, +3.9448e+01, -1.8219e+01, +4.5534e-02, -1.3636e+00, -4.1623e-02, +3.0984e-02, -5.7898e-01, -2.8995e+00, -9.2553e-05, +1.4903e-03, +1.9736e-01, +6.4087e-02, -4.0331e-02, -2.9704e-01, -9.7813e-03, +2.8240e-02, +2.4681e-03, +4.7586e-03, -5.3310e-05); sampDenCoef = ( +1.000000000000000e+00, +3.4835e-01, +3.4457e-02, -9.9953e-03, +1.5094e+01, -3.4702e-02, +1.6889e-02, -1.9939e+01, -2.4219e+00, -1.5662e-03, +8.4840e-02, +8.5410e-03, +1.3677e-02, -6.4449e-04, +2.3826e-02, -1.6808e-02, +2.6238e-05, -9.2180e-02, -1.9176e-02, +1.0239e-05); END_GROUP = IMAGE END;
rpc文件*.rpc格式示例:
LINE_OFF :+8.0000e+03 pixels SAMP_OFF : +8.0000e+03 pixels LAT_OFF : +5.8139e+01 degrees LONG_OFF: +1.1132e+02 degrees HEIGHT_OFF: -3.5528e+01 meters LINE_SCALE: +8.0000e+03 pixels SAMP_SCALE: +8.0000e+03 pixels LAT_SCALE: +1.000000000000000e+01 degrees LONG_SCALE: +1.000000000000000e+01 degrees HEIGHT_SCALE :+5.0578e+03 meters LINE_NUM_COEFF_1:-2.9830e-04 LINE_NUM_COEFF_2:-1.4867e+01 LINE_NUM_COEFF_3:-6.9680e+01 LINE_NUM_COEFF_4:+7.9436e-05 LINE_NUM_COEFF_5:-1.0307e-01 LINE_NUM_COEFF_6:+8.7951e-03 LINE_NUM_COEFF_7:-9.1814e-04 LINE_NUM_COEFF_8:+7.4702e-01 LINE_NUM_COEFF_9:+2.3002e-02 LINE_NUM_COEFF_10:+5.0076e-06 LINE_NUM_COEFF_11:-5.1042e-03 LINE_NUM_COEFF_12:+5.8853e-03 LINE_NUM_COEFF_13:+4.8305e-03 LINE_NUM_COEFF_14:+2.2858e-03 LINE_NUM_COEFF_15:-9.0683e-04 LINE_NUM_COEFF_16:+1.0532e-02 LINE_NUM_COEFF_17:+1.2144e-02 LINE_NUM_COEFF_18:+3.4579e-02 LINE_NUM_COEFF_19:+1.0009e-03 LINE_NUM_COEFF_20:+2.0724e-08 LINE_DEN_COEFF_1:+1.000000000000000e+00 LINE_DEN_COEFF_2:+4.6353e-04 LINE_DEN_COEFF_3:+1.7377e-02 LINE_DEN_COEFF_4:-3.1012e-05 LINE_DEN_COEFF_5:+2.1364e-01 LINE_DEN_COEFF_6:-3.5237e-04 LINE_DEN_COEFF_7:+5.4578e-05 LINE_DEN_COEFF_8:+1.6534e-03 LINE_DEN_COEFF_9:+6.5094e-01 LINE_DEN_COEFF_10:-2.0058e-04 LINE_DEN_COEFF_11:-2.0329e-04 LINE_DEN_COEFF_12:+6.0820e-03 LINE_DEN_COEFF_13:-1.1941e-03 LINE_DEN_COEFF_14:-2.0256e-06 LINE_DEN_COEFF_15:+3.4969e-03 LINE_DEN_COEFF_16:+4.7498e-04 LINE_DEN_COEFF_17:-2.5829e-06 LINE_DEN_COEFF_18:-2.0132e-04 LINE_DEN_COEFF_19:-4.1140e-04 LINE_DEN_COEFF_20:-1.1302e-09 SAMP_NUM_COEFF_1:+3.0969e-03 SAMP_NUM_COEFF_2:+3.9448e+01 SAMP_NUM_COEFF_3:-1.8219e+01 SAMP_NUM_COEFF_4:+4.5534e-02 SAMP_NUM_COEFF_5:-1.3636e+00 SAMP_NUM_COEFF_6:-4.1623e-02 SAMP_NUM_COEFF_7:+3.0984e-02 SAMP_NUM_COEFF_8:-5.7898e-01 SAMP_NUM_COEFF_9:-2.8995e+00 SAMP_NUM_COEFF_10:-9.2553e-05 SAMP_NUM_COEFF_11:+1.4903e-03 SAMP_NUM_COEFF_12:+1.9736e-01 SAMP_NUM_COEFF_13:+6.4087e-02 SAMP_NUM_COEFF_14:-4.0331e-02 SAMP_NUM_COEFF_15:-2.9704e-01 SAMP_NUM_COEFF_16:-9.7813e-03 SAMP_NUM_COEFF_17:+2.8240e-02 SAMP_NUM_COEFF_18:+2.4681e-03 SAMP_NUM_COEFF_19:+4.7586e-03 SAMP_NUM_COEFF_20:-5.3310e-05 SAMP_DEN_COEFF_1:+1.000000000000000e+00 SAMP_DEN_COEFF_2:+3.4835e-01 SAMP_DEN_COEFF_3:+3.4457e-02 SAMP_DEN_COEFF_4:-9.9953e-03 SAMP_DEN_COEFF_5:+1.5094e+01 SAMP_DEN_COEFF_6:-3.4702e-02 SAMP_DEN_COEFF_7:+1.6889e-02 SAMP_DEN_COEFF_8:-1.9939e+01 SAMP_DEN_COEFF_9:-2.4219e+00 SAMP_DEN_COEFF_10:-1.5662e-03 SAMP_DEN_COEFF_11:+8.4840e-02 SAMP_DEN_COEFF_12:+8.5410e-03 SAMP_DEN_COEFF_13:+1.3677e-02 SAMP_DEN_COEFF_14:-6.4449e-04 SAMP_DEN_COEFF_15:+2.3826e-02 SAMP_DEN_COEFF_16:-1.6808e-02 SAMP_DEN_COEFF_17:+2.6238e-05 SAMP_DEN_COEFF_18:-9.2180e-02 SAMP_DEN_COEFF_19:-1.9176e-02 SAMP_DEN_COEFF_20:+1.0239e-05
rpb文件读取(matlab)
定义读取函数 rpb_reader.m:
function RPC=rpb_reader(f_in_name) %author dou3516 % 2024-1-13 % 参考:https://blog.csdn.net/weixin_/article/details/ % 读取遥感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博客
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/121749.html