欢迎您来到GIS动力

加入收藏 免费注册 用户登陆 帮助中心
首页 新闻动态 技术专栏 银杏树下 学习考研 软件下载 求职招聘 许愿瓶 节日祝福 用户中心 精彩推荐 资源搜索 地图
专栏导航: AO开发 | SO开发 | ArcGIS桌面 | 超图桌面 | 开发语言 | 数据库 | WebGIS | 银杏文学 | 研究生考题 | FreeMap 谈天说地
   您现在位于: 首页技术专栏SuperMap应用与开发SO开发 → 正文
数据配准
07-11-02 09:51:42 作者: 出处:超图

功能简介:

    配准是GIS软件中处理栅格数据常用的一种操作,SuperMap Objects 为栅格数据集的配准提供了5种配准方法。该范例将详细的介绍如何就每一种配准方法进行栅格数据集的配准。这五种配准方法分别为矩形配准、线性配准、二项式配准、双二项式配准、立方配准,其中只有矩形配准不能通过配准对象soTransformation来实现,需要用soDatasetRaster的Register2来配准,其它的几种配准方式在接口上一样,只是用来配准的采样点的数目不同

数据来源:\..\Data\City3D目录下的city3d.sdb和city3d.sdd两个文件

    所用SuperMap Objects 组件、对象的主要属性和方法:

控  件 及 对 象  属  性 方  法
SuperWorkspace   OpenDatasource
SuperMap  TrackingLayer,Layers  
soDatasetRaster Register2  
soTrackingLayer EventCount,Event AddEvent,ClearEvents
soTransformation OriginalControlPoints,TargetControlPoints Rectify
soRect Top,Left,Bottom,Right  

功能实现:

  • 矩形配准

    栅格数据集自身提供了矩形配准的方法,soTransformation对象中的矩形配准还没有完善。实现的思路为:在目标图层上取两个点,也可不从图层上取点,自定义两个点也可以,根据这两个点构造一个矩形对象,然后调用objDatasetRaster.Register2进行配准。本范例是在SuperMap1的跟踪图层上添加两个点实例,根据这两个点来确定生成的矩形对象。矩形配准不进行重采样,也不生成新的数据集。

Dim objDtRaster As soDatasetRaster                     '被配准的栅格数据集
Dim bResult As Boolean                                 '配准结果成功变量
'取得要进行配准的影像数据集 
        
If SuperMap2.Layers.Item(1).Dataset.Vector = True Then
   MsgBox "没有栅格图数据集用来配准! ", vbInformation
   Exit Sub
Else
   Set objDtRaster = SuperMap2.Layers.Item(1).Dataset
End If
Dim objRect As New soRect                           
'配准的矩形对象    
'根据点实例生成配准矩形对象

objRect.Left = SuperMap1.TrackingLayer.Event(1).x    
objRect.Right = SuperMap1.TrackingLayer.Event(1).y
objRect.Bottom = SuperMap1.TrackingLayer.Event(2).x
objRect.Top = SuperMap1.TrackingLayer.Event(2).y
bResult = objDtRaster.Register2(objRect)            
'配准栅格数据集  
If bResult = False Then
   MsgBox "配准失败!", vbInformation
Else
   MsgBox "配准成功!", vbInformation
End If

  • 线型、二项式、双二项式、立方配准

    其它的几种配准方式在实现方法是一样的,区别在于配准点个数的不同和配准方法的差异。这几种配准方法要求有配准源点集合和目标点集合,本范例程序全部从SuperMap的跟踪图层上的点实例获得。如果跟踪图层上的点个数太多或太少就会出现错误,因此需要加判断语句。为了节约版面,在该说明中就不加错误判断语句了,具体的判断方法参考源程序。这几种方式的配准需要经过重采样,生成一个新的栅格数据集。

下面以线性配准方法为例介绍其它的配准模式,上面的图就是线性配准的结果图:

Dim MidPoint As New soPoint                                 '中间过渡点对象
Dim objTransformation As New soTransformation              
'配准对象
Dim i As Integer                                            
'生成配准目标点集合
For i = 1 To LsvTarget.ListItems.Count                      
   MidPoint.x = SuperMap1.TrackingLayer.Event(i).x          
   MidPoint.y = SuperMap1.TrackingLayer.Event(i).y          
   objTransformation.TargetControlPoints.Add MidPoint       
Next
'生成配准源点集合
For i = 1 To LsvSource.ListItems.Count                          
   MidPoint.x = SuperMap1.TrackingLayer.Event(i).x          
   MidPoint.y = SuperMap1.TrackingLayer.Event(i).y          
   objTransformation.OriginalControlPoints.Add MidPoint
Next
Dim objDS As soDataSource                                  
'保存结果数据集的数据源对象
Dim objDtRaster As soDatasetRaster              '用来配准的栅格数据集
Dim bResult As Boolean                                          '配准成功判断变量    
'取得要进行配准的影像数据集,和用来保存配准结果数据集的数据源
If SuperMap2.Layers.Item(1).Dataset.Vector = True Then
   MsgBox "没有栅格图数据集用来配准! ", vbInformation
   Exit Sub
Else
   Set objDtRaster = SuperMap2.Layers.Item(1).DatasetSet 
   objDS = SuperWorkspace1.DataSources(objDtRaster.DataSourceAlias)
End If
Dim strNewDatasetName As String
'生成保存新数据集的名称
strNewDatasetName = InputBox("请输入新数据集名")
If Not objDS.IsAvailableDatasetName(strNewDatasetName) Then 
  MsgBox "数据集名非法!", vbInformation
  Exit Sub
End If
If Trim(strNewDatasetName) = "" Then Exit Sub
'重采样新型线性配准
bResult = objTransformation.Rectify(objDtRaster, objDS, strNewDatasetName, sctLinear )
If bResult = False Then
  MsgBox "配准失败!", vbInformation
Else
  MsgBox "配准成功!", vbInformation
End If

    在生成配准点的过程中用到了许多SuperMap库中soTrackingLayer对象的基本方法,如:AddEvent、RemoveEvent、ClearEvents,还用到了soGeoEvent的x、y、MoveTo 等方法。


(本文已被浏览 次)
发布人:admin
推荐给好友:发送给好友
上篇新闻:
下篇新闻:
相关评论
发表我的评论
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  •   相关文章  

    关于我们 友情链接 ┋ 与我在线 ┋ 管理 ┋ TOP
    网站当前版本:GisPower CMS V3.0
    『GIS 动力』- http://www.gispower.org/
    联系我们:webmaster#gispower.org
    Copyright (c) 2003-2007 GisPOwer.Org. All Rights Reserved.

                   滇ICP备05006901号