একবারে একক স্তরে কিউজিআইএস লোড একাধিক শৈলী


10

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

একবারে একই স্তরে একাধিক স্টাইল ফাইল লোড করার উপায় আছে কিনা তা দেখার চেষ্টা করছি? একটি একক কিউএমএল ব্রাউজ করার পরিবর্তে এর মতো কিছু, আমি বেশ কয়েকটি কিউএমএল ফাইলগুলি মাল্টি-নির্বাচন করতে এবং সেগুলি একবারে লোড করতে পারি?

প্রতি স্তর একাধিক শৈলীর উদাহরণ


1
একই স্তরে একবারে একাধিক শৈলী লোড করে কী বোঝাতে চান? শেষের স্টাইলটি কি সমস্ত পূর্ববর্তী লোড শৈলীর ওভাররাইড করবে না? বা আপনি একই স্তরের একাধিক অনুলিপিগুলিতে অনেকগুলি শৈলী লোড করতে চান?
আর্টওয়ার্ক 21

আমার বর্তমান কর্মপ্রবাহটি স্তর বৈশিষ্ট্যগুলি খোলার জন্য; একটি নতুন শৈলী যুক্ত করতে শৈল বোতামটি (নীচে বাম) ব্যবহার করুন, একটি নাম নির্ধারণ করুন, এবং তারপরে একটি সংরক্ষিত .QML ফাইল লোড করুন, তারপরে স্তরটি ব্যবহার করা হয় এমন অনেকগুলি (10-20) স্টাইলের জন্য পুনরাবৃত্তি করুন। বর্তমানে, আমার 25 টি প্রকল্পে প্রায় 7-8 স্তরগুলির জন্য এটি এক-এক করে করতে হবে। (পুনরাবৃত্ত তথ্য, স্তর এবং মানচিত্র, তবে প্রকল্প ফাইলগুলি ভৌগোলিকভাবে পৌরসভা দ্বারা পৃথক করা হয়েছে - প্রতিটি পৌরসভা পৃথক ক্লায়েন্ট)
সিইএল-মা

উত্তর:


3

আপনি পাইকগিস স্ক্রিপ্ট ব্যবহার করে একাধিক শৈলী লোড করতে পারেন (মন্তব্যে ব্যাখ্যা):

import os
from qgis.core import QgsMapLayerStyle
from qgis.utils import iface

# set path to your styles here
qml_path = '/home/user/qml'

layer = iface.activeLayer()
style_manager = layer.styleManager()

# read valid style from layer
style = QgsMapLayerStyle()
style.readFromLayer(layer)

for qml_file in [f for f in os.listdir(qml_path)
                 if os.path.isfile(os.path.join(qml_path, f)) and
                 f.endswith('.qml')]:
    # get style name from file
    style_name = os.path.basename(qml_file).strip('.qml')
    # add style with new name
    style_manager.addStyle(style_name, style)
    # set new style as current
    style_manager.setCurrentStyle(style_name)
    # load qml to current style
    (message, success) = layer.loadNamedStyle(os.path.join(qml_path, qml_file))
    print message
    if not success:  # if style not loaded remove it
        style_manager.removeStyle(style_name)

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

(বর্তমান এলটিআর সংস্করণ কিউজিআইএস ২.১18 এ পরীক্ষিত)


1
আপনাকে অনেক ধন্যবাদ! আমি একাধিক শৈলী সাফল্যের সাথে লোড করতে সক্ষম হয়েছি - অ্যালগরিদম চলাকালীন আমি একটি "[এর্নো 9] খারাপ ফাইল বর্ণনাকারী" ত্রুটি বার্তা পেয়েছি, তবে এটি এখনও সফলতার সাথে শেষ হয়েছে! এটি আমার প্রচুর কাজ বাঁচাবে!
সিইএল-মা

ভবিষ্যতে অন্য কারও কাছে এই পোস্টটি পড়া; উপরে বর্ণিত "খারাপ ফাইল" ত্রুটি বার্তাটি QML পাথের কারণে উভয় লাইন এবং নোড ভেক্টর স্তর রয়েছে। একবার আলাদা হয়ে গেলে আর ত্রুটি হয় না।
সিইএল-মা

যে কোডটি অজগর 3 তে রূপান্তর করতে সহায়তা করতে সক্ষম কেউ তাই এটি কিউজিআইএস 3 তে কাজ করে?
সিইএল-মা

0

যদি আমি আপনাকে সঠিকভাবে আন্ডারট্যান্ট করছি তবে আপনি কেবল জ্যামিতি শৈলীর প্রয়োগ করতে সক্ষম হবেন এবং প্রয়োজনীয়ভাবে কোনও নিয়ম বা অভিব্যক্তি স্তরগুলির ক্ষেত্রে আপনার ওপেন হওয়া কোনও প্রকল্পে দ্রুত এবং সহজেই প্রকাশ করা উচিত নয়?

যদি এমনটি হয় তবে আপনি কেবল শৈলী পরিচালক ব্যবহার করে প্রতীক লাইব্রেরিতে আপনার স্টাইলগুলি সংরক্ষণ করতে পারবেন? স্তর শৈলীর প্যানেলটি খুলুন এবং "ওপেন লাইব্রেরি" বোতামটি ক্লিক করুন।


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