รับรายการคุณสมบัติที่เลือกใน ArcGIS สำหรับเดสก์ท็อปโดยใช้รหัส Python หรือไม่


20

ฉันมีคำถามเกี่ยวกับการเลือกใน ArcGIS for Desktop สมมติว่าฉันมีหนึ่งเลเยอร์ใน ArcMap และฉันได้เลือกคุณสมบัติสองในห้า

เป็นไปได้ไหมที่จะรับรายการคุณสมบัติที่เลือกทั้งหมดโดยใช้ Python

มันจะดีถ้ามีวิธีที่จะได้รับหนึ่ง (หรือทั้งหมด) คุณลักษณะพิเศษของคุณสมบัติที่เลือกที่เก็บไว้ในรายการที่สามารถเขียนลงในไฟล์ txt

เป็นไปได้ไหมที่จะทำเช่นนี้ใน ArcGIS for Desktop?

คำตอบ:


33

เมื่อใดก็ตามที่คุณมีการเลือกในเลเยอร์วัตถุเคอร์เซอร์จะส่งกลับแถวที่เลือกเท่านั้น

for row in arcpy.SearchCursor("name_of_layer_with_selection"):
    print row.field1, row.field2

6
แต่ปัญหาคือถ้าคุณได้รับคุณสมบัติทั้งหมดที่ส่งคืนคุณไม่ทราบว่าเลือกทั้งหมดหรือไม่มีเลย
Matej

2
สิ่งนี้ใช้กับคุณสมบัติที่เลือกในคลาสคุณลักษณะหรือไม่
Jio

13

ฟังก์ชั่นอธิบายจะส่งคืนรายการ ฉันไม่แน่ใจว่านี่เร็วกว่าวิธีเคอร์เซอร์หรือไม่ แต่ฉันชอบสิ่งนี้เป็นเครื่องมือที่มีประโยชน์ รายการผลลัพธ์คือ ID วัตถุสำหรับชุดการเลือก

import arcpy

aa = arcpy.Describe("someFC")
ss = aa.FIDset
tt = ss.split("; ")
Print tt

[u'1363', u'1364', u'1365', u'1367', u'1369', u'1370']

ทางออกที่ดีเช่นกัน! น่าเศร้าที่ฉันไม่สามารถตั้งส้นสีเขียวสองครั้งได้ วิธีการแก้ปัญหานี้ทำให้สคริปต์ยังเป็นอิสระจากรุ่น ArcGIS ที่แตกต่างกันเพราะใน ArcGIS 10.1 เคอร์เซอร์จะถูกเรียกในลักษณะที่แตกต่างจากใน ArcGIs 10.0 (ArcGIS 10.1 arcpy.da.SearchCursor, ArcGIS 10.0 arcpy.SearchCursor ... )
Sven

4
เคอร์เซอร์ทั้งสองประเภทมีอยู่ที่ 10.1 คุณไม่ต้องใช้เคอร์เซอร์ arcpy.da ใหม่
blah238

1
คำตอบนี้ให้วิธีการตรวจสอบการเลือกที่ว่างเปล่าซึ่งจะป้องกันการเรียกเครื่องมือในคลาสคุณลักษณะทั้งหมดโดยไม่ได้ตั้งใจเมื่อจริง ๆ แล้วมันเป็นศูนย์คุณลักษณะที่เกิดขึ้นเพื่อตอบสนองเกณฑ์การเลือกของคุณ
nickbrick

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