কিউজিআইএস পাইথন কনসোলের বাইরে সিক্সেন্টেটি অ্যালগরিদমগুলি কীভাবে চালানো যায়?


10

আমি ওএসজিও 4 ডাব্লু ডিস্ট্রিবিউশন থেকে স্ট্যান্ডলোন পাইথন থেকে সেক্সট্যান্ট চালানোর উপায়টি বের করার চেষ্টা করতে এক ধরণের আটকে আছি। আমি এটি করতে চাই কারণ হ'ল প্রতিবার আমি মডেল বিল্ডারের কাছ থেকে কোনও মডেল পরীক্ষা করতে চাইলে ডায়লগটিতে প্যারামিটারগুলি প্রবেশ করিয়ে ক্লান্ত হয়ে পড়েছিলাম।

সুতরাং এখানে পাই অজগর লিপিটি এটি কল করুন 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যেখানে আমি কিউজিআইএস পাইথন কনসোল থেকে অর্থপূর্ণ আউটপুট পাই।

আমার মনে হচ্ছে আমি কিছু শুরু করতে মিস করছি। কিন্তু কি?

জিইআইআই ব্যবহার করে টন পরামিতি প্রবেশের পরিবর্তে অন্য কোনও মডেল পরীক্ষা করার কি আরও ভাল উপায় আছে?

আপডেট 7/2/2012

আমি "খনি" অ্যালগরিদমগুলির সাথে পরীক্ষার জন্য জেনেরিক পাইথোনিক সমাধান খুঁজছি। পূর্বোক্ত অ্যালগরিদম কেবল একটি উদাহরণ যা দেখায় যে সম্ভবত কিছু শুরু করা হয়নি।

আপডেট 7/27/2012

স্ক্রিপ্ট রানার বিকল্প হ'ল আইপিথন কনসোলটি স্ক্রিপ্টগুলি ডিবাগ করার জন্য ব্যবহার করা । এর বাইরে আর কোনও কিছুই চলছে না বলে Sextante দিয়ে সিম্পল ইউনিট টেস্টিং করার উপায় বলে মনে হয় না :(

আপডেট 7/30/2012

ভিক্টর ওলেয়ার পরামর্শ অনুসারে, আমি নীচের কোডটির মতো Sextante আরম্ভ করার চেষ্টা করি।

#!/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'

ঠিক আছে ... এটি সমস্তই একসাথে মেলিং তালিকার আলোচনায় পরিণত হয়। সম্ভবত এটি এসই এর পরিবর্তে কুইগিস-ব্যবহারকারী বা কিগিস-ডেভেলপারে যাওয়ার উপযুক্ত।


আপনি ifaceস্বতন্ত্র QGIS স্ক্রিপ্টে অ্যাক্সেস করতে পারবেন না । ifaceপার্শ্ব কিউজিআইএস চলাকালীন কেবল তখনই ব্যবহার।
নাথান ডব্লিউ

উত্তর:


5

গিরি শেরম্যানের স্ক্রিপ্ট রানার প্লাগইনের সাথে কাজ করার জন্য আপনি আপনার স্ক্রিপ্টটি তৈরি করতে পারেন এবং এটি QGIS এর মধ্যে থেকে চালাতে পারেন run স্ক্রিপ্টটি আবার চালানো, সম্পাদনার পরে, স্ক্রিপ্ট রানারকে মডিউলটি পুনরায় লোড করতে এবং আপনার পরিবর্তনগুলি প্রতিবিম্বিত করতে অনুরোধ জানানো উচিত। আরও দেখুন: স্ক্রিপ্ট রানারের প্লাগইনস.কিগিস.আর.গি. তালিকা

প্রয়োজনীয়গুলি হ'ল আপনার রান_স্ক্রিপ্ট ফাংশন রয়েছে কিনা তা নিশ্চিত করা, যা স্ক্রিপ্ট রানার (তার ব্লগের উদাহরণ থেকে) ডেকে আনে:

def run_script(iface):
    ldr = Loader(iface)
    ldr.load_shapefiles('/vmap0_shapefiles')

তত্ত্বের ক্ষেত্রে এটি সত্যই ডিবাগ করতে সহায়তা করা উচিত (যদিও কিউজিআইএসের অভ্যন্তরে) এটি উইন্ডোতে নষ্ট হয়ে গেছে বলে মনে হচ্ছে। এটি বলতে থাকে AttributeError: 'module' object has no attribute 'run_script'এবং জোর দিয়ে বলে চলেছে যে আমার কাছে এমন কোনও ডকাস্ট্রিং নেই যা আমি উত্স দর্শনে দেখতে পারি।
mlt

আপনি def run_script(iface)ফাংশন যোগ করেছেন ? আপনার স্ক্রিপ্টটি ছাড়া স্ক্রিপ্ট রানারে চলবে না।
ডাক্তার্টো

স্পষ্টতই একজনের স্ক্রিপ্টটির নাম টেস্ট হিসাবে রাখা উচিত নয় :-) মাইস্টেস্ট এখনও পর্যন্ত কাজ করে। এটি চমৎকার হবে যদি হতো __import__সুযোগ সর্বাঙ্গে খুঁজছেন পরিবর্তে সীমাবদ্ধ করা যায় sys.path। এটি ডকচারিং এবং অন্যান্য ফাংশনগুলির তালিকা দেখায়।
22:25 এ mlt

স্ক্রিপ্ট রানার এখানে আপডেট হয়েছে
ডেভ এক্স

4

Sextante শুরু করতে হবে, তাই এটি অ্যালগরিদমগুলি লোড করে এবং পরে এগুলি সম্পাদন করতে পারে।

কিছু করার আগে Sextante.initialize () কে কল করুন।


হাই ভিক্টর, এটা কি এখনও আছে? আমি কীভাবে স্ট্যান্ডেলোন স্ক্রিপ্টে (কিউজিআইএসের বাইরের) সেক্সান্টেণ্টকে কল করতে পারি এবং যে সমস্ত গুগল আমি কাজ করি না তার সবগুলি উদাহরণ খুঁজে বের করে লড়াই করছি। এটি এক বছর আগে পোস্ট করা হয়েছিল তাই আমি অবাক হই যে সেক্সট্যান্টের আর্কিটেকচারটি পরিবর্তন হয়েছে কিনা?
ধনী

3

এই পোস্টটি পড়ার জন্য নতুন ব্যবহারকারীদের জন্য, স্ট্যান্ডলোন পিআইকিউজিআইএস স্ক্রিপ্টগুলিতে কিউজিআইএস প্রসেসিং অ্যালগরিদমগুলি চালনার একটি উপায় রয়েছে। OSGeo4w শেল স্ক্রিপ্ট চলাকালীন qgis.core এর জন্য আমদানি ত্রুটির উত্তরগুলি পরীক্ষা করুন এবং পাইথনের সাহায্যে আমি কীভাবে প্রসেসিংয়ে অ্যাক্সেস করতে পারি? , যা আপনাকে পরীক্ষিত উদাহরণ সরবরাহ করে।


1
আর ডাউনটোটের কারণ ...?
জার্মানি ক্যারিলো

2

যেহেতু আপনি যে অ্যালগরিদমটি ব্যবহার করতে চান তা সাগরের অংশ, সুতরাং আপনি সরাসরি সাগা ব্যবহার করতে পারেন।

যেমন একটি ব্যাচফাইল থেকে:

@ECHO OFF

REM SET SAGA_MLB = C:\SAGA\Modules
REM SET PATH = %PATH%;C:\SAGA

saga_cmd ta_morphometry "Slope, Aspect, Curvature" -ELEVATION=elevation.sgrd -SLOPE=slope.sgrd -ASPECT=aspect.sgrd -CURV=NULL -HCURV=NULL -VCURV=NULL -METHOD=5

PAUSE

আমি ক্ষমাপ্রার্থী, আমার এটা পরিষ্কার করা উচিত ছিল। এটি কেবল একটি উদাহরণ ছিল। আমি বিশেষত সাগা ব্যবহার করব না
mlt

2

মতে কিভাবে বাইরে থেকে QGIS (যেমন সাবলাইম লেখা) জন্য একটি সহজ পাইথন স্ক্রিপ্ট চালানোর? আপনি ifaceএখানে অবজেক্টের একটি রেফারেন্স পেতে পারেন না কারণ এটি QGIS এর বাইরে চালিত হওয়ার কারণে এটি এই প্রসঙ্গে নেই। কোন উন্নতি?


হ্যাঁ, দয়া করে আমার উত্তরটি পরীক্ষা করুন।
জার্মানি ক্যারিলো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.