有没有一种方法可以更改ArcMap或ArcCatalog中多个图层的符号系统。我想一次更改多层的符号系统。
有没有一种方法可以更改ArcMap或ArcCatalog中多个图层的符号系统。我想一次更改多层的符号系统。
Answers:
编辑 您可以使用ESRI提供的此脚本来完成手头的任务(如下所示):
import arcpy
arcpy.ApplySymbologyFromLayer_management("in_layer", "in_symbology_layer")
in_layer:符号体系将应用到的层。
特征层;栅格层;TIN层;网络分析层in_symbology_layer:此层的符号系统应用于输入层。
特征层;栅格层; TIN层;网络分析层
或以独立脚本的形式扩展此功能(认为是IDLE):
import arcpy
from arcpy import env
# Set the current workspace
env.workspace = "path/to/workspace"
# Set layer to apply symbology to
inputLayers = ["in_layer_first.lyr","in_layer_second.lyr","in_layer_third.lyr"]
# Set layer that output symbology will be based on
symbologyLayer = "in_symbology_layer.lyr"
# Apply the symbology from the symbology layer to the input layer
for layer in inputLayers:
arcpy.ApplySymbologyFromLayer_management (layer, symbologyLayer)
本质上,您将创建一个与设计/样式相关的符号体系层(in_symbology_layer)。然后,将目录符号复制到目录中列出的其他每个图层上。
上一个答案
您可以在目录/图层列表的当前图层中使用样式,并将其应用于其他图层。
对于每个后续图层(在您想要的样式图层下方)>右键单击>属性>符号系统>从其他图层导入样式
我遇到了同样的问题,并且找到了另一个解决方案。它简单而实用,它甚至不需要创建* .lyr文件。
在ArcGIS ModelBuilder编辑器框中,我设计了以下过程:
注意:如果您同时使用不同类型的几何图形的图层,则可能无法使用。如果一次使用相同名称的图层,则效果不佳。我没有尝试使用非矢量层。
导出到该模型的python的脚本是:
# Import arcpy module
import arcpy
# Script arguments
Layers_to_symbolize = arcpy.GetParameterAsText(0)
Symbology_Layer = arcpy.GetParameterAsText(1)
# Local variables:
Symbolized_Layers = Layers_to_symbolize
# Process: Apply Symbology From Layer
arcpy.ApplySymbologyFromLayer_management(Layers_to_symbolize, Symbology_Layer)
在@Aaron发出消息之前,我使用来自@Roy的信息来创建自己的解决方案,可以将其合并到ArcToolbox脚本中。见下文:
# Import modules
import arcpy
#Get the current Map Document
mxd = arcpy.mapping.MapDocument("CURRENT")
# Script arguments
Template_Layer = arcpy.GetParameterAsText(0)
LayerList = arcpy.GetParameterAsText(1)
Layers_to_Symbolize = LayerList.split(";")
# Process: Apply Symbology From Layer
for UpdateLayer in Layers_to_Symbolize:
arcpy.AddMessage("Updating: " + UpdateLayer)
arcpy.ApplySymbologyFromLayer_management(UpdateLayer,Template_Layer)
# Refresh the Table of Contents to reflect the change
arcpy.RefreshTOC()
#Delete the MXD from memory
del mxd
我可以将此概念视为工具栏上10.1 Python插件的潜在工具。
我想出了一种非常简单的方法,可以使用下面链接的工具箱一次启用多层符号系统。添加此工具箱后,拖放单个符号系统图层,然后将要应用符号系统的所有图层拖放到(目标)。有关匹配地理类型(线,点,多边形)的一般规则可能在此处适用。该工具运行后,将一无所获。刷新显示(F5)-显示将更新为匹配的符号系统。单击图层以查看其属性,然后单击“确定”,TOC符号将更新。
如果更容易,请使用以下脚本:
import arcpy
# Script arguments
Target_Layers = arcpy.GetParameterAsText(0)
if Target_Layers == '#' or not Target_Layers:
Target_Layers = "LayersToBeChanged" # provide a default value if unspecified
Symbology_Layer = arcpy.GetParameterAsText(1)
if Symbology_Layer == '#' or not Symbology_Layer:
Symbology_Layer = "SymbologyLayer" # provide a default value if unspecified
# Local variables:
Output_Symbology = Symbology_Layer
# Process: Apply Symbology From Layer (3)
arcpy.ApplySymbologyFromLayer_management(Target_Layers, Symbology_Layer)