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 편집기 상자에서 아래 프로세스를 설계했습니다.
참고 : 다른 유형의 형상의 레이어를 동시에 사용하면 작동하지 않을 수 있습니다. 같은 이름의 레이어를 한 번에 사용하면 제대로 작동하지 않습니다. 벡터가 아닌 레이어로 시도하지 않았습니다.
모델의 파이썬으로 내 보낸 스크립트는 다음과 같습니다.
# 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 Add-in의 잠재적 도구로 볼 수있었습니다.
아래 링크 된 도구 상자를 사용하여 한 번에 여러 레이어 심볼을 활성화하는 매우 간단한 방법을 고안했습니다. 이 도구 상자를 추가 한 후 단일 기호 레이어를 끌어다 놓은 다음 기호 기호를 적용 할 모든 레이어를 끌어서 놓습니다 (대상). 지리적 유형 (선, 점, 폴리) 일치에 대한 일반적인 규칙이 여기에 적용될 수 있습니다. 도구가 실행되면 아무 일도 일어나지 않은 것으로 나타납니다. 디스플레이 새로 고침 (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)