zoukankan      html  css  js  c++  java
  • 得到Unio后的新的FeatureClass(要求原FeatureClass只能是两两相交最简单的情况,即一个Feature最多只能和另外一个Feature相交)

    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.esriSystem;
    using ESRI.ArcGIS.SystemUI;
    using ESRI.ArcGIS.Geometry;
    using ESRI.ArcGIS.Display;
    using ESRI.ArcGIS.Carto;
    using ESRI.ArcGIS.Controls;
    using ESRI.ArcGIS.DataSourcesFile;
    using ESRI.ArcGIS.DataSourcesGDB;
    using ESRI.ArcGIS.Geodatabase;


    namespace union
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                ListGeometry = new List<IGeometry>();
            }
            private IFeatureClass pFeatureClass;
            private IFeatureWorkspace pFeatureWorkspace;
            private List<IGeometry> ListGeometry;

            private void button1_Click(object sender, EventArgs e)
            {
                # region one of the method
                //string filePath = @"O:\Experiment Labtory\Data\";
                //string fileName = @"unionFeatures.shp";
                //axMapControl1.AddShapeFile(filePath, fileName);
                # endregion

                #region two of the method

                IWorkspaceFactory pWF = new ShapefileWorkspaceFactoryClass();
                IWorkspace pW = pWF.OpenFromFile("O:\\Experiment Labtory\\Data", 0);
                IFeatureWorkspace pFeatureWorkspace = pW as IFeatureWorkspace;

                this.pFeatureWorkspace = pFeatureWorkspace;

                IFeatureClass pFC = pFeatureWorkspace.OpenFeatureClass("newunionFeatrueClass.shp");
                IFeatureLayer pFeatureLayer = new FeatureLayerClass();
                pFeatureLayer.FeatureClass = pFC;

                this.pFeatureClass = pFC;

                axMapControl1.AddLayer(pFeatureLayer);
               

                #endregion
            }

            private void button2_Click(object sender, EventArgs e)
            {
                int i, j;
                //IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
                int featureCount = pFeatureClass.FeatureCount(null);
                //IFeature pFirstFeature = pFeatureCursor.NextFeature();

                IFeature pFirstFeature;
                IPolygon pPolygon;
                IRelationalOperator pRelationOp;
                ITopologicalOperator4 pToplogicalOp;


                for (i = 0; i < featureCount - 1; i++)
                {
                    pFirstFeature = pFeatureClass.GetFeature(i);
                    pPolygon = (IPolygon)pFirstFeature.ShapeCopy;
                    pRelationOp = (IRelationalOperator)pPolygon;
                    pToplogicalOp = (ITopologicalOperator4)pPolygon;
                    pToplogicalOp.Simplify();
                    for (j = i + 1; j < featureCount; j++)
                    {
                        IGeometry pGeometry = pFeatureClass.GetFeature(j).ShapeCopy as IGeometry;
                        if (pRelationOp.Overlaps(pGeometry))
                        {
                            ListGeometry.Add(pToplogicalOp.Union(pGeometry));

                        }

                    }

                }
      

            }

            private void button3_Click(object sender, EventArgs e)
            {
                //UID u = null;
                //IFeatureClass pFeatureClass=pFeatureWorkspace.CreateFeatureClass
                //    ("NewUnionFeatureClass", null, u, u, esriFeatureType.esriFTSimple, "NewUnionFeatureClass", "");

                 IWorkspaceFactory pWF = new ShapefileWorkspaceFactoryClass();
                IWorkspace pW = pWF.OpenFromFile("O:\\Experiment Labtory\\Data", 0);
                IFeatureWorkspace pFeatureWorkspace = pW as IFeatureWorkspace;

                this.pFeatureWorkspace = pFeatureWorkspace;

                IFeatureClass pFC = pFeatureWorkspace.OpenFeatureClass("newnewFeatureClass.shp");
                if (pFC.ShapeType == esriGeometryType.esriGeometryPolygon)
                {
                    IFeature pFeature;
                    foreach (IGeometry g in ListGeometry)
                    {
                        pFeature = pFC.CreateFeature();
                        pFeature.Shape = g;
                        pFeature.Store();

                    }
                }

            }
        }
    }

  • 相关阅读:
    高效 JavaScript
    什么是QName【转】
    gson的简单使用方法
    SWT的FormLayout
    SWT/JFace常用组件容器类
    更改swing应用程序标题栏默认图标
    面试也是自己对自己的面试
    关于Android图片cache处理方法
    【Java】_2_Java程序入门第二课
    【算法和数据结构】_9_线性结构_队列_续_1
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/1553984.html
Copyright © 2011-2022 走看看