मैं बड़े डेटा जियोप्रोसेसिंग को ऑप्टिमाइज़ करने के लिए NumPy सरणियों का उपयोग कैसे कर सकता हूं?


16

मैं सीखने में रुचि रखता हूं कि जियोप्रोसेसिंग का अनुकूलन करने के लिए NumPy सरणियों का उपयोग कैसे करें। मेरे अधिकांश कार्यों में "बड़ा डेटा" शामिल है, जहां कुछ कार्यों को पूरा करने के लिए जियोप्रोसेसिंग में अक्सर दिन लगते हैं। कहने की जरूरत नहीं है, मैं इन दिनचर्या को अनुकूलित करने में बहुत दिलचस्पी रखता हूं। आर्कजीआईएस 10.1 में कई प्रकार के कार्य हैं जिन्हें आर्कपी के माध्यम से एक्सेस किया जा सकता है, जिनमें शामिल हैं:

  1. NumPyArrayToFeatureClass (arcpy.da)
  2. RasterToNumPyArray (चापलूसी)
  3. TableToNumPyArray (arcpy.da)

उदाहरण के प्रयोजनों के लिए, मान लें कि मैं निम्नलिखित प्रसंस्करण गहन वर्कफ़्लो को ऑप्टिमाइज़ करना चाहता हूँ, जो कि NumPy सरणियों का उपयोग करता है:

यहाँ छवि विवरण दर्ज करें

यहां सामान्य विचार यह है कि वेक्टर-आधारित बिंदुओं की एक बड़ी संख्या है, जो वेक्टर और रेखापुंज-आधारित संचालन से गुजरती हैं, जिसके परिणामस्वरूप द्विआधारी पूर्णांक रेखापुंज डेटासेट होते हैं।

मैं इस प्रकार के वर्कफ़्लो को अनुकूलित करने के लिए NumPy सरणियों को कैसे शामिल कर सकता हूं?


2
FYI करें, एक NumPyArrayToRaster फ़ंक्शन और एक FeatureClassToNumPyAray फ़ंक्शन भी है।
blah238

2
ArcGIS साथ Multiprocessing ब्लॉग पोस्ट कुछ अच्छी जानकारी है कि यहाँ लागू हो सकता है। आप अन्य बहुविकल्पीय प्रश्नों में भी रुचि ले सकते हैं ।
blah238

3
यह मुझे लगता है कि आर्कपी में नेम्पी का उपयोग करने के बारे में सोचने से पहले, आपको सबसे पहले यह समझने की जरूरत है कि पायथन सूचियों पर न्यूमपी सरणियां क्या लाभ प्रदान करती हैं। Numpy का दायरा ArcGIS की तुलना में बहुत व्यापक है।
जीन

2
@ यह , StackOverflow जवाब यह बहुत अच्छी तरह से योग करने के लिए लगता है।
ब्लाह 238

3
एक अलग रूप में, यदि आप भी Hadoop में रुचि रखने वाले कर रहे हैं बहुत - वहाँ बड़ी (स्थानिक) डेटा के घटनाक्रम के लायक इस में बाहर की जाँच कर रहे हैं वीडियो और कम से Hadoop के लिए जीआईएस उपकरण
PolyGeo

जवाबों:


3

मुझे लगता है कि यहाँ प्रश्न का क्रूस आपके वर्कफ़्लो में कौन से कार्य हैं जो वास्तव में आर्कगिस पर निर्भर नहीं हैं? स्पष्ट उम्मीदवारों में सारणीबद्ध और रेखापुंज संचालन शामिल हैं। यदि डेटा को एक gdb या किसी अन्य ESRI प्रारूप के भीतर शुरू और समाप्त होना चाहिए, तो आपको यह पता लगाने की आवश्यकता है कि इस सुधारक की लागत को कम कैसे करें (यानी, गोल यात्राओं की संख्या को कम से कम करें) या इसे भी उचित ठहराएं - बस बहुत हो सकता है तर्कसंगत बनाना महंगा है। एक और युक्ति पहले अपने अजगर को अनुकूल डेटा मॉडल का उपयोग करने के लिए वर्कफ़्लो को संशोधित करना है (उदाहरण के लिए, आप कितनी जल्दी वेक्टर बहुभुज खोद सकते हैं?)।

@Gene को प्रतिध्वनित करने के लिए, जबकि numpy / scipy वास्तव में महान हैं, यह मत मानिए कि ये केवल उपलब्ध दृष्टिकोण हैं। आप वैकल्पिक संरचनाओं के रूप में सूचियों, सेटों, शब्दकोशों का उपयोग भी कर सकते हैं (हालांकि @ blah238 की लिंक दक्षता अंतर के बारे में बहुत स्पष्ट है), वहाँ भी हैं, जनरेटर, पुनरावृत्तियों, और अजगर में इन संरचनाओं को काम करने के लिए अन्य सभी प्रकार के महान, तेज, कुशल उपकरण। रेमंड हेटिंगर, पायथन डेवलपर्स में से एक है, वहां सभी प्रकार के महान सामान्य पायथन सामग्री हैं। यह वीडियो एक अच्छा उदाहरण है

इसके अलावा, मल्टीप्लेक्स प्रोसेसिंग पर @ blah238 के विचार को जोड़ने के लिए, यदि आप IPython के भीतर लिख रहे हैं / निष्पादित कर रहे हैं (न कि केवल "नियमित" अजगर पर्यावरण), तो आप कई कोर के दोहन के लिए उनके "समानांतर" पैकेज का उपयोग कर सकते हैं। मैं इस सामान के साथ नहीं हूं, लेकिन इसे मल्टीप्रोसेसिंग सामान की तुलना में थोड़ा उच्च-स्तरीय / नौसिखिया-अनुकूल लगता है। शायद वास्तव में सिर्फ व्यक्तिगत धर्म का मुद्दा है, इसलिए नमक के एक दाने के साथ इसे लें। इस वीडियो में 2:13:00 पर शुरू होने के बारे में एक अच्छा अवलोकन है । पूरा वीडियो सामान्य रूप से IPython के लिए बहुत अच्छा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.