পাইথগিজিসে পাইথন কনসোল থেকে ক্লিপ ফাংশন কল করা হচ্ছে?


11

পাইথন কনসোল থেকে কিউকিউজিসে ক্লিপ ফাংশনটি কল করার কোনও উপায় আছে কি? এটি ভেক্টর মেনুতে জিওপ্রসেসিং সরঞ্জামগুলির অধীনে পাওয়া যায়।


ঠিক আছে আমি প্রথমে একক পার্টস ফাংশনে গুণিতক ব্যবহার করে এটি ঠিক করেছি। তারপরে এটি কাজ করে।
টোক

উত্তর:


11

অবশ্যই আপনি প্রসেসিং টুলবক্স থেকে ফাংশনটি পেতে পারেন। এটি কীভাবে ব্যবহার করবেন তা এখানে: 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 এর জন্য এই প্রশ্নটি দেখুন:

কিউজিআইএস ৩.০ প্রসেসিংয়ে নতুন অ্যালগলিস্ট এবং অ্যালগেল্প কী?


এই বিষয়টিকে আবার প্রাণবন্ত করার জন্য দুঃখিত, তবে কখনও এই কাজটি করেনি এবং এখন আমার এটি আবার প্রয়োজন। Pyhton কনসোলে আমি দুটি স্তরের পেতে Layer = qgis.utils.iface.activeLayer()এবং InputLayer = qgis.utils.iface.activeLayer()। তারপরে আমি ব্যবহার করি processing.runandload("qgis:clip",InputLayer,Layer,"output_file.shp")এবং ক্লিপড নামের সাথে নতুন স্তরটি স্তর মেনুতে যুক্ত হয় । তবে স্তরটি খালি। আমি যদি এই দুটি স্তরটি কিউজিসের মধ্যে ক্লিপ ফাংশন সহ ব্যবহার করি তবে আউটপুট স্তরের ক্লিপিংয়ের লাইন থাকে। কেউ কি ভুল হতে পারে? আমি কোন ত্রুটি পাই না।
টোক

যদি আমি দুটি বহুভুজ ব্যবহার করি তবে এটি কাজ করে তবে আমার স্তরগুলির মধ্যে একটি লাইন এবং বহুভুজ নয়। এটিতে বেশ কয়েকটি লাইন রয়েছে এবং আমি এই স্তরটি ক্লিপিংয়ের জন্য কিউজিসে করার সময় ব্যবহার করতে পারি।
টোক

2
আপনার ক্লিপ নির্বাচন করতে চান এমন বৈশিষ্ট্যগুলি আপনার থাকা দরকার। এটি প্রতিফলিত করার জন্য আমি উত্তর সম্পাদনা করেছি।
মিঃ বেগুনি

আসলে শেফফাইল তৈরি না করে কেউ কীভাবে এটি করতে পারে? আমার কয়েকশ ডিস্ক-আকৃতির বহুভুজ সহ একটি স্তর রয়েছে যা আমি পুনরুক্ত করতে চাই এবং প্রতিটি পয়েন্ট ডেটার একক স্তরের ওভারলে হিসাবে ব্যবহার করি। আমি কি এর পরিবর্তে কিউজ ফিচার অবজেক্টের একটি তালিকা পেতে পারি?
জে টেলর

আপনার পৃথক প্রশ্ন হিসাবে এটি জিজ্ঞাসা করা উচিত
মিঃ বেগুনি

5

ধরে নিই যে আপনার "ওভারলে" নামে একটি স্তর রয়েছে এবং "লেয়ার_ট_ক্লিপ" নামে পরিচিত আরেকটি রয়েছে।

# 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")

0

সর্বশেষতম পাইকিজিআইএস সংস্করণে এটি নিম্নলিখিত হিসাবে কাজ করা উচিত

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)

দ্রষ্টব্য: অ্যালগরিদমের আউটপুটটিতে মূল স্তরটির মতো জ্যামিতি থাকবে


তথ্যসূত্র:

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