जिस तरह से मैं आपके काम को स्थापित करूंगा वह एक कस्टम स्क्रिप्ट तैयार करना होगा जो मॉडलर की तुलना में अधिक लचीलापन प्रदान करता है लेकिन फिर भी अपने उपयोगकर्ताओं को एक समान इंटरफ़ेस प्रदान कर सकता है। आप इनमें से एक बना सकते हैं:
टूलबॉक्स प्रसंस्करण> लिपियों> उपकरण> नई स्क्रिप्ट बनाएँ
फिर नीचे स्क्रिप्ट को कॉपी / पेस्ट करें और इसे सहेजें C:/Users/You/.qgis2/processing/scripts
।
नीचे दी गई स्क्रिप्ट आपके मॉडल का अनुकरण करने की कोशिश करती है। स्क्रिप्ट एक अंतिम समाधान नहीं है (विशेषकर जब से मैं इनटर्मेशन के लिए इस्तेमाल किया गया था और लोकेशन टूल्स द्वारा जुड़ने की विशेषता जो आपने परिभाषित किया है, उससे भिन्न हो सकती है) लेकिन उम्मीद है कि आप अपनी ज़रूरतों के अनुरूप स्क्रिप्ट के विस्तार और सुधार के लिए इसका उपयोग कर सकते हैं। । इसे चलाने के लिए, बस इसे सहेजने के बाद इसे प्रोसेसिंग टूलबॉक्स से चुनें ।
मुझे लगता है कि स्क्रिप्ट वही करती है जो आपने पूछा था:
पहले दो आदेश अनिवार्य हैं इसलिए कार्रवाई की जाएगी।
IF
बयानों का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि कोई भी सफल आदेश केवल तभी संसाधित होगा जब सही एक इसे पहले कर देता है (जैसे ऑर्डर 4 केवल तभी चलेगा जब ऑर्डर 3 का चयन किया गया हो)।
इसके अलावा, संदेश पायथन कंसोल में छपे हैं, जिसमें दिखाया गया है कि कौन से आदेश संसाधित किए जा रहे हैं।
##Example model=name
##Order1=vector
##Order2=vector
##Order3=optional vector
##Order4=optional vector
##Order5=optional vector
##Watershed=vector
##Order2_Wshed=output vector
##Order3_Wshed=output vector
##Order4_Wshed=output vector
##Order5_Wshed=output vector
order1 = processing.getObject(Order1)
order2 = processing.getObject(Order2)
order3 = processing.getObject(Order3)
order4 = processing.getObject(Order4)
order5 = processing.getObject(Order5)
watershed = processing.getObject(Watershed)
if Order3 is None:
print 'Processing Order1 and Order2'
else:
print 'Processing Order1, Order2 and Order3'
if Order4 is not None:
print 'Processing Order1, Order2, Order3 and Order4'
if Order5 is not None:
print 'Processing Order1, Order2, Order3, Order4 and Order5'
output_1a = processing.runalg("qgis:intersection", order1, watershed, None)
output_1b = processing.runalg("qgis:joinattributesbylocation", output_1a['OUTPUT'], watershed, u'intersects', 0, 0, '', 0, None)
output_2a = processing.runalg("qgis:intersection", order2, watershed, None)
output_2b = processing.runalg("qgis:joinattributesbylocation", output_2a['OUTPUT'], output_1b['OUTPUT'], u'intersects', 0, 0, '', 0, Order2_Wshed)
if Order3 is None:
pass
else:
output_3a = processing.runalg("qgis:intersection", order3, watershed, None)
output_3b = processing.runalg("qgis:joinattributesbylocation", output_3a['OUTPUT'], output_2b['OUTPUT'], u'intersects', 0, 0, '', 0, Order3_Wshed)
if Order4 is None:
pass
else:
output_4a = processing.runalg("qgis:intersection", order4, watershed, None)
output_4b = processing.runalg("qgis:joinattributesbylocation", output_4a['OUTPUT'], output_3b['OUTPUT'], u'intersects', 0, 0, '', 0, Order4_Wshed)
if Order5 is None:
pass
else:
output_5a = processing.runalg("qgis:intersection", order5, watershed, None)
output_5b = processing.runalg("qgis:joinattributesbylocation", output_5a['OUTPUT'], output_4b['OUTPUT'], u'intersects', 0, 1, 'sum, mean', 0, Order5_Wshed)
नीचे स्क्रिप्ट को चलाते समय इंटरफ़ेस का एक स्क्रीनशॉट है (जो आपके मॉडल को चलाते समय समान दिखना चाहिए):
ध्यान देने योग्य कुछ बातें:
लाल बॉक्स में अनिवार्य पैरामीटर होते हैं
ग्रीन बॉक्स में वैकल्पिक पैरामीटर होते हैं
ब्लू बॉक्स में अनिवार्य पैरामीटर होता है
ब्लैक बॉक्स में आउटपुट परिणामों के लिए वैकल्पिक पैरामीटर होते हैं। स्क्रिप्ट तभी आउटपुट लेयर्स देगी जब संबंधित ऑर्डर का चयन किया जाता है (जैसे कि ऑर्डर 5 के लिए इनपुट का चयन नहीं किया गया है, लेकिन इसके लिए आउटपुट है, एक त्रुटि होगी)। इसलिए, उपयोगकर्ता को इनपुट और संबंधित आउटपुट का चयन करना होगा। यह जानबूझकर नहीं था, लेकिन व्यक्तिगत रूप से मुझे लगता है कि यह उपयोगकर्ता को मापदंडों को ध्यान से जांचने के लिए मजबूर करने का एक अच्छा तरीका है।
मैंने QGIS 2.12.3 ( प्रसंस्करण प्लगइन संस्करण 2.12.2 के साथ ) का उपयोग किया।