Чи є спосіб змінити символіку для декількох шарів в ArcMap або ArcCatalog. Я хочу змінити символіку декількох шарів одночасно.
Чи є спосіб змінити символіку для декількох шарів в ArcMap або ArcCatalog. Я хочу змінити символіку декількох шарів одночасно.
Відповіді:
Редагування Ви можете використовувати цей скрипт, наданий ESRI, щоб виконати завдання, що знаходиться під рукою (така ж ідея, як нижче):
import arcpy
arcpy.ApplySymbologyFromLayer_management("in_layer", "in_symbology_layer")
in_layer: шар, до якого буде застосована символіка.
Шар функції; Растровий шар; TIN Layer; мережевий аналіз рівня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, щоб створити власне рішення, яке я міг би включити в сценарій am 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 оновиться.
Завантажте 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)