你好,
关于使用Arc GIS Pro SDK for .NET进行符号层绘制,我有两个问题:
提前谢谢你。
我们在公共API中没有直接支持这一点,至少,我认为我们可以在2.9的公共API中添加启用/禁用符号层绘图(SLD)。
按符号层配置绘图顺序不是简单的不这确实应该通过公共API和CIM来尝试——尽管这是有可能的——代码会非常脆弱。对符号的任何改变,例如改变一个特征符号定义或改变一个唯一的值类,都可能破坏任何外接程序代码,这些代码对给定层的符号和渲染器的结构进行了假设。
我建议您继续使用UI配置SLD顺序,当您按照自己的喜好配置了符号时,将该层保存为层文件(.lyrx)。
这是一个简单的过程,通过API读取层文件,并将具有正确SLD定义的渲染器应用到相同模式的现有层- ProSnippet:从图层文件中应用符号到一个图层, -或简单地创建一个基于层文件的新层-ProSnippet:从lyrx文件创建层
与此同时,假设您确实有一个带有符号层绘图的层,而不是使用专用的公共API方法来启用/禁用SLD配置(例如使用我上面提到的两种技术之一)-你可以使用下面的代码启用/禁用它:
在我的例子中,我为一个名为“rivers”的特征层开启/关闭SLD。然而,在我对这段代码的测试中,尽管在层上切换了SLD,但符号UI却切换了_not_更新SLD窗格上的“启用符号层绘图”复选框。所以我们在Pro中有一个bug,我们也需要解决。请注意这一点。我使用的是Pro 2.8版本。
protected override void OnClick() {var rivers = mapview . activemap . getlayersasflatedlist (). oftype ()。FirstOrDefault(l => l. name == "rivers");If (rivers == null)返回;QueuedTask.Run() => {var def = rivers.GetDefinition() as CIMFeatureLayer;/ / def。如果符号层绘图没有//之前配置if (def.SymbolLayerDrawing != null){//打开/关闭符号层绘图//TODO: UI中的Bug。“启用符号层绘图”复选框不更新def.SymbolLayerDrawing.UseSymbolLayerDrawing = !rivers.SetDefinition(def);}
: