【转帖】ArcEngine连接表join

【转帖】ArcEngine连接表join

http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=15012&extra=page%3D2

本例实现的是如何将地图中的一个FeatureLayer的属性表与另一个数据文件建立连接。
l   要点
首先需要定义两个ITable接口对象,分别用来获得地图中的属性表和需要连接的数据文件,再通过IMemoryRelationshipClassFactory.Open方法将两个ITable接口对象根据某个关键字段建立连接,
最后使用IDisplayRelationshipClass.DisplayRelationshipClass方法将显示该连接
主要用到IMemoryRelationshipClassFactory接口,IRelationshipClass接口和IDisplayRelationshipClass接口。
l   程序说明
函数Join是将当前激活的地图中名称为sLayerName的图层和路径为sFilePath、文件名为sFileName的文件按字段名为sFieldName的字段进行连接。
l   代码
Private Function Join(ByVal sLayerName As String, ByVal sFilePath As String, _ByVal sFileName As String, ByVal sFieldName As String) As Boolean
    Dim pMxDocument                     As IMxDocument
    Dim pMap                            As IMap
    Dim pWorkspaceFactory               As IWorkspaceFactory
    Dim pWorkspace                      As IWorkspace
    Dim pFeatureWorkspace               As IFeatureWorkspace
    Dim pFeatureLayer                   As IFeatureLayer
    Dim pFeatureClass                   As IFeatureClass
    Dim pPrimaryTable                   As ITable
    Dim pForeignTable                   As ITable
    Dim pDisplayTable                   As IDisplayTable
    Dim pMemoryRelationshipCF           As IMemoryRelationshipClassFactory
    Dim pRelationshipClass              As IRelationshipClass
    Dim pDisplayRelationshipC           As IDisplayRelationshipClass
    Dim nNumber                         As Integer
    Dim sForeignFile                    As String
On Error GoTo ErrorHandler:
    Join = False
    sForeignFile = Dir(sFilePath & “\” & sFileName)
    If (sForeignFile = “”) Then
        MsgBox “The ForeignFile is not exist.”
        Exit Function
    End If
    Set pWorkspaceFactory = New ShapefileWorkspaceFactory
    Set pWorkspace = pWorkspaceFactory.OpenFromFile(sFilePath, 0)
    Set pFeatureWorkspace = pWorkspace
    Set pForeignTable = pFeatureWorkspace.OpenTable(sFileName)
    Set pMxDocument = ThisDocument
    Set pMap = pMxDocument.FocusMap
    For nNumber = 0 To pMap.LayerCount – 1
        If pMap.Layer(nNumber).Name = sLayerName Then
            Set pFeatureLayer = pMap.Layer(nNumber)
            Exit For
        End If
    Next
    If pFeatureLayer Is Nothing Then
        MsgBox “No Layer’s Name is ” & sLayerName
        Exit Function
    End If
    Set pDisplayTable = pFeatureLayer
    Set pFeatureClass = pDisplayTable.DisplayTable
    Set pPrimaryTable = pFeatureClass
    Set pMemoryRelationshipCF = New MemoryRelationshipClassFactory
    Set pRelationshipClass = pMemoryRelationshipCF.Open(“TabletoLayer”, pPrimaryTable, sFieldName, _
                    pForeignTable, sFieldName, “forward”, “backward”, esriRelCardinalityOneToOne)
    Set pDisplayRelationshipC = pFeatureLayer
    pDisplayRelationshipC.DisplayRelationshipClass pRelationshipClass, esriLeftOuterJoin
    Join = True
    Exit Function
ErrorHandler:
    MsgBox Err.Description
End Function
Private Sub UIButtonControl1_Click()
    Dim pVBProject              As VBProject
On Error GoTo ErrorHandler:
    Set pVBProject = ThisDocument.VBProject
    Join “WorldCountries”, pVBProject.FileName & “\..\..\..\..” & “\data”, “Continents.dbf”, “FID”
    Exit Sub
ErrorHandler:
    MsgBox Err.Description
End Sub

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110441.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vm安装winme[通俗易懂]

    vm安装winme[通俗易懂]vm安装windowsme第一步,到msdn下载windowsme2.打开vm3.回到主页,点击创建新的虚拟机3.按典型4.下一步,按截图位置不要在c盘下一步完成h回车一直回车完整教程:https://www.bilibili.com/video/av9140535/我要去图书馆了,以后在把完整版发表…

    2022年9月28日
    0
  • 隐式转换函数_隐函数可以转化为显函数

    隐式转换函数_隐函数可以转化为显函数隐式转换函数是以implicit关键字声明的带有单个参数的函数。这种函数将会自动应用,将值从一种类型转换为另一种类型objectDemo1Main{defmain(args:Array[String]):Unit={valnum:Int=f1(3.5);valnum1:Int=3.5;print(num)}implic…

    2022年8月31日
    1
  • Object C中的数据类型表

    类型例子NSLogcharschar'a','\n'%cshortint—%hi,%hx,%hounsignedshortint%hu,

    2021年12月26日
    46
  • 树莓派4b OpenWrt做旁路由

    树莓派4b OpenWrt做旁路由主要分为以下几步:一、下载并刷入OpenWrt固件OpenWrt固件用的是Lean大的最新编译好的固件,按照正常的步骤在GitHub上下载并将二、进入路由器后台修改静态IP及相应的防火墙设置三、连接树莓派的wifi,并手动设置IP…

    2022年5月12日
    53
  • pytest指定用例_测试用例怎么编写

    pytest指定用例_测试用例怎么编写前言测试用例在设计的时候,我们一般要求不要有先后顺序,用例是可以打乱了执行的,这样才能达到测试的效果.有些同学在写用例的时候,用例写了先后顺序,有先后顺序后,后面还会有新的问题(如:上个用例返回

    2022年7月28日
    5
  • ❤️爆肝十二万字《python从零到精通教程》,从零教你变大佬❤️(建议收藏)[通俗易懂]

    ❤️爆肝十二万字《python从零到精通教程》,从零教你变大佬❤️(建议收藏)[通俗易懂]文章目录强烈推荐系列教程,建议学起来!!一.pycharm下载安装二.python下载安装三.pycharm上配置python四.配置镜像源让你下载嗖嗖的快4.1pycharm内部配置4.2手动添加镜像源4.3永久配置镜像源五.插件安装(比如汉化?)5.1自动补码神器第一款5.2汉化pycharm5.3其它插件六.美女背景七.自定义脚本开头八、这个前言一定要看九、python入门十、python缩进十一、Python注释1.单行注释2.多行注释十二、Python变量1.变量定义理解2.变量名命名3.分

    2022年6月9日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号