【转帖】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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java课程设计-多人聊天工具(socket+多线程)

    大一下学期的java期末课程设计,分享一下文章目录课设要求相关知识点类图项目框架核心代码1.服务器端Server.java课设要求多人聊天工具服务器要求1:能够看到所有在线用户(25%)服务器要求2:能够强制用户下线(25%)客户端要求1:能够看到所有在线用户(25%)客户端要求2:能够向某个用户发送消息(25%)相关知识点1.服务端能够看到所有在线用户服务端继承了JFrame,实现可视化,通过socket实现服务端与客户端的连接,服务端每接收一个连接,把传进来的用户名和对应的s.

    2022年4月7日
    60
  • python的缩进规则具体是什么_python语言中的缩进

    python的缩进规则具体是什么_python语言中的缩进python的缩进规则有哪些发布时间:2020-09-2315:18:50来源:亿速云阅读:70作者:Leah本篇文章给大家分享的是有关python的缩进规则有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一般的语言都是通过{}或end来作为代码块的标记,而Python则是通过缩进来识别代码块的。对于Python的这种“缩进”风…

    2022年10月13日
    5
  • hashmap和hashtable的区别,说法错误的是_javamap的用法

    hashmap和hashtable的区别,说法错误的是_javamap的用法HashMap和Hashtable的区别一、HashMap简介HashMap是在JDK1.2中引入的Map的实现类。1.HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。2.HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurren…

    2022年9月18日
    5
  • C#中splitContainer用法

    C#中splitContainer用法在这个例子中,最上方是一个menustrip控件,其下市toolstrip控件,添加为快捷按钮。中间区域是一个splitcontainer,分为panel1和panel2.(1)IsMdiContainer–>true(2)splitContainer的具体用法:a)他不能直接用鼠标点击选中,只能右击-》选中splitContainerb)此时我们的窗体不

    2022年7月18日
    28
  • 电脑使用哪个录制视频软件比较好

    电脑使用哪个录制视频软件比较好如今社会从一个开放的年代发展为开放的信息时代,人们对于自我表达越发的大胆。追求标新立意,而视频正好迎合了人群的需要。视频的表现方式比图纸更加直观具有冲击力,更展现更加生动丰富的内容。想要录制视频其实不难,只需要一款专业的录制视频软件就可以帮搜我们达到我们想要的效果。使用工具:电脑(有网络)迅捷屏幕录像工具操作步骤:1、首先电脑在线进入百度浏览器搜索迅捷屏幕录像,并且安装在电脑上进行运行。…

    2022年6月16日
    27
  • 电容类别及封装形式_电容的种类和应用范围

    电容类别及封装形式_电容的种类和应用范围按介质分为:陶瓷、云母、纸质、薄膜、电解电容电解电容一般铝电解电容和钽电容,单片机晶振旁边的是独石电容1法拉=103毫法=106微法=109纳法=1012皮法;1pf=10-3nf=10-6uf=10-9mf钽电容封装:电解电容插件封装…

    2022年8月22日
    6

发表回复

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

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