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


相关推荐

  • SPI中的极性CPOL和相位CPHA

    SPI中的极性CPOL和相位CPHA

    2021年9月8日
    90
  • Intellij Idea 创建JavaWeb项目入门(一)

    Idea创建JavaWeb项目步骤:1、打开IntellijIdeaIDE,然后点击CreateNewProject2、左侧选择JavaEnterprise,右侧选择WebApplication3、这里输入项目名字为firstdemo,然后点击Finish完成。生成如下的项目结构:项目配置:1、在web/WEB-INF下创建两个文件夹classes和…

    2022年4月5日
    230
  • f1 score计算_F1值

    f1 score计算_F1值F1分数(F1Score),是统计学中用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的精确率和召回率。F1分数可以看作是模型精确率和召回率的一种加权平均,它的最大值是1,最小值是0。1.TP、TN、FP、FN解释说明真实情况 预测结果 正例 反例 正例 TP(真正例) FN(假反例) 反例 FP(假正例) TN(真反例) 行表示预测的label值,列表示真实label值 TP:TruePositive,被判定为正样本,事实上也是

    2022年8月31日
    3
  • RJ45网线接口_千兆网线水晶头接几根线

    RJ45网线接口_千兆网线水晶头接几根线RJ45接口通常用于数据传输,最常见的应用为网卡接口。RJ45是各种不同接头的一种类型(例如:RJ11也是接头的一种类型,不过它是电话上用的)。  RJ45头根据线的排序不同,分为有两种T568A,T568B,T568B是橙白、橙、绿白、蓝、蓝白、绿、棕白、棕;T568A是绿白、绿、橙白、蓝、蓝白、橙、棕白、棕;因此使用RJ45接头的线也有两种即:直通线、交叉线。常见的RJ45接口有两类:用于以太网网卡、路由器以太网接口等的DTE类型,还有用于交换机等的DCE类型。DTE我们可以称做“数据终端设备

    2025年12月1日
    11
  • java单例模式案例,及单例体现的关键

    java单例模式案例,及单例体现的关键

    2021年7月16日
    73
  • webservice中文乱码处理_java取session乱码问题

    webservice中文乱码处理_java取session乱码问题javawebservice部分中文乱码解决,注意是部分乱码,不是全部哦!!!

    2022年10月9日
    2

发表回复

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

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