มีวิธีในการเปลี่ยนสัญลักษณ์สำหรับหลายเลเยอร์ใน ArcMap หรือ ArcCatalog หรือไม่ ฉันต้องการเปลี่ยนสัญลักษณ์ของหลายเลเยอร์พร้อมกัน
มีวิธีในการเปลี่ยนสัญลักษณ์สำหรับหลายเลเยอร์ใน ArcMap หรือ ArcCatalog หรือไม่ ฉันต้องการเปลี่ยนสัญลักษณ์ของหลายเลเยอร์พร้อมกัน
คำตอบ:
แก้ไข คุณสามารถใช้สคริปต์นี้โดย ESRI เพื่อทำงานให้เสร็จสมบูรณ์ (แนวคิดเดียวกันกับด้านล่าง):
import arcpy
arcpy.ApplySymbologyFromLayer_management("in_layer", "in_symbology_layer")
in_layer: เลเยอร์ที่จะใช้สัญลักษณ์
Feature Layer; Raster Layer; TIN Layer; 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 เพื่อสร้างโซลูชันของตัวเองที่ฉันสามารถรวมเป็นสคริปต์ 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 บนแถบเครื่องมือ
ฉันคิดวิธีง่ายๆในการเปิดใช้งานสัญลักษณ์หลายชั้นพร้อมกันโดยใช้กล่องเครื่องมือที่ลิงก์ด้านล่าง หลังจากที่คุณเพิ่มกล่องเครื่องมือนี้แล้วให้ลากและวางเลเยอร์ symbology เดียวแล้วลากและวางเลเยอร์ทั้งหมดที่คุณต้องการใช้ symbology กับ (เป้าหมาย) กฎทั่วไปเกี่ยวกับการจับคู่ประเภททางภูมิศาสตร์ (เส้นคะแนนโพล) มีแนวโน้มใช้ที่นี่ เมื่อเครื่องมือทำงานแล้วมันจะปรากฏเป็นไม่มีอะไรเกิดขึ้น รีเฟรชจอแสดงผลของคุณ (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)