ฉันใช้ "in_memory" ไม่นานมานี้ มันมีประโยชน์มากเนื่องจากมีศักยภาพในการเพิ่มความเร็วในการประมวลผลสำหรับงานบางอย่างได้อย่างมากอย่างไรก็ตามถ้าคุณทำงานกับชุดข้อมูลขนาดใหญ่มากอาจทำให้โปรแกรมของคุณทำงานล้มเหลว
คุณสามารถใช้ "in_memory" เพื่อกำหนดผลลัพธ์ของกระบวนการ ... บ่อยครั้งหากฉันกำลังทำงานในคลาสคุณลักษณะฉันจะคัดลอกไปยังพื้นที่ทำงาน "in_memory" ก่อน:
inFeature = r'C:\myDir.gdb\myFeature'
memoryFeature = "in_memory" + "\\" + "myMemoryFeature"
arcpy.CopyFeatures_management(inFeature, memoryFeature)
โปรดทราบว่าคุณไม่จำเป็นต้องเชื่อมต่อหน่วยความจำคุณลักษณะร่วมกันเหมือนฉันคุณสามารถเขียนมันออกมาเป็น "in_memory \ myMemoryFeature" ฉันแค่ทำแบบนั้นเพื่อสลับไปมาระหว่าง "in_memory" และไดเรกทอรีทางกายภาพได้อย่างง่ายดาย จากนั้นคุณสามารถดำเนินการกับคุณสมบัติของคุณในหน่วยความจำ เมื่อเสร็จแล้วคุณสามารถกลับกระบวนการเพื่อบันทึกกลับไปยังไดเรกทอรี
ฉันอาจผิด แต่ฉันเชื่อว่ามันไม่เหมือนกับการสร้างเลเยอร์คุณลักษณะ ชั้นคุณลักษณะให้คุณเข้าถึงวิธีการเลือกและการดำเนินการเฉพาะชั้นอื่น ๆ คิดว่าไดเรกทอรี "in_memory" เป็นเวกเตอร์เทียบเท่ากับวัตถุแรสเตอร์ (raster = arcpy.Raster (myRasterLocation))
หากต้องการล้างข้อมูลหลังจากใช้ "in_memory" เพียงเพิ่มบรรทัดของรหัสต่อไปนี้:
arcpy.Delete_management("in_memory")
หวังว่าจะช่วย