• 使用GDAL图书馆RPC校正问题


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

    当指定DEM的採样方式为最邻近时,校正结果偏差非常大,当DEM採样方式为双线性採样和三次立方卷积採样时,处理的结果与之前的结果一样。截图如图1所看到的。红色区域为对照区域,如图2所看到的。


    图1 PCI校正结果全图


    图2  图1中的红色区域按实际像素放大显示结果

    以下是使用gdalwarp工具外加仿射修正模型进行校正的结果。首先使用DEM为最邻近採样,gdalwarp命令行例如以下:

    gdalwarp -of GTiff -tr 2.5 2.5 -t_srs ESRI::"D:WGS_1984_UTM_Zone_50N.prj" -rpc -r cubic -wm 1024 -to "RPC_AFFINE=-32.67376693 0.99919599 0.00013941 28.71988840 0.00062236 1.00004356" -to "RPC_DEM=D:Data正射纠正基础数据DEM数据eijing_all2.img" -to "RPC_DEMINTERPOLATION=near" D:Data711_214_26sep2006_p5SrcDataandf.tif D:andf_rpc1.tif --config GDAL_FILENAME_IS_UTF8 NO
    处理的结果与PCI结果对照方图3所看到的。

    图3  GDAL指定DEM插值为最邻近处理结果

    接下来指定DEM重採样方式为双线性。代码和处理结果例如以下:

    gdalwarp -of GTiff -tr 2.5 2.5 -t_srs ESRI::"D:WGS_1984_UTM_Zone_50N.prj" -rpc -r cubic -wm 1024 -to "RPC_AFFINE=-32.67376693 0.99919599 0.00013941 28.71988840 0.00062236 1.00004356" -to "RPC_DEM=D:Data正射纠正基础数据DEM数据eijing_all2.img" -to "RPC_DEMINTERPOLATION=bilinear" D:Data711_214_26sep2006_p5SrcDataandf.tif D:andf_rpc2.tif --config GDAL_FILENAME_IS_UTF8 NO
    处理的结果与PCI结果对照方图4所看到的。


    图4 GDAL指定DEM插值为双线性处理结果

    接下来指定DEM重採样方式为三次立方卷积,代码和处理结果例如以下:

    gdalwarp -of GTiff -tr 2.5 2.5 -t_srs ESRI::"D:WGS_1984_UTM_Zone_50N.prj" -rpc -r cubic -wm 1024 -to "RPC_AFFINE=-32.67376693 0.99919599 0.00013941 28.71988840 0.00062236 1.00004356" -to "RPC_DEM=D:Data正射纠正基础数据DEM数据eijing_all2.img" -to "RPC_DEMINTERPOLATION=cubic" D:Data711_214_26sep2006_p5SrcDataandf.tif D:andf_rpc3.tif --config GDAL_FILENAME_IS_UTF8 NO
    处理的结果与PCI结果对照方图5所看到的。

    图5 GDAL指定DEM插值为三次立方卷积处理结果

    改动GDAL源代码中的文件gdal_rpc.cpp两处地方,就是将GDT_Int32改动为GDT_Float64。原因非常easy就是变量dfDMEH是一个double类型。读取数据的时候也须要依照double类型进行读取,而原来的代码是依照Int32类型读取,导致读取出来的DEM高程值有问题。

    改动后代码见图6,共同拥有两处。坐标正变换和逆变换都须要改动。


    图6 改动后的GDAL代码

    改动后又一次编译GDAL就可以。使用改动后的程序,指定DEM插值为最邻近后处理的结果如图7。


    图7 改动后正射的结果对照
    已经将该问题反馈至GDAL开发组。详细地址为:http://trac.osgeo.org/gdal/ticket/5553。据预计,在未来的版本号会被纠正。

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    html websocket
    使用公钥进行远程登录主机/远程执行命令
    cropper.js 跨域问题
    利用PhantomJS生成网站截图
    Windows下的MySQL删除data文件夹后……
    快速设置环境变量
    压缩JS时生成source_map
    调试android chrome web page简明备忘
    CURL 简介【转载】
    一些同形异码字符
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4713039.html
Copyright © 2020-2023  润新知