Arcmap เลือกตามคุณสมบัติด้วย Python


9

ฉันต้องการต่อไปนี้เพื่อเลือก (ไฮไลต์) เลเยอร์ "โครงการ" ที่ตัดกันตารางแล้วดึงระเบียนจาก "กริด" ที่เลือก ฉันไม่ต้องการบันทึกเลเยอร์

หมายเหตุ: การเรียกใช้สคริปต์จากภายใน ArcMap ในหน้าต่าง Python Console

import arcpy

# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("project","project_lyr")

# Then add a selection to the layer based on location to features in another feature class 
arcpy.SelectLayerByLocation_management("project_lyr","INTERSECT","Grid")

รหัสนี้ทำงานและไม่ได้รับข้อผิดพลาด แต่ก็ไม่ได้เลือก (เน้น) คุณลักษณะใด ๆ ความคิดใด ๆ ทำไม? ยังทำงานช้ามาก

ผล

โดยทั่วไปฉันกำลังพยายามทำสิ่งนี้:

ป้อนคำอธิบายรูปภาพที่นี่

มันทำงานเร็วมากเกือบจะทันที แต่ฉันต้องการทำแบบเดียวกันโดยใช้ python ฉันต้องการค่าจากตารางของคุณสมบัติที่เลือกฉันไม่ต้องการสำเนาของเลเยอร์

ส่วนหนึ่งของการแก้ไขอาจใช้พื้นที่ทำงานในหน่วยความจำซึ่งก็คือ

การเขียนข้อมูลไปยังพื้นที่ทำงานในหน่วยความจำมักจะเร็วกว่าการเขียนลงในรูปแบบอื่น ๆ ...

ไม่แน่ใจว่าจะใช้พื้นที่ทำงานในหน่วยความจำได้อย่างไร


คุณใช้งานสคริปต์นี้จากภายใน ArcMap (เช่นในคอนโซล Python) หรือไม่? หรือจากภายนอก ArcMap (เช่นภายใน IDLE หรือเครื่องมือแก้ไข Python อื่น) วิธีเดียวที่ ArcMap จะ "เลือก (เน้น) คุณลักษณะใด ๆ " มาจากภายใน ArcMap ฉันสงสัยว่าคุณกำลังเรียกใช้สคริปต์จากนอก ArcMap เพราะimport arcpyคำสั่งใช้เวลาสักครู่ในการทำงาน
dmahr

ฉันกำลังเรียกใช้สคริปต์จากภายใน ArcMap ในหน้าต่าง Python Console
อุโมงค์ไปข้างหน้า

หากคุณเรียกใช้จากภายใน ArcMap คุณไม่จำเป็นต้องใช้arcpy.MakeFeatureLayer()บรรทัดเนื่องจากprojectเป็นเลเยอร์อยู่แล้ว arcpy.SelectLayerByLocation_management("project","INTERSECT","Grid")เพียงแค่ทำ
dmahr

รูปแบบคำถามที่ยอดเยี่ยม!
แบรด Nesom

ขอบคุณ @dmahr ยังคงทำงานช้ากว่า Select by Attribute ในตัว แต่ใช้งานได้
อุโมงค์ไปข้างหน้า

คำตอบ:


2

คำถามที่ดี!

Dmahr นั้นถูกต้องเพียงแค่เลือกเลเยอร์แทนที่จะสร้างเลเยอร์ฟีเจอร์ ฉันจะเพิ่มตัวแปรส่วนที่เหลือแม้จะเป็นตัวเลือกก็ตาม

arcpy.SelectLayerByLocation_management ("project_lyr", "INTERSECT", "Grid", "#", "NEW_SELECTION")

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

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