当前位置: 首页 > news >正文

铜陵网站开发怎么在百度上做推广

铜陵网站开发,怎么在百度上做推广,深圳机械加工厂,怎么建设物流网站ArcGIS Pro SDK (七)编辑 12 编辑模版 文章目录 ArcGIS Pro SDK (七)编辑 12 编辑模版1 在图层上按名称查找编辑模板2 查找属于独立表的表模板3 当前模板4 更改模板的默认编辑工具5 隐藏或显示模板上的编辑工具6 使用图层创建新模…

ArcGIS Pro SDK (七)编辑 12 编辑模版

文章目录

  • ArcGIS Pro SDK (七)编辑 12 编辑模版
    • 1 在图层上按名称查找编辑模板
    • 2 查找属于独立表的表模板
    • 3 当前模板
    • 4 更改模板的默认编辑工具
    • 5 隐藏或显示模板上的编辑工具
    • 6 使用图层创建新模板
    • 7 使用表创建新表模板
    • 8 更新表模板
    • 9 创建注释模板
    • 10 删除表模板
    • 11 活动模板已更改

环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0

1 在图层上按名称查找编辑模板

ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>{// 获取模板var map = ArcGIS.Desktop.Mapping.MapView.Active.Map;if (map == null)return;var mainTemplate = map.FindLayers("main").FirstOrDefault()?.GetTemplate("Distribution");var mhTemplate = map.FindLayers("Manhole").FirstOrDefault()?.GetTemplate("Active");});

2 查找属于独立表的表模板

ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>{var map = ArcGIS.Desktop.Mapping.MapView.Active.Map;if (map == null)return;// 获取特定的表模板var tableTemplate = map.FindStandaloneTables("Address Points").FirstOrDefault()?.GetTemplate("Residences");// 获取独立表的所有模板var ownersTableTemplates = map.FindStandaloneTables("Owners").FirstOrDefault()?.GetTemplates();var statisticsTableTemplates = MapView.Active.Map.GetStandaloneTablesAsFlattenedList().First(l => l.Name.Equals("Trading Statistics")).GetTemplates();});

3 当前模板

EditingTemplate template = EditingTemplate.Current;

4 更改模板的默认编辑工具

public Task ChangeTemplateDefaultToolAsync(ArcGIS.Desktop.Mapping.FeatureLayer flayer,string toolContentGUID, string templateName)
{return ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>{// 通过名称从图层中检索编辑模板var template = flayer?.GetTemplate(templateName) as ArcGIS.Desktop.Editing.Templates.EditingTemplate;// 获取图层的定义var layerDef = flayer?.GetDefinition() as ArcGIS.Core.CIM.CIMFeatureLayer;if ((template == null) || (layerDef == null))return;if (template.DefaultToolID != this.ID){bool updateLayerDef = false;if (layerDef.AutoGenerateFeatureTemplates){layerDef.AutoGenerateFeatureTemplates = false;updateLayerDef = true;}// 检索 CIM 编辑模板定义var templateDef = template.GetDefinition();// 分配工具 DAML 定义中的 GUID,例如// <tool id="TestConstructionTool_SampleSDKTool" categoryRefID="esri_editing_construction_polyline" ….>//   <tooltip heading="">Tooltip text<disabledText /></tooltip>//   <content guid="e58239b3-9c69-49e5-ad4d-bb2ba29ff3ea" />// </tool>// 然后 toolContentGUID 将是 "e58239b3-9c69-49e5-ad4d-bb2ba29ff3ea"// 在 2.x 版本中 -//templateDef.ToolProgID = toolContentGUID;templateDef.DefaultToolGUID = toolContentGUID;// 设置定义template.SetDefinition(templateDef);// 也更新图层定义if (updateLayerDef)flayer.SetDefinition(layerDef);}});
}

5 隐藏或显示模板上的编辑工具

QueuedTask.Run(() =>{// 隐藏图层上的所有工具,除了线工具var featLayer = MapView.Active.Map.FindLayers("Roads").First();var editTemplates = featLayer.GetTemplates();var newCIMEditingTemplates = new List<CIMEditingTemplate>();foreach (var et in editTemplates){// 初始化模板,通过激活默认工具et.ActivateDefaultToolAsync();var cimEditTemplate = et.GetDefinition();// 获取此模板上的可见工具var allTools = et.ToolIDs.ToList();// 添加此模板上的隐藏工具allTools.AddRange(cimEditTemplate.GetExcludedToolIDs().ToList());// 隐藏所有工具,然后允许线工具// 在 2.x 版本中 -//allTools.AddRange(cimEditTemplate.GetExcludedToolDamlIds().ToList());allTools.AddRange(cimEditTemplate.GetExcludedToolIDs().ToList());// 在 2.x 版本中 - //cimEditTemplate.SetExcludedToolDamlIds(allTools.ToArray());//cimEditTemplate.AllowToolDamlID("esri_editing_SketchLineTool");cimEditTemplate.SetExcludedToolIDs(allTools.ToArray());cimEditTemplate.AllowToolID("esri_editing_SketchLineTool");newCIMEditingTemplates.Add(cimEditTemplate);}// 更新图层模板var layerDef = featLayer.GetDefinition() as CIMFeatureLayer;// 将 AutoGenerateFeatureTemplates 设置为 false 以使模板更改生效layerDef.AutoGenerateFeatureTemplates = false;layerDef.FeatureTemplates = newCIMEditingTemplates.ToArray();featLayer.SetDefinition(layerDef);});

6 使用图层创建新模板

var layer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault();
if (layer == null)return;
QueuedTask.Run(() =>{var insp = new Inspector();insp.LoadSchema(layer);insp["Field1"] = value1;insp["Field2"] = value2;insp["Field3"] = value3;var tags = new[] { "Polygon", "tag1", "tag2" };// 使用 daml-id 设置默认工具 string defaultTool = "esri_editing_SketchCirclePolygonTool";// 工具过滤器是要过滤掉的工具var toolFilter = new[] { "esri_editing_SketchTracePolygonTool" };// 创建一个新模板  var newTemplate = layer.CreateTemplate("My new template", "description", insp, defaultTool, tags, toolFilter);});

7 使用表创建新表模板

var table = MapView.Active.Map.GetStandaloneTablesAsFlattenedList().FirstOrDefault();
if (table == null)return;
QueuedTask.Run(() =>{var tableTemplate = table.GetTemplate("Template1");var definition = tableTemplate.GetDefinition();definition.Description = "New definition";definition.Name = "New name";// 使用此定义创建新表模板table.CreateTemplate(definition);// 也可以使用此扩展方法创建新表模板。可以像使用 layer.CreateTemplate 方法一样使用此方法。table.CreateTemplate("New template name", "Template description", tags: new string[] { "tag 1", "tag 2" });});

8 更新表模板

QueuedTask.Run(() =>{var tableTemplate = table.GetTemplate("Template1");var definition = tableTemplate.GetDefinition();definition.Description = "New definition";definition.Name = "New name";// 更新定义tableTemplate.SetDefinition(definition);});

9 创建注释模板

// 获取注释图层
AnnotationLayer annoLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<AnnotationLayer>().FirstOrDefault();
if (annoLayer == null)return;QueuedTask.Run(() =>{Inspector insp = null;// 获取注释要素类var fc = annoLayer.GetFeatureClass() as ArcGIS.Core.Data.Mapping.AnnotationFeatureClass;// 获取包含标签、符号的要素类 CIM 定义var cimDefinition = fc.GetDefinition() as ArcGIS.Core.Data.Mapping.AnnotationFeatureClassDefinition;var labels = cimDefinition.GetLabelClassCollection();var symbols = cimDefinition.GetSymbolCollection();// 确保有标签和符号if ((labels.Count == 0) || (symbols.Count == 0))return;// 查找所需的标签类// 通常会使用子类型名称或其他特征// 在此情况下,只使用第一个var label = labels[0];// 每个标签都有一个 textSymbol// symbolName 应该是要使用的 symbolIDvar symbolName = label.TextSymbol.SymbolName;int symbolID = -1;if (!int.TryParse(symbolName, out symbolID)){// int.TryParse 失败 - 尝试在符号集合中查找 symbolNameforeach (var symbol in symbols){if (symbol.Name == symbolName){symbolID = symbol.ID;break;}}}// 没有符号?if (symbolID == -1)return;// 加载架构insp = new Inspector();insp.LoadSchema(annoLayer);// 可以使用 inspector[fieldName] 方法分配这些字段// 这些字段在注释架构中保证存在insp["AnnotationClassID"] = label.ID;insp["SymbolID"] = symbolID;// 设置一些附加的注释属性AnnotationProperties annoProperties = insp.GetAnnotationProperties();annoProperties.FontSize = 36;annoProperties.TextString = "My Annotation feature";annoProperties.VerticalAlignment = VerticalAlignment.Top;annoProperties.HorizontalAlignment = HorizontalAlignment.Justify;insp.SetAnnotationProperties(annoProperties);var tags = new[] { "Annotation", "tag1", "tag2" };// 使用 daml-id 而不是 guidstring defaultTool = "esri_editing_SketchStraightAnnoTool";// 工具过滤器是要过滤掉的工具var toolFilter = new[] { "esri_editing_SketchCurvedAnnoTool" };// 创建一个新模板var newTemplate = annoLayer.CreateTemplate("new anno template", "description", insp, defaultTool, tags, toolFilter);});

10 删除表模板

var table = MapView.Active.Map.GetStandaloneTablesAsFlattenedList().FirstOrDefault();
if (table == null)return;
QueuedTask.Run(() =>{var tableTemplate = table.GetTemplate("Template1");// 删除表模板table.RemoveTemplate(tableTemplate);// 通过名称删除模板table.RemoveTemplate("Template2");});

11 活动模板已更改

ArcGIS.Desktop.Editing.Events.ActiveTemplateChangedEvent.Subscribe(OnActiveTemplateChanged);async void OnActiveTemplateChanged(ArcGIS.Desktop.Editing.Events.ActiveTemplateChangedEventArgs args)
{// 如果传入的模板为空则返回if (args.IncomingTemplate == null)return;// 为图层地图中的 Freeway 模板激活两点线工具if (args.IncomingTemplate.Name == "Freeway" && args.IncomingMapView.Map.Name == "Layers")await args.IncomingTemplate.ActivateToolAsync("esri_editing_SketchTwoPointLineTool");
}
http://www.yayakq.cn/news/579835/

相关文章:

  • 做羞羞的网站制作一个手机app软件
  • 什么是网站功能需求注册网站可以注销嘛
  • 崇州企业网站建设南京注册公司流程
  • 网站建设科技风中交建设集团有限公司
  • 网站建设培训教程 新手入门到精通建立网站大概投入
  • 如何解决网站兼容性问题网站建设推广公司排名
  • 如何在门户网站做推广方案移动网站开发百度百科
  • 做商城网站的风险网站工作沟通及建设
  • 兰州模板型网站建设专门做视频的网站吗
  • 做网站网站建设教程做网站采集
  • 关键词自动生成器新站优化
  • led外贸网站微信营销的案例
  • 网站百度收录秒收方法腾讯云一键wordpress
  • 自字网站建设教程视频公众号开发怎么做
  • 产品介绍网站html源码哪个网站买域名好
  • 电商网站设计平台小程序运营主要做什么
  • 公司静态网站模板百度竞价推广开户内容
  • 官网网站建设如何制作微信小程序店铺
  • 做坑网站需要wordpress 发布
  • 大连模板网站制作哪家好做楼盘网站
  • 福建省建设厅网站 企业南宁seo外包平台
  • 长沙网页网站制作福泉网站制作
  • 动漫网站建设的目的html网页设计毕业设计
  • 上海民政网站相关建设情况hao123网站用什么程序做的
  • 网站建设保教国内免费图片素材网站
  • 在阿里巴巴做网站多少钱二手房中介网站建设
  • 高端企业网站信息怎么在自己做网站
  • 门户网站免费奖励自己怀化建设公司网站
  • 网站 配色表网络运维工程师周报
  • 微信一键登录网站怎么做郑州cms建站模板