मेरे पास फ़ाइल जियोडेटाबेस (~ 4 000 000 रिकॉर्ड) में एक बहुत बड़ा बिंदु सुविधा वर्ग है। यह 100 मीटर रिज़ॉल्यूशन वाले अंकों का एक नियमित ग्रिड है।
मुझे इस परत पर एक तरह का सामान्यीकरण करने की आवश्यकता है। इसके लिए, मैं एक नया ग्रिड बनाता हूं जहां प्रत्येक बिंदु 4 "पुराने" बिंदुओं के बीच में स्थित है:
* * * *
o o o
* * * *
o o o
* * * *
[*] = मूल ग्रिड का बिंदु - [o] = नए ग्रिड का बिंदु
प्रत्येक नए बिंदु के विशेषता मूल्य की गणना पुराने ग्रिड में उसके 4 पड़ोसियों के भारित मूल्यों के आधार पर की जाती है। मैं इस प्रकार अपने नए ग्रिड के सभी बिंदुओं पर लूप करता हूं और उनमें से प्रत्येक के लिए, मैं अपने पुराने ग्रिड के सभी बिंदुओं पर लूप करता हूं, ताकि पड़ोसियों को खोजने के लिए (विशेषता तालिका में एक्स और वाई के मूल्यों की तुलना करके)। एक बार 4 पड़ोसी मिल जाने के बाद, हम लूप से बाहर निकलते हैं।
यहां कोई पद्धति जटिल नहीं है, लेकिन मेरी समस्या यह है कि, मेरे पहले परीक्षणों के आधार पर, यह स्क्रिप्ट पूरी होने के लिए हफ्तों तक चलेगी ...
क्या आप इसे अधिक कुशल बनाने की कोई संभावना देखते हैं? मेरे सिर के शीर्ष पर कुछ विचार:
- क्षेत्रों को अनुक्रमित करें X और Y => मैंने ऐसा किया, लेकिन किसी भी महत्वपूर्ण प्रदर्शन परिवर्तन पर ध्यान नहीं दिया
- विशेषता-आधारित के बजाय पड़ोसियों को खोजने के लिए एक स्थानिक क्वेरी करें। क्या यह वास्तव में मदद करेगा? ArcGIS में स्थानिक कार्य क्या करना चाहिए? मुझे संदेह है कि, उदाहरण के लिए, प्रत्येक नए बिंदु को बफर करना अधिक कुशल साबित होगा
- एक NumPy Array में फीचर क्लास ट्रांसफ़ॉर्म करें। क्या इससे मदद मिलेगी? मैंने अब तक NumPy के साथ बहुत काम नहीं किया है और मैं इसमें डुबकी नहीं लेना चाहूंगा जब तक कि कोई मुझे नहीं बताता कि यह वास्तव में प्रसंस्करण समय को कम करने में मदद कर सकता है
- और कुछ?