কিউজিআইএস প্রকল্পে গতিশীল স্তর নাম থাকা সম্ভব?


9

পোস্টজিআইএস এসকিউএল ক্যোয়ারী যা বর্তমান তারিখ ব্যবহার করে তার উপর ভিত্তি করে আমার সাথে একটি কিউজিআইএস প্রকল্প রয়েছে have যেহেতু ডাটাবেসের ডেটা পরিবর্তিত হয়, এই কোয়েরিগুলি প্রতিদিন নতুন নতুন ডেটা ফেরত দেয়।

স্তর গাছ প্যানেলে স্তরটির নাম কী গতিশীলভাবে পরিবর্তন করা সম্ভব, তাই এটি বর্তমান তারিখের প্রতিনিধিত্ব করে? (যেমন অর্থাত স্তর নাম Traffic on 24.01.2015, যে প্রতিটি নতুন দিন পরিবর্তন)। ক্যাপশনের জন্য ডেটা কোনও স্তরের কোনও বৈশিষ্ট্যের বৈশিষ্ট্য থেকে নেওয়া উচিত - এগুলির ক্ষেত্রে ক্ষেত্রের জন্য একই মান traffic_date


আপনি আপনার ডাটাবেস টেবিল, "ট্র্যাফিক" বা বর্তমান তারিখ থেকে ঠিক কী বের করবেন?
জার্মানি ক্যারিলো

আমি এক তারিখে বর্তমান তারিখের জন্য ডেটা এবং অন্য স্তরগুলিতে পূর্বাভাসের ডেটা বের করছি। সুতরাং "24.01.2015" আসলে ক্ষেত্রের মান, যা ডাটাবেস থেকে আসে। তারিখের সাথে সাথে স্বয়ংক্রিয়ভাবে পরিবর্তন করতে আমার প্রজেক্টে স্তরের নাম প্রয়োজন।
মফয়োদা

প্রকল্পটি প্রতিটি বার চাপলে নামটি পরিবর্তন করা কি ঠিক হবে?
নাথান ডাব্লু

উত্তর:


13

যদি আমি আপনাকে সঠিকভাবে পাই তবে উত্তরটি হ্যাঁ, কিউজিআইএস গতিশীল স্তরগুলির নামগুলি সমর্থন করে।

প্রকল্পটি প্রতিবার খোলা থাকলে আপনাকে একটি পাইথন ম্যাক্রো লিখতে হবে। এটি হবে কর্মপ্রবাহ:

  1. নিম্নলিখিত পাইথন কোডটিতে যান QGIS->Project->Project Propertiesএবং প্রতিস্থাপন করুন openProject():

    def openProject():
        import re, qgis     
        iface = qgis.utils.iface
        layers = iface.mapCanvas().layers()
        for lyr in layers:
            # Get date from layer
            it=lyr.getFeatures()
            feat = next(it)
            idx = lyr.fieldNameIndex('traffic_da')
            currDate = feat.attributes()[idx]
    
            # Set new layer name
            name = lyr.name()
            if re.search(' on \d{2,2}.\d{2,2}.\d{4,4}$', name):
                 name = name[:-14]
            name = name + " on " + currDate
            lyr.setLayerName( name )

    এখানে চিত্র বর্ণনা লিখুন

    নোট 1: আমি এটি শেফফাইলে পরীক্ষা করেছি, তাই যে ক্ষেত্রটি থেকে তারিখগুলি গ্রহণ traffic_daকরি তা শেফিলগুলি ফিল্ডের নামগুলিতে বেশি অক্ষর সমর্থন করে না। আপনার স্তরগুলিতে কাজ করতে কোডটিতে এটি সামঞ্জস্য করুন।

    দ্রষ্টব্য 2: আপনার প্রকল্পের কনফিগারেশনের উপর নির্ভর করে আপনার পছন্দসই স্তরগুলিতে কাজ করতে আপনার বৈধতা কোড যুক্ত করা উচিত। উদাহরণস্বরূপ, আপনি যদি রাস্টার স্তরগুলিতে কোড চালনা করেন তবে ত্রুটিগুলি অবশ্যই উপস্থিত হবে। আপনার যদি এটির সাহায্যের প্রয়োজন হয় তবে একটি নতুন প্রশ্ন খুলুন, আমি আপনাকে সহায়তা করতে পারি।

  2. আপনি আপনার প্রকল্পে ম্যাক্রোগুলি সক্ষম করেছেন তা নিশ্চিত করুন: Settings->Options->General->Enable macros: Always

  3. প্রকল্পে আপনার স্তরগুলি লোড করুন।

  4. আপনার প্রকল্প সংরক্ষণ করুন।

যতবার আপনি এই প্রকল্পটি থেকে এই প্রকল্পটি খুলবেন, আপনার স্তরের নামগুলি গতিশীল হবে traffic_date, প্রতিটি স্তরের বৈশিষ্ট্য সারণীতে ক্ষেত্র থেকে তারিখটি নেওয়া হবে ।

আমি প্রথমবার এই প্রকল্পটি খোলার পরে, এইভাবে আমার স্তরটির নামগুলি গতিশীলভাবে উত্পন্ন হয়েছিল:

এখানে চিত্র বর্ণনা লিখুন

আমি মনে করি এটি আপনাকে শুরু করতে সহায়তা করতে পারে। আপনি যদি অ-সুস্পষ্ট সমস্যায় পড়েন তবে আমাকে বলুন।


আমি আপনার মন্তব্যটি পড়ে এটি আবিষ্কার করেছি, উত্তর জমা দেওয়ার আগে 1s পোস্ট করেছি posted স্তরগুলির নির্দিষ্ট বিন্যাসের সাথে সামঞ্জস্য করার জন্য কোডে কিছু সামঞ্জস্য করা উচিত, তবে আমি আশা করি @ মোফয়োদা এগুলি মোকাবেলা করতে পারে।
জার্মানি ক্যারিলো

1
হ্যাঁ, এটি প্রথমে ভাল। আপনি onরেগেক্স ব্যবহার করে সংরক্ষণ করতে কেবল সেখান থেকে শেষের সূচি এবং স্ট্রিপটি সন্ধান করতে পারেন।
নাথান ডাব্লু

1
@gcarrillo নিবিড়! তবে দুর্দান্ত!
DPSSpatial

1
@gcarrillo খুব দুর্দান্ত, ধন্যবাদ! কেবলমাত্র কয়েকটি নির্দিষ্ট স্তরগুলিতে কীভাবে প্রয়োগ করতে হবে তা নির্ধারণের চেষ্টা করছি, আমি আশা করি এটি তৈরি করব। একটি দুর্দান্ত উত্তরের জন্য ধন্যবাদ!
মফয়োদা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.