ฉันกำลังพยายามเขียนแมโครไพ ธ อนสำหรับ ArcGIS 10.2 ที่จะทำให้กระบวนการติดฉลากจุดในเลเยอร์โดยอัตโนมัติตามประเภทอพาร์ทเมนต์ต่างๆ ตัวอย่างเช่นอพาร์ทเมนท์หนึ่งรูปแบบจะมีสี่เหลี่ยมสีน้ำเงินพร้อมตัวหนาสีขาวเป็นป้ายกำกับเดียว อีกอันหนึ่งจะมีสี่เหลี่ยมสีชมพูพร้อมตัวหนาสีดำ อีกอันจะมีสี่เหลี่ยมสีแดงที่มีตัวหนาสีขาว ฯลฯ
คุณต้องการใช้นิพจน์หรือฟังก์ชันใน arcpy เพื่อเปลี่ยนสไตล์ของป้ายกำกับเหล่านี้หรือไม่
ขณะนี้สคริปต์ติดป้ายอพาร์ตเมนต์ตามรหัสแผนที่และเปลี่ยนชื่อใน TOC เป็นอพาร์ตเมนต์ตามที่ควร
ตอนนี้ฉันต้องการเปลี่ยนแบบอักษรกราฟิกและขนาดของป้ายชื่อเพื่อสร้างป้ายกำกับที่ไม่ซ้ำกันสำหรับแต่ละรายการจากนั้นทำปุ่มเพื่อกดและเพียงแค่ทำให้กระบวนการอัตโนมัติทุกครั้งที่เราต้องทำหนึ่งในเลเยอร์เหล่านี้
แบบอักษรป้ายกำกับและกราฟิกสามารถเปลี่ยนแปลงได้หรือไม่ด้วยการใช้สคริปต์ Python (ArcPy, IDLE ฯลฯ )
ฉันตัดสินใจที่จะแก้ไขโพสต์นี้เพื่อให้คำอธิบายขั้นสุดท้ายเกี่ยวกับสิ่งที่ฉันกำลังจะมาที่นี่จึงไม่มีความสับสน โดยพื้นฐานแล้วจุดบนแผนที่จะเปลี่ยนจากการมองภาพด้านบนเป็นดังนี้:
ฉันลองใช้lblClass.expression
ฟังก์ชั่นนี้แล้ว แต่รหัสที่ฉันพยายามจะใช้ไม่ทำงาน ฉันคิดว่าน่าจะเป็นขั้นตอนในทิศทางที่ถูกต้อง ด้านล่างเป็นรหัสที่ฉันได้ลองใช้เพื่อรับ labelClass.expression เพื่อเปลี่ยนแบบอักษรของป้ายกำกับ
for lblClass in aptLayer.labelClasses:
lblClass.showClassLabels = True
def getLabel (Code, Type):
if Type == "MRR":
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
elif Type == "TAX":
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
elif Type == "MRT":
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
elif Type == "GSS":
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
elif Type == "TGS":
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
else:
return "<FNT name = 'Arial' size = '12'>" & Code & "</FNT>"
lblClass.expression = getLabel( [Map_Code],[Type])