配准 主要使用IGeoReference这个接口来完成工作。
还有使用ActiveView来进行坐标转换,将MapControl中鼠标的点击位置 转换为
地图和影像图上的坐标。
下面介绍IGeoReference接口
首先RasterLayer实现了这个接口
CanGeoRef 监测该图层是否可以做配准
PointsTransform 将鼠标的位置 转换为栅格文件上的相对坐标。
Rectify 将纠正的结果保存为一个新的栅格文件 相当于另存为
Register 纠正的结果生成World文件 和栅格文件保存在同一个目录下
Reset 取消纠正 但是Register 之前的操作不能恢复。
最重要的是下面三个
Shift 一点纠正 就是平移
TwoPointsAdjust 两点配准 有一定的缩放
Warp 三点或以上配准
注意事项
1.每次Register是一个标志阶段
这每次配准的过程中 必须把上次Register 以来的所有配准点数据都使用上。
例如:
首先Register了
然后 1.使用了一点平移
2.接下来 又接受了一个点 这个时候就要使用 两点配准。
3.接下来 又接受了一个点 这个时候就要使用 三点配准了。
下面说关于配准残差。调用IRasterGeometryProc接口下的LeastSquareFit函数,可以返回一个variant对象,声明一个类型为oleType.Variant的对象,然后获得返回的值。是一个二维double数组,声明一个二维数组,把object显示转换就能得到值了
另外今天感觉到了c#的威力了,声明一个二维动态数组是如此简单,想当年在c++里可是要折腾好长时间的呢
double[,]即可,感觉就跟人的思维一样了,以后估计是个人人都可以编程的时代了,要失业罗
ILayer转换到IRasterLayer的时候要注意这个layer是否能转换过去