ฉันมีรหัส Python ที่ออกแบบมาเพื่อใช้ชี้ shapefiles ผ่านเวิร์กโฟลว์ต่อไปนี้:
- ผสานจุด
- รวมคะแนนเข้าด้วยกันเช่นจุดใด ๆ ที่อยู่ในระยะ 1 เมตรจากกันกลายเป็นจุดเดียว
- สร้างเลเยอร์คุณสมบัติโดยเลือกจุดที่มี z <10
- คะแนนบัฟเฟอร์
- รูปหลายเหลี่ยมถึงความละเอียด 1 เมตร
- จัดประเภทใหม่โดยที่ 1 - 9 = 1; NoData = 0
แต่ละรูปร่างไฟล์มีประมาณ 250,000 ถึง 350,000 จุดครอบคลุม ~ 5x7 กม. ข้อมูลจุดที่ใช้เป็นอินพุตเป็นตัวแทนของตำแหน่งต้นไม้ แต่ละจุด (เช่นต้นไม้) มีค่า "z" ที่เกี่ยวข้องซึ่งแสดงถึงรัศมีมงกุฎและใช้ในกระบวนการบัฟเฟอร์ ความตั้งใจของฉันคือการใช้เอาต์พุตไบนารีสุดท้ายในกระบวนการแยกต่างหากเพื่อสร้างแรสเตอร์ที่อธิบายถึงหลังคาครอบ
ฉันทดสอบกับรูปร่างสี่ไฟล์และสร้างแรสเตอร์ 700MB และใช้เวลา 35 นาที (โปรเซสเซอร์ i5 และ RAM 8GB) เห็นว่าฉันจะต้องเรียกใช้กระบวนการนี้ในรูปร่างที่ 3500 ฉันจะขอบคุณคำแนะนำใด ๆ เพื่อปรับปรุงกระบวนการ (ดูรหัสที่แนบมา) โดยทั่วไปแล้ววิธีที่ดีที่สุดในการจัดการกับการประมวลผลข้อมูลขนาดใหญ่คืออะไร โดยเฉพาะอย่างยิ่งมีการปรับแต่งโค้ดหรือเวิร์กโฟลว์ที่สามารถช่วยเพิ่มประสิทธิภาพได้หรือไม่?
แก้ไข :
เวลา (% ของทั้งหมด) สำหรับงานการประมวลผลทางภูมิศาสตร์
- ผสาน = 7.6%
- รวม = 7.1%
- คุณสมบัติของ Lyr = 0
- บัฟเฟอร์ = 8.8%
- โพลีถึงแรสเตอร์ = 74.8%
- จัดประเภทใหม่ = 1.6%
# Import arcpy module
import arcpy
# Check out any necessary licenses
arcpy.CheckOutExtension("spatial")
# Script arguments
temp4 = arcpy.GetParameterAsText(0)
if temp4 == '#' or not temp4:
temp4 = "C:\\gdrive\\temp\\temp4" # provide a default value if unspecified
Reclassification = arcpy.GetParameterAsText(1)
if Reclassification == '#' or not Reclassification:
Reclassification = "1 9 1;NODATA 0" # provide a default value if unspecified
Multiple_Value = arcpy.GetParameterAsText(2)
if Multiple_Value == '#' or not Multiple_Value:
Multiple_Value = "C:\\t1.shp;C:\\t2.shp;C:\\t3.shp;C:\\t4.shp" # provide a default value if unspecified
# Local variables:
temp_shp = Multiple_Value
Output_Features = temp_shp
temp2_Layer = Output_Features
temp_Buffer = temp2_Layer
temp3 = temp_Buffer
# Process: Merge
arcpy.Merge_management(Multiple_Value, temp_shp, "x \"x\" true true false 19 Double 0 0 ,First,#,C:\\#########omitted to save space
# Process: Integrate
arcpy.Integrate_management("C:\\gdrive\\temp\\temp.shp #", "1 Meters")
# Process: Make Feature Layer
arcpy.MakeFeatureLayer_management(temp_shp, temp2_Layer, "z <10", "", "x x VISIBLE NONE;y y VISIBLE NONE;z z VISIBLE NONE;Buffer Buffer VISIBLE NONE")
# Process: Buffer
arcpy.Buffer_analysis(temp2_Layer, temp_Buffer, "z", "FULL", "ROUND", "NONE", "")
# Process: Polygon to Raster
arcpy.PolygonToRaster_conversion(temp_Buffer, "BUFF_DIST", temp3, "CELL_CENTER", "NONE", "1")
# Process: Reclassify
arcpy.gp.Reclassify_sa(temp3, "Value", Reclassification, temp4, "DATA")