การเพิ่มเลเยอร์กลุ่มใหม่ด้วย ArcPy?


21

ตอนนี้มีใครบ้างที่จะเพิ่มเลเยอร์กลุ่มด้วย Python ใน ArcGIS Desktop 10 ได้หรือไม่

ฉันสามารถใช้ arcpy.mapping.AddLayer แต่แน่นอนว่านี่เป็นเพียงเลเยอร์จริงซึ่งตรงข้ามกับเลเยอร์กลุ่ม

จนถึงตอนนี้ฉันมีสิ่งนี้

import arcpy
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.listdataframes(mxd, "layers")[0]
arcpy.mapping.AddLayer

คำตอบ:


18

ฉันไม่คิดว่า ArcPy ให้อะไรเพื่อสร้างเลเยอร์กลุ่มโดยตรง แต่มีวิธีแก้ไขง่ายๆ คุณสามารถสร้างไฟล์. lyr ซึ่งมีเลเยอร์กลุ่มเดียวที่ว่างเปล่าและเพิ่มลงในแผนที่ของคุณ:

groupLayer = arcpy.mapping.Layer(r"EmptyGroupLayer.lyr")
arcpy.mapping.AddLayer(dataFrame, groupLayer, "BOTTOM")

จากนั้นคุณสามารถใช้ฟังก์ชันAddLayerToGroupเพื่อเพิ่มเลเยอร์อื่นภายใต้เลเยอร์กลุ่มของคุณ


ฉันมีกลุ่มเลเยอร์สองกลุ่ม แต่อยู่ในกลุ่มเพิ่มเติม ลองเรียกพวกเขาว่าผู้ปกครองและเด็ก ผู้ปกครองต่างมีเอกลักษณ์ แต่เด็ก ๆ ในผู้ปกครองแต่ละคนจะเหมือนกัน เหตุการณ์ EG> นกและการตัดขวาง> นก อย่างไรก็ตามเพื่อหลีกเลี่ยงความขัดแย้งของเลเยอร์กลุ่มนกทั้งสองที่มีชื่อเหมือนกันหรือไม่?
โอลิเวอร์ Burdekin

สิ่งนี้ทำให้ฉันมีข้อผิดพลาดเมื่อฉันเรียกว่า AddLayerToGroup ฉันพบวิธีแก้ปัญหาที่นี่: geonet.esri.com/thread/105771#comment-393442 groupLayer = arcpy.mapping.ListLayers(mxd, "AAAA", dataFrame)[0]
Gabriel Littman

4

บันทึกเลเยอร์กลุ่มว่างเปล่าเป็น.lyrไฟล์ จากนั้นคุณสามารถใช้AddLayerเพื่อเพิ่มลงในแผนที่ของคุณแล้วเพิ่มเลเยอร์ใหม่จากที่นั่น


0

สำหรับ ArcGIS 10.2 และ 10.3 คุณไม่สามารถเพิ่มเลเยอร์ในกลุ่มนั้นได้ คุณควรอ้างถึงเลเยอร์ที่เพิ่มใน TOC ไม่ใช่เลเยอร์บนไดรฟ์ ทำตามขั้นตอนที่อธิบายไว้ในโพสต์ต่อไปนี้: AddLayertoGroup

newlyrGr = arcpy.mapping.ListLayers(df)[0]

จากนั้นทำงานได้ทั้งหมด!

arcpy.mapping.AddLayerToGroup(df, newlyrGr, feat_layer)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.