• 生成环


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    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.Geodatabase;
    using ESRI.ArcGIS.DataSourcesGDB;
    using ESRI.ArcGIS.DataSourcesFile;
    using ESRI.ArcGIS.DataManagementTools;



    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            string[][] strXY;
            string[] XY;
            string ScaleStr = "+(30,30;120,30;120,15;30,15)-(50,25;80,25;80,20;50,20)-(90,20;95,20;95,18;90,18)";
            IFeatureClass pPublicFeatureClass;
            IFeatureWorkspace pPublicFeatureWorkspace;
            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e)
            {
                IAoInitialize pAo = new AoInitializeClass();
                pAo.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);

                IWorkspaceFactory pSdeWorkspaceFactory = new SdeWorkspaceFactory();
                IPropertySet pPropertySet = new PropertySetClass();
                pPropertySet.SetProperty("Server", "siwei-gr7bzmd3q");
                pPropertySet.SetProperty("Instance", "esri_sde2");
                pPropertySet.SetProperty("Database", "sde2");
                pPropertySet.SetProperty("user", "sde");
                pPropertySet.SetProperty("password", "zhangjun1130");
                pPropertySet.SetProperty("version", "sde.DEFAULT");
                IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pSdeWorkspaceFactory.Open(pPropertySet, 0);
                IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass("sde2.SDE.Ring");
                pPublicFeatureClass = pFeatureClass;
                pPublicFeatureWorkspace = pFeatureWorkspace;
                
            }

            private void button1_Click(object sender, EventArgs e)
            {
                int n = 1;
                int begin;
                int end;
                string[] split2;
                string[] split1;
                string sub = string.Empty;

                for (int i = 1; i <= n; i++)
                {

                    split1 = ScaleStr.Split(new char[] { '+', '-' });

                    strXY = new string[split1.Length - 1][];

                    for (int k = 0; k < split1.Length - 1; k++)
                    {
                        string a = split1[k + 1];
                        if (a.Trim() != "")
                        {
                            begin = a.IndexOf('(');
                            end = a.IndexOf(')');
                            sub = a.Substring(begin + 1, end - begin - 1);
                            split2 = sub.Split(new char[] { ';' });
                            strXY[k] = new string[split2.Length];
                            for (int j = 0; j < split2.Length; j++)
                            {
                                strXY[k][j] = split2[j];  //返回需要的数组,x,y对
                            }
                        }

                    }

                }


                IPoint pPoint;
                IPolygon pPolygon1 = new PolygonClass();
                IPointCollection pPointCollection1 = (IPointCollection)pPolygon1;
                ITopologicalOperator2 pTopPoerator1 = (ITopologicalOperator2)pPolygon1;

                object _missing = Type.Missing;
                double x, y;
                for (int i = 0; i < strXY[0].Length; i++)
                {
                    XY = strXY[0][i].Split(new char[] { ',' });
                    x = double.Parse(XY[0]);
                    y = double.Parse(XY[1]);
                    pPoint = new PointClass();
                    pPoint.PutCoords(x, y);
                    pPointCollection1.AddPoint(pPoint, ref _missing, ref _missing);
                }
                pPolygon1.Close();
                pTopPoerator1.IsKnownSimple_2 = false;
                pTopPoerator1.Simplify();
                pPolygon1.SnapToSpatialReference();


                IPolygon pPolygon2 = new PolygonClass();
                IPointCollection pPointCollection2 = (IPointCollection)pPolygon2;
                ITopologicalOperator2 pTopPoerator2 = (ITopologicalOperator2)pPolygon2;
                for (int i = 0; i < strXY[1].Length; i++)
                {
                    XY = strXY[1][i].Split(new char[] { ',' });
                    x = double.Parse(XY[0]);
                    y = double.Parse(XY[1]);
                    pPoint = new PointClass();
                    pPoint.PutCoords(x, y);
                    pPointCollection2.AddPoint(pPoint, ref _missing, ref _missing);
                }
                pPolygon2.Close();
                pTopPoerator2.IsKnownSimple_2 = false;
                pTopPoerator2.Simplify();
                pPolygon2.SnapToSpatialReference();


                IPolygon pPolygon3 = new PolygonClass();
                IPointCollection pPointCollection3 = (IPointCollection)pPolygon3;
                ITopologicalOperator2 pTopPoerator3 = (ITopologicalOperator2)pPolygon3;
                for (int i = 0; i < strXY[2].Length; i++)
                {
                    XY = strXY[2][i].Split(new char[] { ',' });
                    x = double.Parse(XY[0]);
                    y = double.Parse(XY[1]);
                    pPoint = new PointClass();
                    pPoint.PutCoords(x, y);
                    pPointCollection3.AddPoint(pPoint, ref _missing, ref _missing);
                }
                pPolygon3.Close();
                pTopPoerator3.IsKnownSimple_2 = false;
                pTopPoerator3.Simplify();
                pPolygon3.SnapToSpatialReference();




                IPolygon pGeometry = (IPolygon)pTopPoerator1.Difference(pPolygon2);
                pGeometry = (IPolygon)(pGeometry as ITopologicalOperator).Difference(pPolygon3);



                IFeature pFeature=null;
                IWorkspaceEdit pWorkspaceEdit = (IWorkspaceEdit)pPublicFeatureWorkspace;
                pWorkspaceEdit.StartEditing(true);
                pWorkspaceEdit.StartEditOperation();

                #region 使用FeatureBuffer的方法成功
                IFeatureBuffer pFeatureBuffer = pPublicFeatureClass.CreateFeatureBuffer();
                IFeatureCursor pFeatureCursor = pPublicFeatureClass.Insert(true);
                
                
                //目前之设置几何字段
                pFeatureBuffer.Shape = pGeometry;
                pFeatureCursor.InsertFeature(pFeatureBuffer);
                pFeatureCursor.Flush();
                #endregion 5句话

                #region //使用CreateFeature的方法成功
                //pFeature =pPublicFeatureClass.CreateFeature();
                //pFeature.Shape = pPolygon;
                //pFeature.Store();
                #endregion 3句话



                pWorkspaceEdit.StopEditOperation();
                pWorkspaceEdit.StopEditing(true);
            }
        }
    }
  • 相关阅读:
    python 常用的模块(hashlib)转
    python 常用的模块(struct)转
    python 常用的模块(base64)转
    python 常用的模块(collections)转
    django xadmin的使用和改造
    django静态html中做动态变化
    django 用model来简化form
    InstallShield2015制作安装包----------安装后实现电脑开机自启动
    InstallShield2015创建安装包
    InstallShield :cannot rename directory ...
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/1456172.html
Copyright © 2020-2023  润新知