高分影像批处理第三回——RPC文件与几何校正

本文介绍了如何利用RPC文件对高分影像进行几何校正,详细阐述了从解析RPC文件到使用GDAL进行校正的步骤,探讨了GDAL在处理RPC信息时的注意事项,并对比了校正前后的效果。
摘要由CSDN通过智能技术生成

前言

前面两章部分完成了图像的基本组织和大气校正,可是对于遥感影像地理相关数据,精确的地理坐标也是非常关键的。L1级数据,可惜,并没有帮我们处理地理坐标系统。无论是打开ENVI还是用gdal工具查看图像元数据,其坐标系统都是错误的或者说是未读入的。

查阅了相关的资料和博客,尝试了一些方法。首先,使用了gdal工具直接赋值坐标系统和仿射变化。

def geoImformationProcess(inputpath,outputpath):
    dataset = gdal.Open(inputpath)
    basename = os.path.basename(inputpath)
    xmlpath = inputpath.replace('tiff', 'xml')
    DOMTree = xml.dom.minidom.parse(xmlpath)
    dom = DOMTree.documentElement
    # CenterLatitude = dom.getElementsByTagName('CenterLatitude')[0].firstChild.data 
    # CenterLongitude = dom.getElementsByTagName('CenterLongitude')[0].firstChild.data 
    TopLeftLatitude = eval(dom.getElementsByTagName('TopLeftLatitude')[0].firstChild.data)
    TopLeftLongitude = eval(dom.getElementsByTagName('TopLeftLongitude')[0].firstChild.data )
    BottomRightLatitude = eval(dom.getElementsByTagName('BottomRightLatitude')[0].firstChild.data )
    BottomRightLongitude = eval(dom.getElementsByTagName('BottomRightLongitude')[0].firstChild.data )
    LatDiff = abs(TopLeftLatitude - BottomRightLatitude)
    LonDiff = abs(TopLeftLongitude -BottomRightLongitude) 
    ResX =   LonDiff/dataset.RasterXSize
    ResY =  LatDiff/dataset.RasterYSize
    # dataset.SetGeoTransform([TopLeftLongitude,ResX,0,TopLeftLatitude,0,-ResY])
    
    srf = osr.SpatialReference()
    srf.ImportFromEPSG(4326)
    envi_driver= gdal.GetDriverByName('Gtiff')
    out_ds = envi_driver.CreateCopy(outputpath, dataset,1)
    out_ds.SetGeoTransform([TopLeftLongitude,ResX,0,TopLeftLatitude,0,-ResY])
    out_ds.SetSpatialRef(srf)
    out_ds.FlushCache()
    del out_ds,dataset

进行了以下操作:

  1. 获取图像的信息,边缘经纬度等
  2. 计算单个像元的分辨率
  3. 定义坐标系统,定义仿射变换
  4. 输出具有坐标系统的新图像

存在一些问题,

  • 图像是歪的,仿射信息还需要旋转角度
  • 根据经纬度差计算的单个像元的分辨率是有误差的
  • 原始的坐标系统未知
  • 等等

经过一段时间的查阅和学习后,找到了正确的方式:

文件里的rpb(多项式模型几何校正参数)不仅可以用来进行地形校正,也是可以用来几何校正。

RPC文件

rpc文件的基本描述说明可以参考以下网址,不再细节说明。

高分六号卫星影像预处理踩坑记录(一&

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值