中国地图
GIS探索者
地图网
GIS论坛
网站首页| GIS论坛 |新闻动态 | 技术专栏 | GIS书籍 | 资源下载 | 求职招聘 | 研究生考试 | GIS博客 | GIS空间站
欢迎光临GIS空间站!   网站地图
  专栏导航:| ArcGIS | MapInfo | TopMap | 地理信息 | 遥感 | GPS | 测绘 | WebGIS | LBS | 前沿 | 数据库 | 开发 | 行业应用
  推荐栏目:| AO开发 | 业界动态 | GIS资源 | 招聘信息 | 求职简历 | 共享软件 | 电子书籍 | 研究生考题 | 电子期刊 | GIS论文
您现在的位置: GIS空间站 >> 技术专栏 >> ArcGIS >> 文章正文

兔八哥用VB+AO写的Merge Layer程序

作者:兔八哥    文章来源:GIS空间站    点击数:    更新时间:2006-7-1
TopMap活动
ArcGIS中提供两个合并图层的工具,Append和Merge Layer.可惜,Append只能处理Coverage.而要使用Merge Layer就不得不打开庞大的ArcMap.甚至还要将合并的图层加进去。这样效率都是很低的。兔八哥写了点小东西,测试一下居然通过了,也共享给大家吧。提供Merge Layer的应用程序,没有经过严格测试和错误处理哦。此外提供Merge函数,你可以改一改,就可以处理Geodatabase(目前只写了shapefile的处理),还可以实现将某一个目录下的所有数据进行合并什么的。自己发挥一下想象吧。下载DEMO程序
Public Function Merge(pathLayer1 As String, pathLayer2 As String, pathMergeResult As String, _
nameLayer1 As String, nameLayer2 As String, nameMergeResult As String)

' 分别读取图层一,图层二到FeatureClass和Table中
Dim pWorkspaceFactory As IWorkspaceFactory
Dim pWorkspace1 As IFeatureWorkspace
Dim pWorkspace2 As IFeatureWorkspace

Dim pFirstFeatClass As IFeatureClass
Dim pSecondFeatClass As IFeatureClass
Dim pFirstTable As Itable
Dim pSecondTable As Itable

Dim pFeatLayer1 As IFeatureLayer
Set pFeatLayer1 = New FeatureLayer

Dim pFeatLayer2 As IFeatureLayer
Set pFeatLayer2 = New FeatureLayer

Set pWorkspaceFactory = New ShapefileWorkspaceFactory
Set pWorkspace1 = pWorkspaceFactory.OpenFromFile(pathLayer1, 0)
Set pWorkspace2 = pWorkspaceFactory.OpenFromFile(pathLayer2, 0)

Set pFirstFeatClass = pWorkspace1.OpenFeatureClass(nameLayer1)
Set pSecondFeatClass = pWorkspace2.OpenFeatureClass(nameLayer2)

Set pFeatLayer1.FeatureClass = pFirstFeatClass
Set pFirstTable = pFeatLayer1
Set pFeatLayer2.FeatureClass = pSecondFeatClass
Set pSecondTable = pFeatLayer2

' 检查错误
If pFirstTable Is Nothing Then
 MsgBox "Table QI failed"
 Exit Function
End If

If pSecondTable Is Nothing Then
 MsgBox "Table QI failed"
 Exit Function
End If

' 定义输出要素类名称和shape类型
Dim pFeatClassName As IFeatureClassName
Set pFeatClassName = New FeatureClassName

With pFeatClassName
.FeatureType = esriFTSimple
.ShapeFieldName = "Shape"
.ShapeType = pFirstFeatClass.ShapeType
End With

' 定义输出shapefile位置与名称
Dim pNewWSName As IWorkspaceName
Set pNewWSName = New WorkspaceName

With pNewWSName
.WorkspaceFactoryProgID = "esriCore.ShapefileWorkspaceFactory"
.PathName = pathMergeResult
End With

Dim pDatasetName As IDatasetName
Set pDatasetName = pFeatClassName
pDatasetName.Name = nameMergeResult

Set pDatasetName.WorkspaceName = pNewWSName

' 定义Merge参数
Dim inputArray As Iarray
Set inputArray = New esriCore.Array
inputArray.Add pFirstTable
inputArray.Add pSecondTable

' 进行Merge操作
Dim pBGP As IBasicGeoprocessor
Set pBGP = New BasicGeoprocessor
Dim pOutputFeatClass As IFeatureClass
Set pOutputFeatClass = pBGP.Merge(inputArray, pFirstTable, pFeatClassName)


End Function

文章录入:gissky    责任编辑:gissky  发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
■■相 关 图 书:
■■相 关 文 章:
  • ArcGIS以工作流的方式处理GIS到CAD格式的数据转换

  • ArcGIS 9.2中时态GIS的应用

  • 易康-eCogntion最新版本培训资料

  • eCognition软件如何提取建筑物

  • 基于面向对象分类与基于像素分类对比

  • eCognition 在生态遥感监测中的应用

  • ArcGIS Server9.3用户新体验

  • 上一篇文章:

  • 下一篇文章:
  •  
    GIS博客精华
    热点文章
    热门资源
     
    关于我们 | 联系我们 | 广告服务 | 友情链接 | 申请链接 | 合作联盟 | 诚聘英才
      GIS空间站(GISSky.Net)版权所有 站长:兔八哥