ApplySymbologyFromLayer工具箱Python脚本问题

143
6
跳到解决方案
一个月前
Scott431
通过
新贡献者III

arcpy.management.ApplySymbologyFromLayer()从一个独立的脚本或Arc Python窗口中工作,但不是从映射会话中的工具箱脚本。它执行时没有错误,但它不改变符号。

我能看到的唯一可能的原因是,对象类型对于一个层来说有点不同,这取决于它是一个独立的/python窗口还是工具箱脚本。

独立/python窗口层类型:

工具箱脚本层类型:

有人知道发生了什么吗?我在ArcGIS Pro中遇到过其他奇怪的故障,其中工具在工具箱脚本中的功能不同,这非常令人沮丧。

脚本示例,只工作,如果作为一个独立的脚本运行:

1. png

标签(3)
0荣誉
1解决方案

接受的解决方案
JohannesLindner
常规赛MVP

工具文档

要查看在脚本工具中创建的符号,该工具必须将层作为导出输出参数


祝你有愉快的一天!
约翰内斯

在原帖子中查看解决方案

6个回答
DanPatterson
通过 尊敬的贡献者
尊敬的贡献者

您是否使用可以从对话框中指定参数类型的自定义工具箱,或者这是一个无参数工具?如果您在工具中定义参数并从对话框中选择它们,那么工具箱脚本将正常运行?

tool.png


...有点退休了…
0荣誉
Scott431
通过
新贡献者III

我通过map.listLayers()方法抓取图层,因为其中之一将是我在脚本中创建的内存层,而不是用户输入。

但我只是试着让它们都成为用户输入参数(功能层),但它仍然不起作用。

0荣誉
JohannesLindner
常规赛MVP

工具文档

要查看在脚本工具中创建的符号,该工具必须将层作为导出输出参数


祝你有愉快的一天!
约翰内斯
Scott431
通过
新贡献者III

啊,谢谢!我想我应该更仔细地看医生的。我一直在避免导出参数,因为我不理解它们。

下面是工作的代码。

fix.PNG

fix2.PNG

0荣誉
Scott431
通过
新贡献者III

事实上,我找到了一个更好的解决方案。我有一个问题与衍生输出添加的层的第二个副本受影响,当该层是一个内存层。当我进行更改,直到符号工具的派生输出才将其添加到映射中时,我意识到直到脚本结束才将派生输出添加到映射中。这是一个问题,因为我需要应用符号学,然后在同一个脚本中编辑它。

这里有一种新方法,当受影响的层是内存层时,效果更好:没有复制,并立即添加到map中。

fix3.PNG

我知道这看起来像是一个毫无意义的剧本……这只是一个大脚本的片段。

0荣誉
mody_buchbinder
临时贡献者II

当我从lyrx文件而不是从TOC中获取源层时,或多或少相同的代码对我有用

0荣誉