ArcGIS Pro创建线有问题
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ArcGIS.Core.CIM; using ArcGIS.Core.Data; using ArcGIS.Core.Geometry; using ArcGIS.Desktop.Catalog; using ArcGIS.Desktop.Core; using ArcGIS.Desktop.Editing; using ArcGIS.Desktop.Extensions; using ArcGIS.Desktop.Framework; using ArcGIS.Desktop.Framework.Contracts; using ArcGIS.Desktop.Framework.Dialogs; using ArcGIS.Desktop.Framework.Threading.Tasks; using ArcGIS.Desktop.Mapping; namespace TKPrint { internal class MapTool1 : MapTool { public MapTool1() { IsSketchTool = true; SketchType = SketchGeometryType.Line; SketchOutputMode = SketchOutputMode.Screen; } protected override Task OnToolActivateAsync(bool active) { return base.OnToolActivateAsync(active); } //protected override Task<bool> OnSketchCompleteAsync(Geometry geometry) //{ // Map activeMap = MapView.Active.Map; // var polygonLayer = activeMap.GetLayersAsFlattenedList().OfType<FeatureLayer>().Where( // lyr => lyr.ShapeType == ArcGIS.Core.CIM.esriGeometryType.esriGeometryPolygon).FirstOrDefault(); // if (polygonLayer == null) // return Task.FromResult(false); // return QueuedTask.Run(() => // { // var newPolygon = geometry as Polygon; // FeatureClass featureClass = polygonLayer.GetFeatureClass(); // RowBuffer rowBuffer = featureClass.CreateRowBuffer(); // rowBuffer["Shape"] = newPolygon; // featureClass.CreateRow(rowBuffer); // rowBuffer.Dispose(); // return Task.FromResult(true); // }); //} protected override Task<bool> OnSketchCompleteAsync(Geometry geometry) { if (CurrentTemplate == null || geometry == null) return Task.FromResult(false); try { // Create an edit operation var createOperation = new EditOperation(); createOperation.Name = string.Format("Create {0}", CurrentTemplate.Layer.Name); createOperation.SelectNewFeatures = true; // pass the point geometry to the Create method createOperation.Create(CurrentTemplate, geometry); // Execute the operation return createOperation.ExecuteAsync(); } finally { MapView.Active.RedrawAsync(true); } //Map activeMap = MapView.Active.Map; //var polygonLayer = activeMap.GetLayersAsFlattenedList().OfType<FeatureLayer>().Where( // lyr => lyr.ShapeType == ArcGIS.Core.CIM.esriGeometryType.esriGeometryPolyline).FirstOrDefault(); //if (polygonLayer == null) // return Task.FromResult(false); //return QueuedTask.Run(() => //{ // var createOperation = new EditOperation() // { // Name = "Create polylins", // SelectNewFeatures = false // }; // var newPolygon = geometry as Polyline; // // queue the polygon creation // createOperation.Create(polygonLayer, newPolygon); // // execute the edit (polygon create) operation // return Task.FromResult(createOperation.Execute()); //}); } } }