ฉันมีคลาสฟีเจอร์จุดใหญ่ในไฟล์ฐานข้อมูลภูมิศาสตร์ (~ 4 000 000 บันทึก) นี่เป็นตารางคะแนนปกติที่มีความละเอียด 100 ม.
ฉันต้องทำการวางแนวทั่วไปบนเลเยอร์นี้ สำหรับสิ่งนี้ฉันสร้างกริดใหม่โดยที่แต่ละจุดอยู่ตรงกลางของจุด 4 "เก่า":
* * * *
o o o
* * * *
o o o
* * * *
[*] = จุดของตารางเดิม - [o] = จุดของตารางใหม่
ค่าแอททริบิวของแต่ละจุดใหม่จะคำนวณตามค่าน้ำหนักของ 4 เพื่อนบ้านในกริดเก่า ฉันวนรอบทุกจุดของกริดใหม่ของฉันและสำหรับแต่ละจุดฉันวนรอบทุกจุดบนกริดเก่าของฉันเพื่อค้นหาเพื่อนบ้าน (โดยการเปรียบเทียบค่าของ X และ Y ในตารางคุณลักษณะ) เมื่อพบ 4 เพื่อนบ้านแล้วเราก็ออกไปจากวง
ไม่มีความซับซ้อนของระเบียบวิธีที่นี่ แต่ปัญหาของฉันคือว่าจากการทดสอบครั้งแรกของฉันสคริปต์นี้จะใช้เวลานานหลายสัปดาห์เพื่อให้เสร็จสมบูรณ์ ...
คุณเห็นความเป็นไปได้ที่จะทำให้มีประสิทธิภาพมากขึ้นหรือไม่ ความคิดเล็ก ๆ น้อย ๆ ที่อยู่บนหัวของฉัน:
- จัดทำดัชนีฟิลด์ X และ Y => ฉันทำเช่นนั้น แต่ไม่ได้สังเกตเห็นการเปลี่ยนแปลงประสิทธิภาพที่สำคัญ
- ใช้เคียวรีเชิงพื้นที่เพื่อค้นหาเพื่อนบ้านไม่ใช่แบบอิงแอตทริบิวต์ มันจะช่วยได้จริงหรือ ฟังก์ชันเชิงพื้นที่ใน ArcGIS ควรทำงานอย่างไร ฉันสงสัยว่าเช่นการบัฟเฟอร์แต่ละจุดใหม่จะพิสูจน์ได้ว่ามีประสิทธิภาพมากขึ้น
- แปลงคลาสคุณลักษณะเป็น NumPy Array จะช่วยได้ไหม ฉันยังไม่ได้ทำงานกับ NumPy มากนักและฉันก็ไม่อยากดำดิ่งลงไปจนกว่าจะมีคนบอกฉันว่ามันอาจช่วยลดเวลาในการประมวลผลได้
- มีอะไรอีกไหม