Есть ли способ изменить символы для нескольких слоев в ArcMap или ArcCatalog. Я хочу изменить символику нескольких слоев одновременно.
Есть ли способ изменить символы для нескольких слоев в ArcMap или ArcCatalog. Я хочу изменить символику нескольких слоев одновременно.
Ответы:
Редактировать Вы можете использовать этот скрипт, предоставленный 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
Я мог видеть эту концепцию как потенциальный инструмент для надстройки Python 10.1 на панели инструментов.
Я придумал довольно простой способ включить несколько символов слоя одновременно, используя панель инструментов, связанную ниже. После добавления этой панели инструментов перетащите один слой символов, а затем перетащите все слои, к которым вы хотите применить символы (цели). Общие правила сопоставления геотипа (линии, точки, полисы), вероятно, применимы здесь. Как только инструмент запустится, он появится как ничего не произошло. Обновить ваш дисплей (F5) - дисплей обновится с соответствующей символикой. Нажмите на слой, чтобы просмотреть его свойства и нажмите «ОК», и символ оглавления будет обновлен.
Загрузите Zip-файл для набора инструментов здесь.
Вот сценарий, если это проще:
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)