क्या आर्कगिस मॉडलब्यूलर मैनुअल एडिटिंग के लिए एक्सेल फाइल खोल सकता है, फिर उन एडिट्स को वापस मॉडल में फीड कर सकता है?


10

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

मैं बिंदु को स्पष्ट करने में मदद करने के लिए नीचे एक उच्च-स्तरीय योजनाबद्ध रूपरेखा शामिल करता हूं (मुझे लगता है कि इससे शुरू करने के लिए बहुत समझ नहीं हो सकती है)।

एक्सेल फ़ाइल को संपादित करने के दौरान मॉडल रुक जाएगा, फिर एक बार सहेजने और बंद करने के बाद फिर से शुरू करें

तो मॉडल चलेगा, जियोप्रोसेसिंग कार्यों के एक जोड़े को पूरा करें, एक एक्सेल फ़ाइल खोलने के लिए रुकें, उपयोगकर्ता को इसे संपादित करने के लिए प्रतीक्षा करें, इसे सहेजें और इसे बंद करें, उस एक्सेल फाइल को एक विशेषता तालिका में शामिल होने के लिए फिर से शुरू करने और फिर एक नंबर चलाने के लिए। अन्य जियोप्रोसेसिंग कार्यों के।

मुझे लगता है कि यह एक पायथन स्क्रिप्ट या मॉडल में दो को शामिल करने की आवश्यकता होगी। वर्तमान में हालांकि मुझे यह जानने में दिलचस्पी है कि अवधारणा वास्तव में संभव है या नहीं।


1
मुझे यकीन है कि मानक मॉडल बिल्डर टूल के साथ आप ऐसा नहीं कर पाएंगे क्योंकि मॉडल को रोकने का कोई तरीका नहीं है, उपयोगकर्ता को मॉडल को पुनरारंभ करने के लिए एक्सेल को बंद करने के लिए उपयोगकर्ता को यह कहने के लिए आपको किसी प्रकार की ट्रिगर की भी आवश्यकता होगी। एक अलग प्रक्रिया (एक्सेल) को जन्म देने के बाद आप टेक्स्ट फाइल में एक झंडे को देखने वाले अनंत लूप में भेजी गई स्क्रिप्ट के साथ इसे प्राप्त कर सकते हैं? मैंने ऐसा कभी नहीं किया है और यह नहीं जानता कि नुकसान क्या हैं। यदि आप इसे मॉडलबिल्डर में रखना चाहते हैं, तो मैं एक्सेल संपादन पहले करूंगा और फिर मॉडल को चलाऊंगा।
हॉर्नबीड

धन्यवाद @Hornbydd - मेरे पास समान विचार हैं। फ़ाइल को पहले संपादित करना और फिर मॉडल चलाना वह है जो मैंने सुझाया है, लेकिन मुझे बताया गया है कि एक, एकीकृत मॉडल की आवश्यकता है ...
the_bonze

1
मुझे पता है कि एक स्क्रिप्ट किसी फ़ाइल की तिथि और समय के मोहर को देख सकती है यह जानने के लिए कि क्या इसे संपादित किया गया है, फिर वहाँ से मॉडल को फिर से शुरू करें? यह रोकना समस्या है, मुझे लगता है।
the_bonze

हाँ, मॉडल बिल्डर को एक वर्कफ़्लो को स्वचालित करने के लिए डिज़ाइन किया गया है ताकि प्रसंस्करण में तेजी आ सके और बीच में कुछ अनिश्चित गति न हो, यदि उपयोगकर्ता उदाहरण के लिए दोपहर के भोजन के लिए रवाना होता है, तो क्या होगा? :) बस अब मेरी तरह!
सींग 12

जवाबों:


1

ऐसा लगता है कि आपको ModelBuilder में एक मॉडल की तुलना में एक कस्टम पायथन टूल का अधिक विकास करने की आवश्यकता है। xlwtया http://www.python-excel.org/xlutils पर आपको अपनी एक्सेल फाइल को लिखने देगा ( xlsx फाइल्स को हैंडल करेगा)। यदि संपादन मामूली हैं, तो आप संभवतः इसे एक मानक आर्कटूलबॉक्स टूल (कुछ रचनात्मकता के साथ) में शामिल कर सकते हैं। यदि आप 10.1+ का उपयोग कर रहे हैं, तो आप GUI कार्य करने के लिए Python Add-In या Python Toolbox भी बना सकते हैं।XlsxWriter


क्या Python AddIns 10.1+ में पहले से ही परिष्कृत GUI विकल्प प्रदान करता है? मैंने सोचा था कि केवल .NET और Java AddIns ही इन्हें उपलब्ध कराते हैं ... Python केवल AddIns को बिना किसी GUI (कमांड, टूल) के प्रदान करता है।
जर्गेन जोर्निग

1
@ JürgenZornig यह आसान नहीं है thaaaat: othergisblog.blogspot.com/2013/07/…
चाड कूपर

धन्यवाद @ChadCooper। मुझे मॉडल को मॉडल बिल्डर में रखने की आवश्यकता है, इसलिए पायथन ऐड-इन्स ठीक हैं, लेकिन एक इकाई के रूप में मॉडल को पूर्ण-विकसित पायथन उपकरण के बजाय मॉडल बिल्डर में होना चाहिए।
the_bonze

@ इस अच्छे ArcPy / Tkinter क्विकस्टार्ट ट्यूटोरियल के लिए वैसे भी धन्यवाद ... यह कोशिश करनी है!
जर्गेन ज़ोर्निग

1

मैं इसके बारे में सोच रहा हूं और यह संभव है कि मैंने एक उपन्यास समाधान ढूंढ लिया है। आप दो उपयोगकर्ता मापदंडों के साथ टूलबॉक्स में एक पायथन स्क्रिप्ट सेट करते हैं, सबसे पहले एक्सेल EXE का स्थान। यह भी हार्डकोड संभावना filepath स्थानों (Office12, Office13 आदि) की एक सूची की जांच करने के लिए चालाकी से कोडित किया जा सकता है।

अगला सबप्रोसेस.कॉल फ़ंक्शन का उपयोग करें। इस विधि का उपयोग करने के बारे में वास्तव में कुछ साफ बातें:

  1. इसके लिए किसी बाहरी पुस्तकालय की आवश्यकता नहीं है
  2. कॉल फ़ंक्शन स्क्रिप्ट को जारी रखने की अनुमति नहीं देता है जब तक कि इसे बंद नहीं किया जाता है
  3. आप एक्सेल दस्तावेज़ को दूसरे तर्क के रूप में निर्दिष्ट कर सकते हैं
  4. यह कोड की एक पंक्ति है!

    import subprocess subprocess.call(["C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE", "Test.xlsx"]) #Replace args with user inputs (sys.argv[1], sys.argv[2] respectively)

केवल एक चीज यह है कि मुझे 100% यकीन नहीं है कि अगर यह मॉडल बिल्डर में काम करेगा, तो इसे परीक्षण करने की आवश्यकता होगी, हालांकि मैं यह नहीं देखता कि यह क्यों नहीं होगा लेकिन जैसा कि मुझे यकीन है कि आप आर्क के बारे में जानते हैं। एक मनमौजी जानवर।

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