কিউজিআইএস ২.১18.১ এ পাইথনের মাধ্যমে ভেক্টর স্তরগুলি মার্জ করা হচ্ছে


9

আমি বর্তমানে দুটি ভেক্টর স্তর একসাথে একত্রিত করতে নিম্নলিখিত কোডটি ব্যবহার করছি:

def append_layers(layer1, layer2, output):
    from processing.core.Processing import Processing
    Processing.initialize()
    import processing.tools
    processing.tools.general.runalg("qgis:mergevectorlayers", layer1, layer2, output)

append_layers(layer1.shp, layer2.shp, output.shp)

এটি কিউজিআইএস ২.১৪ এ দুর্দান্ত কাজ করছে বলে মনে হচ্ছে, তবে নিম্নলিখিত বার্তায় এটি 2.18.1 এ ব্যর্থ হয়েছে:

Error: Wrong number of parameters
ALGORITHM: Merge vector layers

2.14 এবং 2.18 এর মধ্যে কিছু পরিবর্তন হয়েছে? বা আমি কি সত্যিই সুস্পষ্ট কিছু মিস করছি?

উত্তর:


11

হ্যাঁ, আপনি যদি পাইথন কনসোলে নিম্নলিখিত কোডটি টাইপ করেন তবে ইনপুট স্তর প্যারামিটারে এখন একাধিক স্তর অন্তর্ভুক্ত করা হয়েছে :

>>>import processing
>>>processing.alghelp("qgis:mergevectorlayers")
ALGORITHM: Merge vector layers
    LAYERS <ParameterMultipleInput>
    OUTPUT <OutputVector>

সুতরাং এর সমাধান করার একটি উপায় হ'ল উভয় স্তরকে ইনপুট প্যারামিটারে যুক্ত করা এবং তাদের বিভক্ত করা:

processing.tools.general.runalg("qgis:mergevectorlayers", layer1 + ";" + layer2, output)

ধন্যবাদ, ভাল কাজ করে। 'রানালগ ("জিডিএল্লার: কনভার্টফর্ম্যাট") "র পদ্ধতিটিও কি বদলেছে? ২.১৪-তে এটি 'প্রসেসিং.টুলস.জেনারাল.আরুনালগ (' জিড্লাগার: রূপান্তরকরণ ', স্তর, ফাইল টাইপ, "", সেভ_লোকেশন) ব্যবহার করে কাজ করে তবে ২.১18 এ কোনও ত্রুটি চিহ্নিত করা হয়নি তবে নতুন ফাইল তৈরি হয় না।
জেমি টাসকার

@ জ্যামি টাস্কার - সর্বাধিক স্বাগতম! না, একই পরামিতি হওয়া উচিত। কেবল এটি পরীক্ষা করা হয়েছে এবং এটি সূক্ষ্মভাবে কাজ করে। আপনার যদি সমস্যা হয় তবে আপনার একটি নতুন প্রশ্ন জিজ্ঞাসা করা উচিত এবং ইনপুট লেয়ারের ধরণ, আউটপুট লেয়ারের ধরণ, আপনার কোড ইত্যাদির মতো সমস্ত বিবরণ অন্তর্ভুক্ত করা উচিত :)
জোসেফ

জোসেফ তার উত্তরে যা বর্ণিত হয়েছে তেমন টুইট পেয়েছি। আমি পাইথন কনসোলটি ২.১18.১6 সংস্করণ ব্যবহার করছি। এটি জানার জন্য আকর্ষণীয় হবে যেহেতু কোন সংস্করণটি কেবল একটি পাইথন তালিকা ভেক্টর স্তর ইনপুট হিসাবে কাজ করে।
স্টিফান

@ স্টেফান - আমি বিশ্বাস করি বিকাশকারীরা কীভাবে ইনপুটগুলি ব্যবহার করা উচিত তা পরিবর্তিত হয়েছিল। প্রথমদিকে 2.18 সংস্করণে স্তরগুলি একটি আধা-কোলন দ্বারা পৃথক করা দরকার যা শেষ পর্যন্ত তালিকাগুলির অনুমতি দেওয়ার জন্য পরিবর্তন করা হয়েছিল। এই সম্পর্কে জিজ্ঞাসা একটি পোস্ট ছিল ।
জোসেফ

4

যেহেতু উপরের উত্তর চেষ্টা করে আমার জন্য ব্যতিক্রম ঘটে ( l1এবং l2উভয় প্রকারের QgsVectorLayer, QGIS 2.18.17 পাইথন কনসোল)

import processing
[...]
processing.runalg('qgis:mergevectorlayers', l1 + ";" + l2, None)
Traceback (most recent call last):
    File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'QgsVectorLayer' and 'str'

আমি চেষ্টা করে যাচ্ছি

>>> merged = processing.runalg('qgis:mergevectorlayers', [l1, l2], None)
>>> merged['OUTPUT']
u'C:\\Users\\Jochen\\AppData\\Local\\Temp\\processing30eee19448ef42a497403dd3660cafcf\\82e112158f194f59a53e18d5020a9a9d\\OUTPUT.shp'

সফলভাবে।

সুতরাং <ParameterMultipleInput>অজগর তালিকা হিসাবে পাস এটি একটি সমাধান।

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