欢迎您来到GIS动力

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

功能简介:

    演示SuperMap Objects 的数据集裁剪,包括"圆形裁剪"、"矩形裁剪"、"多边形裁剪"。裁剪分为裁剪区域内的对象(裁剪方法)和裁剪区域外的对象(擦除方法)。其实进行的就是GIS的叠加分析功能

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

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

控  件 及 对 象 属  性 方  法
SuperWorkspace   OpenDatasource
SuperMap  TrackingLayer  
soOverlayAnalyst   Clip,Erase

功能实现:

 

  • 数据集裁剪

    SuperMap给大家提供的数据集剪裁有"圆形裁剪"、"矩形裁剪"、"多边形裁剪"三种方式,这三种方式的剪裁模式基本相同,过程如下所示。唯一不同的就是用来剪裁的对象不同,即在获取面状几何对象之前设置的SuperMap的操作状态不一样。

1、圆形裁剪:   SuperMap.Action = scaTrackCircle    ;
2、矩形裁剪:   SuperMap.Action = scaTrackRectangle ;
3、多边形裁剪: SuperMap.Action = scaTrackPolygon   ;

    在SuperMap.TrackingLayer上绘制完几何对象后,把下面的代码放在Private Sub SuperMap_Tracked()事件中,用来接受裁剪几何对象。

Dim objRegion As soGeoRegion      '裁剪区域
Dim objDataSrc As soDataSource   
'目标数据源
Dim objDataSet As soDataset       '源数据集(被裁剪的数据集)
Dim objDataSetRes As soDataset    '目标数据集
Dim objOverlayAnalyst As New soOverlayAnalyst '进行叠加分析的对象,一定要有NEW 关键字
Dim bResult As Boolean
Dim strName As String
'取得目标数据源
Set objDataSrc = frmMain.SuperWorkspace.Datasources.Item(cmbDSName.Text)
'取得用户在地图上画的裁剪对象
Set objRegion = frmMain.SuperMap.TrackedGeometry
'取得源数据集(被裁剪图层的数据集):先取得数据集名称,再获得数据集
strName = Left$(lblSourceLayerName.Caption, InStr(lblSourceLayerName.Caption, "@") - 1)
Set objDataSet = frmMain.SuperMap.Layers.Item(lblSourceLayerName.Caption).Dataset
'目标数据集
If chkNewDtName.Value = 1 Then '存入新数据集
   
'创建新数据集
    If objDataSrc.IsAvailableDatasetName(txtNewDtName.Text) Then
'合法数据集名
            Set objDataSetRes = objDataSrc.CreateDataset(txtNewDtName.Text, objDataSet.Type, 0)
    Else
'新数据集名非法
           
MsgBox "新数据集名非法", vbInformation
            txtNewDtName.SetFocus
            Exit Sub
    End If
Else
'用户不使用新数据集
   
Set objDataSetRes = objDataSrc.Datasets.Item(cmbDtName.Text)
End If
If optIn.Value = True Then     
'裁剪区域内的对象(裁剪方法)
   
bResult = objOverlayAnalyst.Clip(objDataSet, objRegion, objDataSetRes)
ElseIf optOut.Value = True Then
'裁剪区域外的对象(擦除方法)
   
bResult = objOverlayAnalyst.Erase(objDataSet, objRegion, objDataSetRes)
End If
'成功后把它加入到地图窗口中
frmMain.SuperMap.Layers.AddDataset objDataSetRes, True


(本文已被浏览 次)
发布人: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号