示例#1
0
 public static bool TableIsRelateLayer(ITable itable_0, ITable itable_1)
 {
     try
     {
         IRelationshipClassCollection classs = itable_0 as IRelationshipClassCollection;
         if (classs != null)
         {
             IEnumRelationshipClass class2 = classs.FindRelationshipClasses(itable_1 as IObjectClass,
                                                                            esriRelRole.esriRelRoleAny);
             class2.Reset();
             if (class2.Next() != null)
             {
                 return(true);
             }
         }
         return(false);
     }
     catch (COMException exception)
     {
         MessageBox.Show(exception.Message, "COM Error: " + exception.ErrorCode.ToString(), MessageBoxButtons.OK,
                         MessageBoxIcon.Exclamation);
     }
     catch (Exception exception2)
     {
         MessageBox.Show(exception2.Message, ".NET Error: ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
     }
     return(false);
 }
示例#2
0
        private void processRelates(IFeatureLayer flyr)
        {
            string res          = "";
            string destName     = "";
            string destServer   = "";
            string destInstance = "";
            string destUser     = "";
            IRelationshipClassCollection relClassColl = (IRelationshipClassCollection)flyr;
            IEnumRelationshipClass       enumRelClass = relClassColl.RelationshipClasses;

            enumRelClass.Reset();
            IRelationshipClass relClass = enumRelClass.Next();

            while (relClass != null)
            {
                IDataset dset      = (IDataset)relClass;
                ITable   destTable = (ITable)relClass.DestinationClass;
                IDataset dsetDest  = (IDataset)destTable;
                destName     = dsetDest.Name;
                destServer   = dsetDest.Workspace.ConnectionProperties.GetProperty("server").ToString();
                destInstance = dsetDest.Workspace.ConnectionProperties.GetProperty("instance").ToString();
                destUser     = dsetDest.Workspace.ConnectionProperties.GetProperty("user").ToString();
                res          = res + "(" + destName + "/" + destServer + "/" + destInstance + "/" + destUser + "/" + relClass.OriginPrimaryKey + "/" + relClass.OriginForeignKey + "/" + dset.BrowseName + ")";
                relClass     = enumRelClass.Next();
            }

            relateinfo = res;
        }
示例#3
0
        private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
        {
            //在地块图层获得关系类
            IFeatureClass          pFeatClass             = pParcelFeatLayer.FeatureClass;
            IObjectClass           pObjectClass           = pFeatClass as IObjectClass;
            IEnumRelationshipClass pEnumRelationshipClass = pObjectClass.get_RelationshipClasses(esriRelRole.esriRelRoleOrigin);

            pEnumRelationshipClass.Reset();
            IRelationshipClass pRelationshipClass = pEnumRelationshipClass.Next();
            IRow         pOwnerRow;
            IFeature     pParcelFeature;
            AxMapControl axMap = pMainFrm.getMapControl();

            for (int i = 0; i <= pFeatArray.Count - 1; i++)
            {
                pParcelFeature = pFeatArray.get_Element(i) as IFeature;
                ISet pRelatedSet = pRelationshipClass.GetObjectsRelatedToObject(pParcelFeature);
                pRelatedSet.Reset();
                pOwnerRow = pRelatedSet.Next() as IRow;

                if (pOwnerRow != null)
                {
                    if (pOwnerRow.get_Value(pOwnerRow.Fields.FindField("TMK")).ToString() == e.Item.Text)
                    {
                        Utility.FlashFeature(pParcelFeature, axMap.ActiveView.FocusMap);
                        break;
                    }
                }
            }
        }
示例#4
0
        /// <summary>
        ///     Creates an <see cref="IEnumerable{T}" /> from an <see cref="IEnumRelationshipClass" />
        /// </summary>
        /// <param name="source">An <see cref="IEnumRelationshipClass" /> to create an <see cref="IEnumerable{T}" /> from.</param>
        /// <returns>An <see cref="IEnumerable{T}" /> that contains the relationship classes from the input source.</returns>
        public static IEnumerable <IRelationshipClass> AsEnumerable(this IEnumRelationshipClass source)
        {
            if (source != null)
            {
                source.Reset();
                IRelationshipClass relationshipClass = source.Next();
                while (relationshipClass != null)
                {
                    yield return(relationshipClass);

                    relationshipClass = source.Next();
                }
            }
        }
示例#5
0
        private void btnRemoveRelating_Click(object sender, EventArgs e)
        {
            try
            {
                IRelationshipClassCollection classs = this.itable_0 as IRelationshipClassCollection;
                IEnumRelationshipClass       relationshipClasses = classs.RelationshipClasses;
                relationshipClasses.Reset();
                string             str = this.RelatingDataList.SelectedItem.ToString();
                IRelationshipClass relationshipClass = relationshipClasses.Next();
                while (relationshipClass != null)
                {
                    if (str == (relationshipClass as IDataset).Name)
                    {
                        goto Label_0075;
                    }
                    relationshipClass = relationshipClasses.Next();
                }
                if (this.OnJoinAndRelationChange != null)
                {
                    this.OnJoinAndRelationChange();
                }
                return;

Label_0075:
                (classs as IRelationshipClassCollectionEdit).RemoveRelationshipClass(relationshipClass);
                this.RelatingDataList.Items.Clear();
                this.method_2(this.itable_0);
                if (this.RelatingDataList.Items.Count > 0)
                {
                    this.btnRemoveAllRelating.Enabled = true;
                }
                else
                {
                    this.btnRemoveAllRelating.Enabled = false;
                }
            }
            catch (COMException exception)
            {
                MessageBox.Show(exception.Message, "COM Error: " + exception.ErrorCode.ToString(), MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation);
            }
            catch (Exception exception2)
            {
                MessageBox.Show(exception2.Message, ".NET Error: ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
示例#6
0
 private void method_1(IEnumRelationshipClass ienumRelationshipClass_0, IObject iobject_0, TreeNode treeNode_0,
                       bool bool_3)
 {
     ienumRelationshipClass_0.Reset();
     for (IRelationshipClass class2 = ienumRelationshipClass_0.Next();
          class2 != null;
          class2 = ienumRelationshipClass_0.Next())
     {
         try
         {
             IObjectClass destinationClass;
             if (bool_3)
             {
                 destinationClass = class2.DestinationClass;
             }
             else
             {
                 destinationClass = class2.OriginClass;
             }
             TreeNode node = new TreeNode(destinationClass.AliasName)
             {
                 Tag = destinationClass
             };
             ISet objectsRelatedToObject = class2.GetObjectsRelatedToObject(iobject_0);
             objectsRelatedToObject.Reset();
             for (IRowBuffer buffer = objectsRelatedToObject.Next() as IRowBuffer;
                  buffer != null;
                  buffer = objectsRelatedToObject.Next() as IRowBuffer)
             {
                 TreeNode node2 = new TreeNode(buffer.get_Value(0).ToString())
                 {
                     Tag = buffer
                 };
                 node.Nodes.Add(node2);
             }
             if (node.Nodes.Count > 0)
             {
                 treeNode_0.Nodes.Add(node);
             }
         }
         catch (Exception exception)
         {
             exception.ToString();
         }
     }
 }
示例#7
0
        //上朔追踪列出所有地块
        private void UpstreamCreateOwnerList(IFeatureLayer pParcelFeatLayer, IArray pFeatArray)
        {
            listView1.Columns.Clear();
            listView1.Items.Clear();
            listView1.Columns.Add("物主", 50, HorizontalAlignment.Left);
            listView1.Columns.Add("地址", 50, HorizontalAlignment.Center);
            listView1.Columns.Add("街道", 50, HorizontalAlignment.Center);
            listView1.Columns.Add("城市", 50, HorizontalAlignment.Center);
            listView1.Columns.Add("邮编", 50, HorizontalAlignment.Center);

             
            //在地块图层获得关系类
            IFeatureClass          pFeatClass             = pParcelFeatLayer.FeatureClass;
            IObjectClass           pObjectClass           = pFeatClass as IObjectClass;
            IEnumRelationshipClass pEnumRelationshipClass = pObjectClass.get_RelationshipClasses(esriRelRole.esriRelRoleOrigin);

            pEnumRelationshipClass.Reset();
            IRelationshipClass pRelationshipClass = pEnumRelationshipClass.Next();
            IRow pOwnerRow;

            for (int i = 0; i <= pFeatArray.Count - 1; i++)
            {
                IFeature pParcelFeature = pFeatArray.get_Element(i) as IFeature;
                ISet     pRelatedSet    = pRelationshipClass.GetObjectsRelatedToObject(pParcelFeature);
                pRelatedSet.Reset();
                pOwnerRow = pRelatedSet.Next() as IRow;

                if (pOwnerRow != null)
                {
                    ListViewItem item = new ListViewItem();

                    item.SubItems.Clear();
                    item.SubItems[0].Text = pOwnerRow.get_Value(pOwnerRow.Fields.FindField("TMK")).ToString();

                    item.SubItems.Add(pOwnerRow.get_Value(pOwnerRow.Fields.FindField("ADDR")).ToString());

                    item.SubItems.Add(pOwnerRow.get_Value(pOwnerRow.Fields.FindField("STREET")).ToString());

                    item.SubItems.Add(pOwnerRow.get_Value(pOwnerRow.Fields.FindField("CITY")).ToString());

                    item.SubItems.Add(pOwnerRow.get_Value(pOwnerRow.Fields.FindField("ZIP")).ToString());

                    listView1.Items.Add(item);
                }
            }
        }
示例#8
0
 private void method_2(ITable itable_1)
 {
     try
     {
         IRelationshipClassCollection classs = itable_1 as IRelationshipClassCollection;
         IEnumRelationshipClass       relationshipClasses = classs.RelationshipClasses;
         relationshipClasses.Reset();
         for (IRelationshipClass class3 = relationshipClasses.Next();
              class3 != null;
              class3 = relationshipClasses.Next())
         {
             this.RelatingDataList.Items.Add(new ObjectWrap(class3));
         }
     }
     catch (COMException exception)
     {
         MessageBox.Show(exception.Message, "COM Error: " + exception.ErrorCode.ToString(), MessageBoxButtons.OK,
                         MessageBoxIcon.Exclamation);
     }
     catch (Exception exception2)
     {
         MessageBox.Show(exception2.Message, ".NET Error: ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
     }
 }
示例#9
0
        private void AddReleationClass(IFeature pFeature, TreeNode pParentNode)
        {
            IRelationshipClass     class3;
            IObjectClass           destinationClass;
            TreeNode               node;
            IEnumRelationship      relationshipsForObject;
            IRelationship          relationship2;
            TreeNode               node2;
            IEnumRelationshipClass class2 = pFeature.Class.get_RelationshipClasses(esriRelRole.esriRelRoleOrigin);

            class2.Reset();
            for (class3 = class2.Next(); class3 != null; class3 = class2.Next())
            {
                destinationClass = class3.DestinationClass;
                if (this.CheckIsEdit(destinationClass as IDataset))
                {
                    node = new TreeNode(destinationClass.AliasName)
                    {
                        Tag = destinationClass
                    };
                    relationshipsForObject = class3.GetRelationshipsForObject(pFeature);
                    relationshipsForObject.Reset();
                    relationship2 = relationshipsForObject.Next();
                    while (relationship2 != null)
                    {
                        if (relationship2.DestinationObject != null)
                        {
                            node2 = new TreeNode(relationship2.DestinationObject.OID.ToString())
                            {
                                Tag = relationship2.DestinationObject
                            };
                            node.Nodes.Add(node2);
                        }
                        relationship2 = relationshipsForObject.Next();
                    }
                    if (node.Nodes.Count > 0)
                    {
                        pParentNode.Nodes.Add(node);
                    }
                }
            }
            class2 = pFeature.Class.get_RelationshipClasses(esriRelRole.esriRelRoleDestination);
            class2.Reset();
            for (class3 = class2.Next(); class3 != null; class3 = class2.Next())
            {
                destinationClass = class3.OriginClass;
                if (this.CheckIsEdit(destinationClass as IDataset))
                {
                    node = new TreeNode(destinationClass.AliasName)
                    {
                        Tag = destinationClass
                    };
                    relationshipsForObject = class3.GetRelationshipsForObject(pFeature);
                    relationshipsForObject.Reset();
                    for (relationship2 = relationshipsForObject.Next();
                         relationship2 != null;
                         relationship2 = relationshipsForObject.Next())
                    {
                        if (relationship2.OriginObject != null)
                        {
                            node2 = new TreeNode(relationship2.OriginObject.OID.ToString())
                            {
                                Tag = relationship2.OriginObject
                            };
                            node.Nodes.Add(node2);
                        }
                    }
                    if (node.Nodes.Count > 0)
                    {
                        pParentNode.Nodes.Add(node);
                    }
                }
            }
        }
示例#10
0
        private void method_6(IFeatureLayer ifeatureLayer_0, IObject iobject_0)
        {
            string             str;
            int                num;
            IField             field;
            IFieldInfo         info;
            string             str2;
            List <IAttachment> list = this.method_4(iobject_0);

            if (list.Count > 0)
            {
                this.textBox1.Text   = "共有附件" + list.Count;
                this.button1.Tag     = list;
                this.panel5.AutoSize = false;
            }
            else
            {
                this.panel5.AutoSize = true;
            }
            this.Infolist.Items.Clear();
            IRelationshipClassCollection classs = ifeatureLayer_0 as IRelationshipClassCollection;
            IEnumRelationshipClass       relationshipClasses = classs.RelationshipClasses;

            relationshipClasses.Reset();
            relationshipClasses.Next();
            ITable displayTable = (ifeatureLayer_0 as IDisplayTable).DisplayTable;

            if (displayTable == null)
            {
                str = "几何数据";
                for (num = 0; num < (ifeatureLayer_0 as ILayerFields).FieldCount; num++)
                {
                    field = (ifeatureLayer_0 as ILayerFields).get_Field(num);
                    info  = (ifeatureLayer_0 as ILayerFields).get_FieldInfo(num);
                    if (info.Visible)
                    {
                        this.Infolist.Items.Add(info.Alias);
                        if (field.Type == esriFieldType.esriFieldTypeGeometry)
                        {
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add(str);
                        }
                        else if (field.Type == esriFieldType.esriFieldTypeBlob)
                        {
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add("二进制数据");
                        }
                        else if (field.Type == esriFieldType.esriFieldTypeOID)
                        {
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add(
                                iobject_0.get_Value(num).ToString());
                        }
                        else
                        {
                            str2 = this.method_7(iobject_0, field, num);
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add(str2);
                        }
                    }
                }
            }
            else
            {
                IRow row = displayTable.GetRow(iobject_0.OID);
                str = "几何数据";
                for (num = 0; num < (ifeatureLayer_0 as ILayerFields).FieldCount; num++)
                {
                    field = (ifeatureLayer_0 as ILayerFields).get_Field(num);
                    info  = (ifeatureLayer_0 as ILayerFields).get_FieldInfo(num);
                    if (info.Visible)
                    {
                        this.Infolist.Items.Add(info.Alias);
                        if (field.Type == esriFieldType.esriFieldTypeGeometry)
                        {
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add(str);
                        }
                        else if (field.Type == esriFieldType.esriFieldTypeBlob)
                        {
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add("二进制数据");
                        }
                        else if (field.Type == esriFieldType.esriFieldTypeOID)
                        {
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add(
                                row.get_Value(num).ToString());
                        }
                        else
                        {
                            str2 = this.method_7(row, field, num);
                            this.Infolist.Items[this.Infolist.Items.Count - 1].SubItems.Add(str2);
                        }
                    }
                }
            }
        }
示例#11
0
        private void method_3(IFeature ifeature_2, TreeNode treeNode_0)
        {
            IObjectClass           destinationClass;
            TreeNode               node;
            IEnumRelationship      relationshipsForObject;
            IRelationship          relationship2;
            TreeNode               node2;
            IEnumRelationshipClass class2 = ifeature_2.Class.get_RelationshipClasses(esriRelRole.esriRelRoleOrigin);

            class2.Reset();
            IRelationshipClass class3 = class2.Next();

            while (true)
            {
                if (class3 == null)
                {
                    break;
                }
                try
                {
                    destinationClass = class3.DestinationClass;
                    node             = new TreeNode(destinationClass.AliasName)
                    {
                        Tag = destinationClass
                    };
                    relationshipsForObject = class3.GetRelationshipsForObject(ifeature_2);
                    relationshipsForObject.Reset();
                    relationship2 = relationshipsForObject.Next();
                    while (relationship2 != null)
                    {
                        if (relationship2.DestinationObject != null)
                        {
                            node2 = new TreeNode(relationship2.DestinationObject.OID.ToString())
                            {
                                Tag = relationship2.DestinationObject
                            };
                            node.Nodes.Add(node2);
                        }
                        relationship2 = relationshipsForObject.Next();
                    }
                    if (node.Nodes.Count > 0)
                    {
                        treeNode_0.Nodes.Add(node);
                    }
                }
                catch
                {
                }
                class3 = class2.Next();
            }
            class2 = ifeature_2.Class.get_RelationshipClasses(esriRelRole.esriRelRoleDestination);
            class2.Reset();
            for (class3 = class2.Next(); class3 != null; class3 = class2.Next())
            {
                destinationClass = class3.OriginClass;
                node             = new TreeNode(destinationClass.AliasName)
                {
                    Tag = destinationClass
                };
                relationshipsForObject = class3.GetRelationshipsForObject(ifeature_2);
                relationshipsForObject.Reset();
                for (relationship2 = relationshipsForObject.Next();
                     relationship2 != null;
                     relationship2 = relationshipsForObject.Next())
                {
                    if (relationship2.OriginObject != null)
                    {
                        node2 = new TreeNode(relationship2.OriginObject.OID.ToString())
                        {
                            Tag = relationship2.OriginObject
                        };
                        node.Nodes.Add(node2);
                    }
                }
                if (node.Nodes.Count > 0)
                {
                    treeNode_0.Nodes.Add(node);
                }
            }
        }