কিউজিআইএস ২.x এ কাজ করার জন্য কিউজিআইএস ২.x পাইথন কোড পাচ্ছেন? অবজেক্টটির কোনও বৈশিষ্ট্য 'কিংবদন্তি ইন্টারফেস' সমস্যা নেই


12

নিম্নলিখিত কোডের টুকরা কিউজিআইএস ২.x এ ভাল কাজ করে, তবে এটি কিউজিআইএস ৩.x এ কাজ করে না।

myDir = 'd:/work/output_folder/'
layers = iface.legendInterface().layers()
pipe = QgsRasterPipe()
for layer in layers:
 extent = layer.extent()
 width, height = layer.width(), layer.height()
 renderer = layer.renderer()
 provider=layer.dataProvider()
 crs = layer.crs().toWkt() 
 pipe.set(provider.clone())
 pipe.set(renderer.clone())
 opts = ["COMPRESS=LZW"] 
 file_writer = QgsRasterFileWriter(myDir + layer.name() + ".tif")
 file_writer.setCreateOptions(opts)
 file_writer.writeRaster(pipe,
      width,
         height,
         extent,
         layer.crs())

কোডটি চালানোর সময় আমি এই ত্রুটিটি পেয়েছি:

Traceback (most recent call last):
  File "C:\PROGRA~1\QGIS3~1.0\apps\Python36\lib\code.py", line 91, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
AttributeError: 'QgisInterface' object has no attribute 'legendInterface'

কেউ কি জানেন যে নতুন সংস্করণে 'কিংবদন্তি ইন্টারফেস' প্রতিস্থাপন করেছে বা কিউজিআইএস ৩.০ এ চালানোর জন্য আমার আরও কী কী পরিবর্তন করতে হবে?

উত্তর:


14

আপনি কেবল প্রতিস্থাপন করতে পারেন:

layers = iface.legendInterface().layers()

সঙ্গে

layers = [layer for layer in QgsProject.instance().mapLayers().values()]

এই স্তরটি আমার পক্ষে যথেষ্ট পরিমাণে কার্যকর হয়নি কারণ প্রাপ্ত স্তরগুলি স্তর প্যানেলে তালিকাভুক্ত একই ক্রমে ছিল না।
আলেকস্যাট

@ অ্যালেক্সম্যাট - আপনার সমস্যার জন্য একটি পদ্ধতি খুঁজে পেয়েছেন তা জেনে রাখা ভাল :)
জোসেফ

9

এর সমতুল্য

layers = self.iface.legendInterface().layers()

কিউজিআইএস ৩.০ এ

layers = [tree_layer.layer() for tree_layer in QgsProject.instance().layerTreeRoot().findLayers()]

এটি পুনরাবৃত্তভাবে সমস্ত স্তর সন্ধান করে এবং স্তর প্যানেলে তালিকাভুক্ত একই ক্রমে এগুলি প্রদান করে।


3

আমি এটি স্তরগুলির তালিকাতে পেয়েছি:

layers = qgis.core.QgsProject.instance().layerTreeRoot().layerOrder()


2

কটাক্ষপাত আছে https://qgis.org/api/api_break.html - সেখানে আক্ষরিক এর API- পরিবর্তন, যা 2.x.scripts হ্যান্ডেল আপগ্রেড করা প্রয়োজন হাজার হাজার।

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