বাহ্যিক সিএসভির ডেটা সহ কিউজিআইএস মডেলার একাধিক রাস্টার গণনা সম্পাদন করছেন?


20

একটি সিএসভি মেটাডেটা ফাইলের মানগুলির উপর ভিত্তি করে রাস্টারদের সেটগুলিতে আমার একাধিক গণনা করা দরকার।

আমি কিউজিআইএস গ্রাফিকাল মডেলারটি ব্যবহার করছি Tableএবং Table Fieldইনপুটগুলির সাথে একটি সিএসভিতে একটি নির্দিষ্ট ক্ষেত্রে কল করতে পারি ।

যেহেতু আমার একাধিক রাস্টার রয়েছে, এবং প্রতিটি রাস্টার সিএসভিতে একই মান রয়েছে, তবে আমি নির্দিষ্ট সারিটি কীভাবে বলব? (উদাহরণস্বরূপ দেখার অনুরূপ)।

আমি যদি সহজেই ব্যবহারের সুবিধার্থে না হয় তবে আমি কোনও স্ক্রিপ্ট যুক্ত করতে চাই না।


1
রাস্টারদের ফাইলগুলিতে রূপান্তর করে এটির কাছে যাওয়া আরও সহজ হবে। সেখান থেকে দুটি ফাইলের মধ্যে প্রয়োজনীয় সংযোগ স্থাপন করা সহজ হবে। webhelp.esri.com/arcgisdesktop/9.3/…
জ্যামি 2483

3
আপনার কাজের একটি তালিকা (সিউডোকোড) তৈরি করুন। আপনার কাজটি করার জন্য যদি আপনাকে কোনও স্ক্রিপ্ট অবলম্বন করতে হয় তবে এটি আপনাকে জানাবে। সনাক্তকরণ বা শর্তসাপেক্ষ পদ্ধতিগুলি আপনাকে স্ক্রিপ্টগুলির অবলম্বন করার সূচক। কাঠামোর স্ক্রিপ্টগুলি সম্পন্ন করা আপনার বন্ধু।
রেগনভ্যালড

উত্তর:


2

সত্যিই পুরানো পোস্ট তবে আমার ধারণা একটি সম্ভাব্য সমাধান হ'ল দুর্ভাগ্যক্রমে আপনার ক্ষেত্রে, আপনার মডেলারের একটি স্ক্রিপ্ট ব্যবহার করুন যা:

  • সমস্ত বোঝা রাস্টার স্তরগুলি পুনরুদ্ধার করে।
  • মেটাডেটাটি দিয়ে ইটারেট করুন যা রাস্টারের নাম সহ একটি কলাম রয়েছে।
  • মেটাডেটাতে থাকা লোডযুক্ত রাস্টার নামের সাথে মেলে।
  • যদি কোনও মিল খুঁজে পাওয়া যায়, তবে রাস্টার সম্পর্কিত মানটি বের করা হবে।

  1. আপনি এ থেকে একটি স্ক্রিপ্ট তৈরি করতে পারেন:

    Processing Toolbox > Scripts > Tools > Create new script
    

    তারপরে নিম্নলিখিতগুলির মতো কিছু ব্যবহার করুন:

    ##Example=name
    ##Table=table
    ##Field=Field Table
    ##Output_value=output Number
    
    from qgis.core import QgsMapLayer, QgsMapLayerRegistry
    import csv
    
    raster_list = [layer.name() for layer in QgsMapLayerRegistry.instance().mapLayers().values() if layer.type() == QgsMapLayer.RasterLayer]
    with open(Table) as f:
        reader = csv.reader(f)
        for row in reader:
            for raster in raster_list:
                if raster in row[0]:
                    Output_value = row[1]
                    print Output_value
    

  1. তারপরে আপনার মডেলারে স্ক্রিপ্ট যুক্ত করুন (আমি মাত্র দুটি ইনপুট দিয়ে একটি সাধারণ উদাহরণ তৈরি করেছি):

    Modeler

    আমি যদি উপরে এই স্ক্রিপ্টটি ব্যবহার করে এই মডেলটি চালিত করি তবে এটি কেবল মেটাডেটা থেকে আউটপুট মানটি মুদ্রণ করে যা রাস্টারটির নামের সাথে মিলে যায়:

    ফলাফল


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