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.