मैंने यह देखने के लिए आईआरसी के माध्यम से जाने की कोशिश की है कि क्या लोग मेरी मदद कर सकते हैं, लेकिन माध्यम किसी भी उत्तर को स्पष्ट करने के लिए थोड़ा अनाड़ी लगता है, इसलिए मैं इसके बजाय यह कोशिश करने जा रहा हूं।
मैं PyQGIS का उपयोग करके एक स्टैंडअलोन एप्लिकेशन को प्रोग्राम करना चाहता हूं जिस तरह से मैं पहले से ही ArcPy का उपयोग करके स्टैंडअलोन एप्लिकेशन प्रोग्राम कर सकता हूं।
PyQGIS अपने आप में सीधा है। क्यूजीआईएस कंसोल एडिटर के भीतर पायथन स्क्रिप्ट चलाने में मुझे कोई कठिनाई नहीं हुई। हालांकि, पायथन बाइंडिंग को एक स्टैंडअलोन स्क्रिप्ट में उपयोग करने के लिए, मुझे सलाह दी जाती है कि मुझे बैच स्क्रिप्ट का उपयोग करके पर्यावरण सेटिंग्स को बदलना चाहिए (मैं घर पर विंडोज विस्टा का उपयोग कर रहा हूं, इसलिए हम बैच स्क्रिप्टिंग के लिए विंडोज पर बात कर रहे हैं)। इसके परिणामस्वरूप मेरे अंत में गड़बड़ी हुई है, जैसा कि मैं वास्तव में बैच स्क्रिप्टिंग को नहीं समझता हूं, और मुझे यह विचार पसंद नहीं है कि मैं एक ऐसे वातावरण को रीसेट कर रहा हूं, जिसे मेरे द्वारा चलाए जाने वाले अन्य अनुप्रयोगों के लिए एक निश्चित तरीका होना चाहिए।
मुझे यह समझने में कठिनाई हो रही है कि इन सेटिंग्स को बनाने के लिए निर्देश इतने अनावश्यक रूप से जटिल क्यों हैं, और वे यह कहते हुए कोड की एक पंक्ति तक राशि नहीं देते हैं "जहां बाइंडिंग हैं, उन पुस्तकालयों को बनाएं जिन्हें मैं इस कार्यक्रम के लिए उपयोग करना चाहता हूं। ) निश्चित रूप से आर्कपी को लोगों को कंप्यूटर की पर्यावरण सेटिंग्स के साथ गड़बड़ करने की आवश्यकता नहीं है, इसलिए मुझे यह समझने में कठिनाई हो रही है कि PyGGIS क्यों करता है। मुझे लगता है कि लोग बस खुद को विंडोज बैच स्क्रिप्टिंग भाषा सिखाने के बजाय छोड़ देंगे।
अब, मैंने देखा कि जब मैं QGIS के कंसोल एडिटर में स्क्रिप्ट चलाता हूं, तो यह काम करता है। दी गई, यह स्क्रिप्ट चलाने के बाद बाकी QGIS को भी अनुपयोगी बनाता है, इसलिए मुझे QGIS को फिर से बाद में पुनः आरंभ करना होगा, लेकिन स्क्रिप्ट ठीक उसी तरह काम करती है जैसे मैंने इसे काम करने के लिए प्रोग्राम किया था। लेकिन जब मैं QGIS एप्लिकेशन के बाहर ऐसा करता हूं, तो ऐसा नहीं होता है। यह समस्या प्रतीत नहीं होती है कि मैं QGIS एप्लिकेशन (qgis.core और qgis.utils) द्वारा आयात किए गए कुछ पायथन पैकेज को स्वचालित रूप से आयात करने में विफल रहा हूं - मेरे स्टैंडअलोन स्क्रिप्ट में उन आयात विवरणों के साथ-साथ अन्य सभी पैकेज आयात हैं स्क्रिप्ट की आवश्यकता है। यह मुझे विश्वास दिलाता है कि अंतर यह है कि क्यूजीआईएस एप्लिकेशन बाहरी वातावरण चर को सही ढंग से सेट करता है, लेकिन जब मैं इसे स्टैंडअलोन स्क्रिप्ट के रूप में चलाता हूं तो वे चर ठीक से सेट नहीं होते हैं।
इसके अतिरिक्त, जब मैं स्क्रिप्ट को स्टैंडअलोन स्क्रिप्ट के रूप में चलाता हूं, तो यह बिना किसी त्रुटि के सभी कोड के माध्यम से हो जाता है; यह बस वह नहीं करता है जो कोड कमांड करता है। जब मैं स्क्रिप्ट को कंसोल एडिटर में चलाता हूं, तो यह सब सही तरीके से करता है। जब मैं इसे एक स्टैंडअलोन के रूप में चलाता हूं, तो यह एक खिड़की बनाता है, फिर तुरंत इसे नष्ट कर देता है, जबकि कोई त्रुटि नहीं है। इसलिए इंट्रिप्टर सब कुछ समझता है जो मैं स्क्रिप्ट को करने के लिए कह रहा हूं - यह सिर्फ ऐसा नहीं करेगा।
यहाँ स्क्रिप्ट है:
from PyQt4 import *
from PyQt4 import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from qgis.core import *
from qgis.gui import *
from qgis.utils import *
import Tkinter
from Tkinter import *
import sys
import os
qgishome = "c:/OSGeo4W/apps/qgis/"
app = QgsApplication([], True)
QgsApplication.setPrefixPath(qgishome, True)
QgsApplication.initQgis()
canvas = QgsMapCanvas()
canvas.setCanvasColor(Qt.yellow)
canvas.enableAntiAliasing(True)
canvas.show()
layer = QgsVectorLayer(r"c:/GIS Data/fed308/cpc.shp", "Ridings", "ogr")
reg = QgsMapLayerRegistry.instance()
reg.addMapLayer(layer)
canvas.setExtent(layer.extent())
canvas.setLayerSet([QgsMapCanvasLayer(layer)])
QgsApplication.exitQgis()
कृपया ... क्या ऐसा कोई तरीका है जो मैं इस स्क्रिप्ट को QGIS के बाहर चला सकता हूं और यह काम करता है क्योंकि यह QGIS के भीतर करता है (आदर्श रूप से बहुत अंत में चीजों को बंद किए बिना)?
QGIS एक अद्भुत कार्यक्रम है, और PyQGIS के रूप में सहज ज्ञान युक्त लगता है जैसे ArcPy करता है और एक ओपन सोर्स सॉफ्टवेयर के लिए एक वास्तविक लाभ होगा - लेकिन अगर लोगों को उन सभी हुप्स से गुजरना पड़ता है जो मैं पहले से ही गुजर चुका हूं, और अभी भी स्टैंडअलोन एप्लिकेशन नहीं है जिस तरह से उनके पास आर्कपी की पहुंच है, उसी तरह से PyQGIS पुस्तकालयों तक पहुंच, मुझे लगता है कि PyQGIS लोगों के लिए बहुत काम का नहीं होगा। मुझे आशा है कि मैं गलत हूं और यह इस प्रकार से आसान है जहां तक यह रहा है। क्या किसी के पास एक समाधान है?