zoukankan      html  css  js  c++  java
  • 关于GDAL的几何校正问题

    首先可以参照以下两处资料:

    http://wenku.baidu.com/view/508a46f0f90f76c661371a66
    http://www.cnblogs.com/flyingfish/archive/2007/09/12/890442.html

    不过我按照上述资料并没有成功,第一个资料中给出了可运行的源码,但是实际结果并没有做重采样,好像只是把原始数据copy了一份,仅对拷贝做了

    投影设置和仿射变换设置,真实数据没有重采样。

    第二个资料中博主给出的源码在我这里不能运行,每次均是运行到ChunkAndWarpImage/Multi函数处即出错。

    将第一个资料中的GenImgProjTransform/er替换为GCPTransform/er,可以对无坐标参考系统的裸数据进行校正,但是得不到正确的结果,可以看到结果被重采样了,

    空间坐标范围也正确,但是原始图像被缩小并集中到结果图像的左上角,目前我也不清楚是什么错误导致了这样的结果。

    我的解决办法是,由于GDAL支持2种类型的坐标系统,一种是仿射信息描述的,一种是GCP点描述的。给出GCP点之后,按照下面步骤操作:

    (1)将原始图像转换为GDAL可编辑更新的格式,以UPDATE方式打开;

    (2)将GCP点设置给原始图像,并将目标坐标系统WKT数据设置给原始图像,GDALFlushCache更新数据;

    (3)对原始数据做重投影变换,用到的变换类为:GDALCreateGenImgProjTransformer2/GDALGenImgProjTransform

    这样得到的结果不仅空间范围正确,并且也进行了重采样。

    其他一些细节:

    (1)如果将一幅1024*768的图像纠正到以下空间范围去:

                     40N

    100E                       120E

                    20N

    arcgis中GCP点的规则为:

    左上角:0,0->100E,40N

    左下角:0,-768->100E,20N

    右下角:1024,-768->120E,20N

    右上角:1024,0->120E,40N

    但是在GDAL中,GCP点的规则为:

    左上角:0,0->100E,40N

    左下角:0,768->100E,20N

    右下角:1024,768->120E,20N

    右上角:1024,0->120E,40N

    (2)GDAL仅支持1-3次多项式的GCP校正,多项式次数T与GCP点数量N的关系为(在使用GDALGCPTranform变换时需要指定):

    N=(T+1)*(T+2)/2

  • 相关阅读:
    sublime text3 安装SublimeCodeIntel插件
    进入博客园的第一天
    .NET之Hangfire快速入门和使用
    图片相似性 d-hash算法 C#实践
    同一个Docker swarm集群中部署多版本的测试环境
    C#创建单链表,翻转单链表
    halcon例程学习 一维测量之矩形边缘
    halcon例程学习 一维测量之弧形边缘
    python 圆曲线
    python pygame黑客帝国的简单实现
  • 原文地址:https://www.cnblogs.com/yeahgis/p/2946729.html
Copyright © 2011-2022 走看看