The ArcPy map layer list in ArcGIS Pro is not updated when a layer is returned as an output parameter of a script.
上次发布: August 15, 2017ArcGIS Pro
漏洞 ID 编号
BUG-000105415
已提交
May 26, 2017
上次修改时间
June 5, 2024
适用范围
ArcGIS Pro
找到的版本
1.4
操作系统
Windows OS
操作系统版本
7
状态
Known Limit
经开发团队审核,已确定此问题与不受 Esri 控制的软件的已知限制有关。 问题的“其他信息”部分可能包含进一步说明。
附加信息
for lyr in m.listLayers (): #get layer object
if lyr.name == inLyr:
arcpy.AddMessage ("found lyr in map")
inLyrPath = os.path.dirname (lyr.dataSource)
outLyr = os.path.join (inLyrPath, outLyrName)
arcpy.AddMessage ("full path to outLyr: " + outLyr)
arcpy.CopyFeatures_management (inLyr, outLyr)
arcpy.AddMessage ("after CopyFeatures")
arcpy.SetParameterAsText (2, outLyr) #push layer out to map
arcpy.AddMessage ("after SetParameterAsText")
break;
p = arcpy.mp.ArcGISProject ("CURRENT") #get current project
m = p.listMaps () [0] #get first map in project
m.addDataFromPath(outLyr)
for lyr in m.listLayers ():
arcpy.AddMessage ("lyr.name: " + lyr.name)
解决办法
Perform any task requiring access to the new layer before exiting the loop where the layer object is current.
For instance, use the MakeFeatureLayer to create a layer object and return that object to the map instead of returning the new layer 'as text.' That way the layer object can be updated, such as by applying symbology from the existing layer from which it was copied.