• featurecursor


     //IFeatureBuffer Example

        public void IFeatureBuffer_Example(IFeatureClass featureClass)
        {
            //Function is designed to work with polyline data
            if (featureClass.ShapeType != ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline) { return; }


            //get the Workspace from the IDataset interface on the feature class
            IDataset dataset = (IDataset)featureClass;
            IWorkspace workspace = dataset.Workspace;
            //Cast for an IWorkspaceEdit
            IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)workspace;


            //Start an edit session and operation
            workspaceEdit.StartEditing(true);
            workspaceEdit.StartEditOperation();


            //Create the Feature Buffer
            IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer();
            //Create insert Feature Cursor using buffering = true.
            IFeatureCursor featureCursor = featureClass.Insert(true);


            object featureOID;


            //With a feature buffer you have the ability to set the attribute for a specific field to be
            //the same for all features added to the buffer.
            featureBuffer.set_Value(featureBuffer.Fields.FindField("InstalledBy"), "K Johnston");


            //Here you can set the featurebuffers's shape by setting the featureBuffer.Shape
            //to a geomerty that matched the featureclasses.
            //Create 100 features using FeatureBuffer and insert into a feature cursor
            ESRI.ArcGIS.Geometry.IPolyline polyline = new ESRI.ArcGIS.Geometry.PolylineClass();
            ESRI.ArcGIS.Geometry.IPoint point = new ESRI.ArcGIS.Geometry.PointClass();
            for (int i = 0; i < 100; i++)
            {
                //Create the polyline geometry to assign to the new feature
                point.X = 498490 + i * 10;
                point.Y = 675380 + i * 10;
                polyline.FromPoint = point;
                point = new ESRI.ArcGIS.Geometry.PointClass();
                point.X = 498480 + i * 10;
                point.Y = 675390 + i * 10;
                polyline.ToPoint = point;
                featureBuffer.Shape = polyline;


                //Insert the feature into the feature cursor
                featureOID = featureCursor.InsertFeature(featureBuffer);
            }
            //Flush the feature cursor to the database
            //Calling flush allows you to handle any errors at a known time rather then on the cursor destruction.
            featureCursor.Flush();


            //Stop editing
            workspaceEdit.StopEditOperation();
            workspaceEdit.StopEditing(true);


            //Release the Cursor
            System.Runtime.InteropServices.Marshal.ReleaseComObject(featureCursor);

  • 相关阅读:
    优化SQL查询:如何写出高性能SQL语句
    动态库与静态库
    多线程程序中fork导致的一些问题
    合理的使用size_t可以提高程序的可移植性和代码的可读性,让你的程序更高效。
    linux下C++ STL hash_map的使用以及使用char *型变量作为Key值的一大“坑”
    阅读腾讯编程规范的笔记
    2、vector的实现
    linux下C++对线程的封装
    1、空间配置器
    SQL Server三种表连接原理
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/1406133.html
Copyright © 2020-2023  润新知