উত্তর:
অবশ্যই আপনি প্রসেসিং টুলবক্স থেকে ফাংশনটি পেতে পারেন। এটি কীভাবে ব্যবহার করবেন তা এখানে: http://docs.qgis.org/2.8/en/docs/user_manual/processing/console.html হিসাবে
কনসোল থেকে আপনি সমস্ত অ্যালগরিদমগুলির তালিকা পেতে পারেন যা টাইপ করে "ক্লিপ" শব্দটি ধারণ করে:
import processing
processing.alglist("clip")
তারপরে আপনি সর্বাধিক উপযুক্ত ফাংশনটি কীভাবে ব্যবহার করবেন তা কীভাবে ব্যবহার করবেন তা আপনি জানতে পারবেন:
processing.alghelp("qgis:clip")
তারপরে আপনার স্ক্রিপ্টে কেবল অ্যালগরিদমটি নীচে ব্যবহার করুন:
processing.runalg("qgis:clip",inputlayer,overlaylayer,"output_file.shp")
দ্রষ্টব্য: অ্যালগরিদম কেবলমাত্র নির্বাচিত বৈশিষ্ট্যগুলিতে কাজ করবে "
উল্লেখ্য, উল্লিখিত উদাহরণগুলির জন্য উপরের কোডটি 3.0+ এর জন্য অবৈধ you
print([a.id() for a in gsApplication.processingRegistry().algorithms() if "clip" in a.id()])
অ্যালগেল্প উদাহরণের জন্য আপনি এটি করতে পারেন:
processing.algorithmHelp("qgis:clip")
কিউজিআইএস 3 এর জন্য এই প্রশ্নটি দেখুন:
কিউজিআইএস ৩.০ প্রসেসিংয়ে নতুন অ্যালগলিস্ট এবং অ্যালগেল্প কী?
Layer = qgis.utils.iface.activeLayer()
এবং InputLayer = qgis.utils.iface.activeLayer()
। তারপরে আমি ব্যবহার করি processing.runandload("qgis:clip",InputLayer,Layer,"output_file.shp")
এবং ক্লিপড নামের সাথে নতুন স্তরটি স্তর মেনুতে যুক্ত হয় । তবে স্তরটি খালি। আমি যদি এই দুটি স্তরটি কিউজিসের মধ্যে ক্লিপ ফাংশন সহ ব্যবহার করি তবে আউটপুট স্তরের ক্লিপিংয়ের লাইন থাকে। কেউ কি ভুল হতে পারে? আমি কোন ত্রুটি পাই না।
ধরে নিই যে আপনার "ওভারলে" নামে একটি স্তর রয়েছে এবং "লেয়ার_ট_ক্লিপ" নামে পরিচিত আরেকটি রয়েছে।
# get the overlay layer in the console
overlay_layer = [x for x in iface.legendInterface().layers() if x.name() == 'overlay'][0]
# get the layer to clip in the console
layer_to_clip = [x for x in iface.legendInterface().layers() if x.name() == 'layer_to_clip'][0]
# run the algorithm and output the results in /tmp/output.shp
processing.runalg("qgis:clip", overlay_layer, layer_to_clip, "/tmp/output.shp")
সর্বশেষতম পাইকিজিআইএস সংস্করণে এটি নিম্নলিখিত হিসাবে কাজ করা উচিত
from qgis.core import *
def clipping(layer_1, layer_2):
layer_clip = processing.run('qgis:clip',
{'INPUT': layer_1,
'OVERLAY': layer_2,
'OUTPUT': "memory:"}
)["OUTPUT"]
return QgsProject.instance().addMapLayer(layer_clip)
your_layer_1 = QgsProject.instance().mapLayersByName('layer_name_1')[0] # main layer
your_layer_2 = QgsProject.instance().mapLayersByName('layer_name_2')[0] # secondary layer
clipping(your_layer_1, your_layer_2)
দ্রষ্টব্য: অ্যালগরিদমের আউটপুটটিতে মূল স্তরটির মতো জ্যামিতি থাকবে
তথ্যসূত্র: