using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Display;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
private IFeatureWorkspace pCommonFeaureWorkspace = null;
private IFeatureClass pCommonFeatureClass = null;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
IPropertySet pPS = new PropertySetClass();
IWorkspaceFactory pWF = new SdeWorkspaceFactoryClass();
pPS.SetProperty("Server", "8B63691CDAE4488");
pPS.SetProperty("Instance", "5159");
pPS.SetProperty("Database", "TestElementEdit");
pPS.SetProperty("User", "sde");
pPS.SetProperty("Password", "zhangjun1130");
pPS.SetProperty("Version", "sde.default");
IWorkspace pWs = pWF.Open(pPS, 0);
IFeatureWorkspace pFWs = pWs as IFeatureWorkspace;
pCommonFeaureWorkspace = pFWs;
IFeatureClass pFC = pFWs.OpenFeatureClass("ElementEdit");
pCommonFeatureClass = pFC;
IFeatureLayer pFL = new FeatureLayerClass();
pFL.FeatureClass = pFC;
axMapControl1.AddLayer(pFL);
}
private void button2_Click(object sender, EventArgs e)
{
IWorkspaceEdit pWorkspaceEdit = (IWorkspaceEdit)pCommonFeaureWorkspace;
pWorkspaceEdit.StartEditing(true);
pWorkspaceEdit.StartEditOperation();
IFeatureSelection pFS = (IFeatureSelection)axMapControl1.Map.get_Layer(0);
pFS.SelectFeatures(null, esriSelectionResultEnum.esriSelectionResultNew, false);
ISelection pS = axMapControl1.Map.FeatureSelection;
IEnumFeature pEF = (IEnumFeature)pS;
IFeature pFeatureFirst = pEF.Next();
Console.WriteLine(pFeatureFirst.get_Value(0).ToString());
IGeometry pGeometryFirst = pFeatureFirst.Shape;
ITopologicalOperator2 pTopOperatorFirst = (ITopologicalOperator2)pGeometryFirst;
IRelationalOperator pRelOperatorFirst = (IRelationalOperator)pGeometryFirst;
pTopOperatorFirst.IsKnownSimple_2 = false;
pTopOperatorFirst.Simplify();
pGeometryFirst.SnapToSpatialReference();
IGeometry pGeometrySecond;
IFeature pFeatureSecond = pEF.Next();
while (pFeatureSecond != null)
{
pGeometrySecond = pFeatureSecond.ShapeCopy;
ITopologicalOperator2 pTopOperatorSecond = (ITopologicalOperator2)pGeometrySecond;
pTopOperatorSecond.IsKnownSimple_2 = false;
pTopOperatorSecond.Simplify();
pGeometrySecond.SnapToSpatialReference();
Console.WriteLine(pFeatureSecond.get_Value(0).ToString());
if (pRelOperatorFirst.Overlaps(pGeometrySecond) == true)
{
pGeometryFirst = pTopOperatorFirst.Union(pGeometrySecond);
pFeatureSecond.Delete();
}
pFeatureSecond = pEF.Next();
}
pTopOperatorFirst.IsKnownSimple_2 = false;
pTopOperatorFirst.Simplify();
pFeatureFirst.Shape = pGeometryFirst;
pFeatureFirst.Store();
pWorkspaceEdit.StopEditOperation();
pWorkspaceEdit.StopEditing(true);
axMapControl1.Refresh();
}
}
}