Arcpy应用-GP输出结果没有自动加载到工程

2022-11-14 10:57:45 浏览数 (2)

用户使用arcpy.mp模块以及gp工具applysymbofromlayer,通过图层文件来符号化栅格并加载到工程的地图中。看一下它的代码。

代码语言:javascript复制
# 用lyrx文件符号化栅格testraster
import arcpy

arcpy.env.overwriteOutput = True
arcpy.env.workspace = r"E:ArcGISprojMyProjMyProj.gdb"
aprx_path = r"E:ArcGISprojMyProj2MyProj2.aprx"
inputR = r"E:ArcGISprojMyProjMyProj.gdbtestraster"
render_lyx = r"E:ArcGISprojMyProjlyrfile.lyrx"

aprx = arcpy.mp.ArcGISProject(aprx_path)
map = aprx.listMaps()[0]
try:
    rendenr_ly = arcpy.mp.LayerFile(rendenr_lyx)
    map.addLayer(rendenr_ly)
    map.addDataFromPath(inputR)
    arcpy.ApplySymbologyFromLayer_management(inputR, render_ly, None, "MAINTAIN")
except arcpy.ExecuteError:
    print(arcpy.GetMessage(2))
aprx.save()

del aprx
  

如下图所示,输入栅格并没有符号化。

执行代码成功,输入栅格和lyrx图层文件都加载到map中;但是输入栅格没有应用符号化,也就是gp工具好像没有生效。

可以这样修改代码,把gp运行结果对象再添加到map中。

代码语言:javascript复制
result = arcpy.ApplySymbologyFromLayer_management( inputR, render_lyx, None, "MAINTAIN")
map.addLayer(result.getOutput(0))

或者这样修改

代码语言:javascript复制
map.addDataFromPath(inputR)
input = map.listLayers()[0]
arcpy.ApplySymbologyFromLayer_management(
      input, render_lyx, None, "MAINTAIN")

因为用户代码中并没有引用到map对象中的layer对象,虽然输入栅格被添加到map中,符号化却没有应用。

0 人点赞