ArcPy में मेमोरी कार्यक्षेत्र में सेटिंग?


11

क्या env.workspace = "in_memory"आर्कजीआई प्रो और आर्कगिस 10.2.2 (या 10.3) आर्किटेक्चर दोनों का उपयोग करके आर्कपी में सेट करना संभव है ?

मैं जो करने की कोशिश कर रहा हूं उसे डिस्क के विपरीत मेमोरी में लिखे गए स्नैप पे पॉइंट ऑपरेशन का आउटपुट मिलता है ।

मुझे पता है कि मैं डिस्क पर लिख सकता हूं और फिर इसे मेमोरी में ला सकता हूं लेकिन यह मदद नहीं करेगा। मैं भौतिक मीडिया में लेखन के उपयोग को कम करने की एक श्रृंखला का अनुकूलन करने की कोशिश कर रहा हूं जो एक ऐसी प्रक्रिया का उत्पादन है जो केवल अगली प्रक्रिया के इनपुट के रूप में आवश्यक है।

जवाबों:


15

मैं यहाँ एक उत्तर फेंकने जा रहा हूँ क्योंकि दोनों उत्तर इस प्रकार 100% सही नहीं हैं।

2 आइटम हैं जो टूल से टूल में भिन्न हो सकते हैं।

  1. यदि यह कार्यक्षेत्र वातावरण का सम्मान करता है (यह आइटम हमेशा टूल हेल्प पेज पर प्रलेखित है)
  2. यदि यह in_memoryकार्यक्षेत्र का उपयोग कर सकता है (यह आइटम स्पष्ट रूप से प्रलेखित नहीं किया जा सकता है। यदि आपको इसका समर्थन नहीं है तो आपको एक नोट देखने की अधिक संभावना है in_memory)

बस जवाब देने के लिए "आप पर्यावरण कार्यक्षेत्र को in_memory सेट कर सकते हैं"। इसका जवाब है हाँ।

>>> import arcpy
>>> arcpy.env.workspace = r"in_memory"
>>> arcpy.CopyFeatures_management(r"c:\temp\foo.shp", "myinmemoutput")
<Result 'in_memory\\myinmemoutput'>
>>> arcpy.Exists("myinmemoutput")
True

स्नैप पॉर पॉइंट कार्यक्षेत्र के माहौल का सम्मान करता है प्रति दस्तावेज और समझाया गया है पाइथन नमूने। और एक परीक्षण दिखाता है कि आप आउटपुट को लिख सकते हैं in_memoryऔर उस चर संदर्भ के साथ काम कर सकते हैं ... दूसरे टूल में डाल सकते हैं, या परिणाम को बचा सकते हैं

>>> import arcpy
>>> arcpy.env.workspace = r"in_memory"
>>> arcpy.CheckOutExtension("SPATIAL")
u'CheckedOut'
>>> snapOut = arcpy.sa.SnapPourPoint("e:/gpservices101/hydro/US30m/test.gdb/sourcepoint", "e:/gpservices101/hydro/US30m/Region08a/Input/elev_cm", 1,"PourPtID")
>>> snapOut
in_memory\SnapPou_sour1
>>> arcpy.Exists(snapOut)
True
>>> snapOut.save(r"c:\temp\todisk.tif")
>>> arcpy.Exists(r"c:\temp\todisk.tif")
True

-1

दुर्भाग्यवश, मुझे नहीं लगता कि कार्यक्षेत्र को in_memory स्थान पर सेट करना जैसे कि आपके प्रश्न में संभव है; इस तरह से कि जियोप्रोसेसिंग उपकरण अपने आउटपुट स्थानों को_मामोरी वर्कस्पेस में डिफॉल्ट करेंगे।

मैंने अभी-अभी '\\in_memory'अपने लिए कार्यक्षेत्र सेट करने की कोशिश की , और इसे एक सरल CopyFeatures_management()टूल रन के साथ परीक्षण किया । स्ट्रिंग का प्रतिनिधित्व arcpy.env.workspaceवास्तव में करने के लिए सेट है '\\in_memory', लेकिन मुझे लगता है कि CopyFeatures_management()उपकरण इस मामले में कार्यक्षेत्र पर्यावरण सेटिंग का सम्मान नहीं कर रहा है।

यह भयानक होगा, अगर हम in_memoryमानचित्र दस्तावेज़ स्तर पर डिफ़ॉल्ट कार्यक्षेत्र के रूप में सेट कर सकते हैं । शायद आप इसे एक आर्किस आइडिया के रूप में उठा सकते हैं ?

अच्छी किस्मत।

संपादित करें:

हे मैं भी सोच रहा था जब से आप स्नैप पौर पॉइंट टूल का उपयोग कर रहे हैं , हमें इसे अलग तरीके से देखने की आवश्यकता हो सकती है। स्नैप पॉर पॉइंट सीधे पॉइंट पॉइंट क्लास पर कार्य करता दिखाई देता है और टूल परिणाम के हिस्से के रूप में आउटपुट फीचर क्लास नहीं बनाता है। क्या हम वहाँ से कुछ बिंदुओं और काम की अस्थायी, in_memory प्रतिलिपि बना सकते हैं?

EDIT से EDIT:

सच है, ठीक है आपने उल्लेख किया है कि आपको यह पहले से ही पता है - क्षमा करें।


मैं ऐसा कर सकता हूं (ArcGIS विचार)। मुझे आश्चर्य है कि लोग इस प्रश्न को क्यों वोट देंगे? मैं आपसे सहमत हूं जिम यह कमाल होगा।
यदि आप नहीं जानते हैं - बस

आह मुझे अब सवाल आता है। हाँ जिम सही है, कार्यक्षेत्र सेट करना जैसे कि कुछ भी नहीं है। आपको अपनी व्यक्तिगत प्रक्रियाओं के लिए in_memory निर्दिष्ट करना होगा। आप इसे उस व्यवहार के साथ डिफ़ॉल्ट रूप से प्राप्त नहीं कर सकते।
थॉमस

1
नीचे का वोट आपके प्रश्न की कम लंबाई से आया हो सकता है। मैं देख रहा हूं कि आपका क्या मतलब है - हो सकता है कि कुछ और संदर्भ के साथ अपने प्रश्न को थोड़ा संपादित करें और अन्य इसे वापस वोट करेंगे?
जिम

ठीक है, यह ऐसा सीधा सवाल है, मुझे इसे फुलाने की आवश्यकता नहीं थी। आप जैसा कहेंगे वैसा ही करूंगा।
यदि आप नहीं जानते हैं - बस

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