ArcGIS Pro 快速增加在内存表点中
// Works : protected async Task MemDB_Geoprocessing() { string gdbPath = "memory"; //string gdbPath = CoreModule.CurrentProject.DefaultGeodatabasePath; string featureclassName = "testFC"; string featureclassType = "POINT"; int spatialRefID = 20351; //Z51 var activeMap = MapView.Active.Map; // 1) Create the Feature class table - use GP tools var sr = SpatialReferenceBuilder.CreateSpatialReference(spatialRefID); List<object> geoProcessingArgs = new List<object> { gdbPath, featureclassName, featureclassType, "", "DISABLED", "DISABLED", sr }; GPExecuteToolFlags flags = GPExecuteToolFlags.None | GPExecuteToolFlags.AddOutputsToMap; IGPResult result = null; var t = Task.Run(async () => { result = await Geoprocessing.ExecuteToolAsync("CreateFeatureclass_management", Geoprocessing.MakeValueArray(geoProcessingArgs.ToArray()), null, null, null, flags); }); await (t); // 2) Set up attribute structure int numFields = 64 / 2; // 64 fields, 1 each of type text, numeric var fields = new Dictionary<string, string>(); for (int fldCnt = 0; fldCnt < numFields; fldCnt++) { fields.Add($"Field{fldCnt}", $"Text # 255 myDefaultValue"); fields.Add($"Field{fldCnt}_num", $"DOUBLE # # #"); } AddFields(gdbPath + @"\" + featureclassName, fields); // 3) Add some test point features to the Feature layer var pointFeatureLayer = activeMap.FindLayers(featureclassName)[0] as FeatureLayer; var featureAttribs = new Dictionary<string, object>(); Random rnd = new Random(); var createOp = new EditOperation() { Name = "Generate points", SelectNewFeatures = false }; long pointCnt = 0; for (pointCnt = 0; pointCnt < 50*1000; pointCnt++) // for each new point feature { featureAttribs.Clear(); // geometry - random-ish coords Coordinate2D newCoordinate = new Coordinate2D(320000 + rnd.Next(-1000, 1000), 7140000 + rnd.Next(-1000, 1000)); featureAttribs.Add("Shape", MapPointBuilder.CreateMapPoint(newCoordinate)); // attribute values for (int fldCnt = 0; fldCnt < numFields; fldCnt++) { featureAttribs.Add($"Field{fldCnt}", $"SomeText{fldCnt}"); featureAttribs.Add($"Field{fldCnt}_num", fldCnt); } createOp.Create(pointFeatureLayer, featureAttribs); // queue feature creation } // commit features Task<bool> tRes = createOp.ExecuteAsync(); // execute the batch edit operation await (tRes); if (!tRes.Result) throw new Exception(createOp.ErrorMessage); Task tse = Task.Run(async () => { await Project.Current.SaveEditsAsync(); }); await(tse); Task tz = Task.Run(async () => { await MapView.Active.ZoomToAsync(pointFeatureLayer, false); }); await(tz); } private void AddFields(string tableNamePath, Dictionary<string, string> fields) { string fieldNames = ""; List<object> geoProcessingArgs = null; foreach (KeyValuePair<string, string> item in fields) { fieldNames = String.Format("{0}{1} {2}; ", fieldNames, item.Key, item.Value); } geoProcessingArgs = new List<object>{tableNamePath,fieldNames}; var t = Task.Run(async () => { var result = Geoprocessing.ExecuteToolAsync("management.AddFields", Geoprocessing.MakeValueArray(geoProcessingArgs.ToArray())); }); t.Wait(); }
分类:
ArcGIS Pro二次开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2019-03-21 勘测定界软件,增加平方米和公顷,小数进位面积不平,自动调平功能;不够线状扣除负面积自动处理功能
2015-03-21 arcgis mpk 打包地图 (数据管理)
2015-03-21 ArcGIS for Android离线数据编辑实现原理
2015-03-21 ArcGIS for Android地图控件的5大常见操作
2015-03-21 ArcGIS for Android入门程序之DrawTool2.0
2015-03-21 arcgis 3种方法快速制作tpk文件(转)