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); }
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; }
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; } } } }
/// <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(); } } }
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); } }
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(); } } }
//上朔追踪列出所有地块 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); } } }
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); } }
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); } } } }
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); } } } } }
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); } } }