用户使用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中,符号化却没有应用。