मैं OSGeo4W वितरण से एक स्टैंडअलोन अजगर से sextante चलाने के तरीके का पता लगाने की कोशिश कर रहा हूँ। ऐसा करने का कारण यह है कि मैं हर बार जब मैं मॉडल बिल्डर से एक मॉडल का परीक्षण करना चाहता हूं तो मैं डायलॉग में पैरामीटर दर्ज करते हुए थक गया।
तो यहाँ अजगर स्क्रिप्ट चलो इसे कहते हैं test.py
# as per http://qgis.org/pyqgis-cookbook/intro.html#using-pyqgis-in-custom-application
from qgis.core import *
# supply path to where is your qgis installed
QgsApplication.setPrefixPath("C:/OSGeo4W/apps/qgis", True)
# load providers
QgsApplication.initQgis()
from sextante.core.Sextante import Sextante
Sextante.alglist()
Sextante.alghelp("saga:slopeaspectcurvature")
कि मैं अपने बैच फ़ाइल से कॉल कर रहा हूँ
@echo off
set OSGEO4W_ROOT=C:\OSGeo4W
set PYTHONPATH=%OSGEO4W_ROOT%\apps\qgis\python;%OSGEO4W_ROOT%\apps\qgis\python\plugins;%HOME%/.qgis/python/plugins
set PATH=%OSGEO4W_ROOT%\bin;%OSGEO4W_ROOT%\apps\qgis\bin;%OSGEO4W_ROOT%\apps\qgis\plugins
python test.py
समस्या यह है कि यह कहता है Algorithm not found
जबकि मुझे QGIS अजगर कंसोल से सार्थक आउटपुट मिलता है।
मुझे ऐसा लगता है कि मैं किसी चीज़ को शुरू करने के लिए याद कर रहा हूँ। पर क्या?
क्या जीयूआई का उपयोग करके टन के मापदंडों को दर्ज करने के अलावा एक मॉडल का परीक्षण करने का एक बेहतर तरीका है?
अद्यतन 7/2/2012
मैं "मेरा" एल्गोरिदम के साथ परीक्षण करने के लिए सामान्य पायथोनिक समाधान की तलाश कर रहा हूं। Aforementioned एल्गोरिथ्म सिर्फ एक उदाहरण है जो दिखा रहा है कि शायद कुछ आरंभिक नहीं था।
अद्यतन 7/27/2012
स्क्रिप्ट रनर का एक विकल्प IPython कंसोल का उपयोग स्क्रिप्ट को डीबग करने के लिए है। इसके अलावा वहाँ कोई रास्ता नहीं के साथ sextante के साथ सरल इकाई परीक्षण करने के लिए नहीं लगता है :(
अद्यतन 7/30/2012
जैसा कि विक्टर ओलया सुझाव देते हैं, मैं नीचे दिए गए कोड की तरह सेक्स्टांटे को इनिशियलाइज़ करने की कोशिश करता हूं।
#!/usr/bin/env python
import sys
from PyQt4.QtGui import QApplication
from sextante.core.Sextante import Sextante
def main():
""" main function or something """
# as per http://qgis.org/pyqgis-cookbook/intro.html#using-pyqgis-in-custom-application
from qgis.core import *
import qgis.utils
app = QApplication(sys.argv)
# supply path to where is your qgis installed
QgsApplication.setPrefixPath("C:/OSGeo4W/apps/qgis", True)
# load providers
QgsApplication.initQgis()
# how???
# qgis.utils.iface = QgisInterface.instance()
Sextante.initialize()
run_script(qgis.utils.iface)
def run_script(iface):
""" this shall be called from Script Runner"""
Sextante.alglist()
Sextante.alghelp("saga:slopeaspectcurvature")
if __name__=="__main__":
main()
हालाँकि मुझे कुछ-कुछ मिलता है
Traceback (most recent call last):
File "test.py", line 29, in
main()
File "test.py", line 20, in main
Sextante.initialize()
File "C:\Documents and Settings\user\.qgis\python\plugins\sextante\core\Sextante.py", line 94, in initialize
Sextante.addProvider(GrassAlgorithmProvider())
File "C:\Documents and Settings\user\.qgis\python\plugins\sextante\grass\GrassAlgorithmProvider.py", lin
e 17, in __init__
self.actions.append(DefineGrassRegionAction())
File "C:\Documents and Settings\user\.qgis\python\plugins\sextante\grass\DefineGrassRegionAction.py", li
ne 16, in __init__
canvas = QGisLayers.iface.mapCanvas()
AttributeError: 'NoneType' object has no attribute 'mapCanvas'
खैर ... यह सब एक मेलिंग सूची चर्चा समान हो जाती है। शायद यह एसई के बजाय qgis-user या qgis-developer पर जाने के लायक है।
iface
एक स्वसंपूर्ण QGIS स्क्रिप्ट तक नहीं पहुँच सकते ।iface
साइड क्यूजीआईएस में चलने पर केवल उपयोग के लिए है।