পাইথনের সাথে "প্রসেসিং" অ্যাক্সেস করছেন?


16

আমি কিউআইজিআইএসের বাইরে পাইথনের এক্সপ্লোড লাইন ফাংশনটি একটি স্ট্যান্ডলোন স্ক্রিপ্ট থেকে অ্যাক্সেস করতে চাই ।

এটি ব্যবহার করার জন্য আমার কোন মডিউলটি লোড করতে হবে?

আমি কীভাবে অ্যাক্সেস করতে পারি processing?

from qgis.core import *

layerInput = QgsVectorLayer('test.shp', 'test', 'ogr')

processing.runalg('qgis:explodelines', layerInput, 'temp.shp')

2
আমি আপনাকে ব্যবহার করতে হবে import processing
জোসেফ

@ জোসেফ নির্দিষ্ট না হওয়ার জন্য দুঃখিত: তবে আমি এটি একটি স্বতন্ত্র লিপি থেকে অ্যাক্সেস করতে চাই।
ustroetz

আহঃ কোনও উদ্বেগ নেই :)। সেক্ষেত্রে ক্ষমা চাইছি তবে আমি জানি না যেহেতু আমি সবসময় এটিকে QGIS এর মধ্যে চালাই। আশা করি অন্যরা পরামর্শ দেবেন।
জোসেফ

হাই @ustroetz, আপনি কি নিজের স্ট্যান্ডলোন লিপি থেকে এটি পরিচালনা করতে পেরেছিলেন? আমি জিজ্ঞাসা করি কারণ আমি বাহ্যিক স্ক্রিপ্টগুলি চালানোর চেষ্টাও করছি।
জোসেফ

@ জোসেফ নো, আমি নেই
ustroetz

উত্তর:


25

আপডেট 24.04.2018: কিউজিআইএস v3.x এ এখানে কীভাবে করবেন তা দেখুন ।


কিউজিআইএস ভি 2.x এর জন্য

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

2.2.0-2 প্রসেসিং প্লাগইন সংস্করণ ব্যবহার করে, আপনি নিম্নলিখিত স্ক্রিপ্ট চেষ্টা করতে পারেন:

# Prepare the environment
import sys
from qgis.core import *
from PyQt4.QtGui import *
app = QApplication([])
QgsApplication.setPrefixPath("/usr", True)
QgsApplication.initQgis()

# Prepare processing framework 
sys.path.append('/home/user/.qgis2/python/plugins') # Folder where Processing is located
from processing.core.Processing import Processing
Processing.initialize()
from processing.tools import *

# Run the algorithm
layerInput = QgsVectorLayer('test.shp', 'test', 'ogr')
general.runalg('qgis:explodelines', layerInput, 'temp.shp')

# Exit applications
QgsApplication.exitQgis()
QApplication.exit()

আরও নতুন প্রসেসিং সংস্করণগুলি এখানে অবস্থিত হতে পারে /usr/share/qgis/python/plugins, সুতরাং sys.path.append('/usr/share/qgis/python/plugins')সেই অনুযায়ী আপনার প্রয়োজন হতে পারে ।

আমি কাজ উদাহরণস্বরূপ পাওয়া ত্রুটি: অ্যালগরিদম পাওয়া যায়নি যা আবার উপর ভিত্তি করে তৈরি, একটি Qgis-dev মেইল-তালিকা আলোচনা


1
প্রসেসিং প্লাগইন নাও থাকতে পারে '/home/user/.qgis2/python/plugins'। আপনি QGIS খোলার মাধ্যমে এবং plugins/Manage and install pluginsপ্রক্রিয়াকরণে স্ক্রোল ডাউন ক্লিক করে অবস্থানটি সন্ধান করতে পারেন এবং বিবরণীতে আপনি ইনস্টলেশন অবস্থানটি দেখতে পাবেন।
মিঃ বেগুনি

2
আমি cannot-create-a-qpixmapএকা এই স্ট্যান্ড ফাংশনটি সম্পর্কে প্রচুর সতর্কতা পেয়েছি তবে আমি দেখতে পাচ্ছি যে আপনিও এই সমস্যার সমাধান করেছেন gis.stackex بدل.com
মিঃ বেগুনি

1
আপনি স্ট্যান্ডেলোন স্ক্রিপ্টটিকে আরও জেনেরিক করে তুলতে পারেন layerInputএবং রালালগের লাইনটি এতে পরিবর্তন করে: general.runalg(*sys.argv[1:])এই স্ক্রিপ্টটি এই প্রশ্ন অনুসারে সমান্তরাল জিআইএস প্রসেসিংয়ের ভিত্তি হতে পারে তা উল্লেখ না করে: gis.stackexchange.com/questions/119961/…
মি। বেগুনি

একই কাঠামোটি করা কি স্ট্যান্ড্যালোন পাইথন (কিউজিসআইএসের অভ্যন্তরে নয়) থেকে প্লাগিনগুলি চালানো ছাড়া সম্ভব? আমি অ্যালগলিস্ট () ফাংশন সম্পাদন করেছি এবং আমি আমার কিউজিআইএস-এ আমার প্লাগিনগুলি ইনস্টল করতে দেখতে পাচ্ছি না ...
আইরিন

3

যতক্ষণ না আমি এটি করার জেনেরিক পদ্ধতিতে কাজ করতে চলেছি ততক্ষণ আমি আপনাকে একটি কাজের কথা বলব।

আমি প্রসেসিং প্লাগইন সংস্করণটি 2.2.0-2 ব্যবহার করি (আমি আপনাকে এই সংস্করণটি ব্যবহার করার পরামর্শ দিই), যা /home/germap/.qgis2/python/plugins/আমার কম্পিউটারে ইনস্টল করা আছে । আপনার এই ফোল্ডারটির অবস্থানটি জানতে হবে, কারণ আপনি সেখান থেকে প্রসেসিং মডিউলটি আমদানি করেন।

যেহেতু আপনি সরবরাহকারী ( qgis) এবং অ্যালগরিদম ( explodelines) জানেন, তাই আপনি /home/germap/.qgis2/python/plugins/processing/algs/qgis/বিস্ফোরিত লাইনগুলির স্ক্রিপ্ট নাম নিতে পারেন: Explode.pyএই তথ্যটি আপনাকে সরাসরি আপনার পাইথন স্ট্যান্ডেলোন স্ক্রিপ্টে অ্যালগরিদম আমদানির অনুমতি দেয়।

সুতরাং, পাইথন কনসোলটি খুলুন এবং নিম্নলিখিত স্ক্রিপ্টটি অনুলিপি করুন (আমি GNU / লিনাক্স ব্যবহার করি, তাই পরিবেশের ভেরিয়েবলগুলি ডিফল্টরূপে সেট করা হয়, আমাকে কিউজিস এবং পাইকিউ 4 লাইব্রেরিগুলিকে একটি বাতাসে আমদানি করার অনুমতি দেয়):

# Prepare the environment
import sys
from PyQt4.QtGui import *
from qgis.core import *
app = QApplication([])
QgsApplication.setPrefixPath("/usr", True)
QgsApplication.initQgis()

# Tell Python where you will get processing from
sys.path.append('/home/germap/.qgis2/python/plugins')

# Reference the algorithm you want to run
from processing.algs.qgis.Explode import *
alg = Explode() 

# Set input and output
inLayer = QgsVectorLayer('/home/user/data/in.shp', 'input', 'ogr')
outLayer = '/home/user/data/out.shp'
alg.setParameterValue('INPUT', inLayer)
alg.setOutputValue('OUTPUT', outLayer)

# Run the algorithm
from processing.core.SilentProgress import SilentProgress
progress = SilentProgress()
alg.processAlgorithm(progress)

আপনি যদি ত্রুটির বার্তা না পান তবে এটি। আপনার নির্দিষ্ট আউটপুট পথে আউটপুট স্তরটি সংরক্ষণ করা হয়েছে ( /home/user/data/out.shp)

দ্রষ্টব্য: জেনেরিক পদ্ধতিতে (অর্থাত্ নাম দ্বারা অ্যালগরিদম কল করা) সম্পর্কিত, আমি পোস্ট করার আগে আমার কিছু সমস্যার সমাধান করতে হবে। এটি কাজ করার সাথে সাথে আমি এটি পোস্ট করব।

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