天天看點

ArcGIS Engine 編輯- IWorkspaceEdit

這個例子中,我建立了1000條要素,并結合緩沖将資料寫到檔案中,并且添加了時間統計,當然資料是我捏造的,還請原諒,這個花費的時間為0.978秒,速度還行。

  IWorkspaceFactory pWsF = new ShapefileWorkspaceFactory();

                IFeatureWorkspace pFtWs = pWsF.OpenFromFile(@"E:\arcgis\Engine\資料", 0) as IFeatureWorkspace;

                IFeatureClass pFtClass = pFtWs.OpenFeatureClass("edit");

                IFeatureLayer pFt = new FeatureLayerClass();

                pFt.FeatureClass = pFtClass;

                pFt.Name = "畫線";

                axMapControl1.Map.AddLayer(pFt as ILayer);

                axMapControl1.Refresh();

                //為了進一步說明Idataset,我特意從下面的代碼

                IDataset pDataset = pFtClass as IDataset;

                IWorkspace pWs = pDataset.Workspace;

                pWsEdit = pWs as IWorkspaceEdit;

                pWsEdit.StartEditing(true);

                pWsEdit.StartEditOperation();

                pBoolStart = pWsEdit.IsBeingEdited();

                System.Diagnostics.Stopwatch TimeWatch = new System.Diagnostics.Stopwatch();

                TimeWatch.Start();

                IFeatureBuffer pFeatureBuffer = pFtClass.CreateFeatureBuffer();

                IFeatureCursor pFtCusor = pFtClass.Insert(true);

                ESRI.ArcGIS.Geometry.IPolyline polyline = new ESRI.ArcGIS.Geometry.PolylineClass();

                ESRI.ArcGIS.Geometry.IPoint pPoint = new ESRI.ArcGIS.Geometry.PointClass();

                ESRI.ArcGIS.Geometry.IPoint pPoint2 = new ESRI.ArcGIS.Geometry.PointClass();

                for (int i = 0; i < 1000; i++)

                {

                    pPoint.X = 48 + i * 102;

                    pPoint.Y = 65 + i * 10;

                    polyline.FromPoint = pPoint;

                    pPoint2.X = 480 + i * 10;

                    pPoint2.Y = 615 + i * 102;

                    polyline.ToPoint = pPoint2;

                    pFeatureBuffer.Shape = polyline;

                    pFeatureBuffer.set_Value(2, i);

                    object pFeatureOID = pFtCusor.InsertFeature(pFeatureBuffer);

                }

                pFtCusor.Flush();

                pWsEdit.StopEditing(true);

                TimeWatch.Stop();

                MessageBox.Show(TimeWatch.Elapsed.Milliseconds.ToString());

效果如下:

<a href="http://www.gisall.com/batch.download.php?aid=3343" target="_blank">editor5</a>

沒有整理與歸納的知識,一文不值!高度概括與梳理的知識,才是自己真正的知識與技能。 永遠不要讓自己的自由、好奇、充滿創造力的想法被現實的架構所束縛,讓創造力自由成長吧! 多花時間,關心他(她)人,正如别人所關心你的。理想的騰飛與實作,沒有别人的支援與幫助,是萬萬不能的。

    本文轉自wenglabs部落格園部落格,原文連結:http://www.cnblogs.com/arxive/p/6262951.html,如需轉載請自行聯系原作者

繼續閱讀