পিকিউজিআইএস দিয়ে কোনও নির্বাচিত বৈশিষ্ট্যে কীভাবে জুম করবেন


10

আমি এমন একটি ফাংশন তৈরি করতে চাই যা কোনও বৈশিষ্ট্য নির্বাচন করে এবং এটির সাথে জুম করে (কিউজিআইএসে অনুরূপ)। সুতরাং নিম্নলিখিত ফাংশন আছে:

QgsMapLayerRegistry.instance().addMapLayer(self.vlayer)

def zoomTo(self):
    layer = self.vlayer
    atable = self.ui.table

    selectList=[]
    for i in atable.selectionModel().selectedRows():
        ID = atable.item(i.row(),0).text()
        selectList.append(int(ID))

    layer.setSelectedFeatures(selectList)

নির্বাচিত বৈশিষ্ট্যগুলি মানচিত্রে হাইলাইট করা হয়েছে। তবে নির্বাচিত বৈশিষ্ট্যগুলিতে কীভাবে একটি "জুম" করবেন বা মানচিত্রের মাঝখানে তাদের কোনও ধরণের ফোকাস করা যায় তা আমার কোনও ধারণা নেই।

উত্তর:


14

আপনাকে মানচিত্রের ক্যানভাসের বাছাইয়ের এক্সটেন্টগুলিতে সেট করতে হবে:

box = layer.boundingBoxOfSelected()
iface.mapCanvas().setExtent(box)
iface.mapCanvas().refresh()

ধন্যবাদ! এবং আমি কীভাবে আসল খোলা কিউজিআইএস মানচিত্রে আইফেসটি সম্পর্কিত করতে পারি?
মার্টিন

আপনি কি কোনও প্লাগইন, বা একটি স্বতন্ত্র অ্যাপ্লিকেশনটিতে কাজ করছেন?
নাথান ডাব্লু

হ্যাঁ, বুঝতে পেরেছি. আমি একটি প্লাগইনে কাজ করছি। আমি ভুলে গেছি gis.utils.iface। এখন এটি পুরোপুরি কাজ করছে। আবার আপনাকে ধন্যবাদ!
মার্টিন

5

জুম থেকে নির্বাচিত বৈশিষ্ট্যগুলিও ভিউ মেনুটির "জুম থেকে নির্বাচন" বিকল্পটি ট্রিগার করে সম্পাদন করা যেতে পারে।

eMenu = self.iface.viewMenu()
eMenu.actions() [12].trigger()

দ্রষ্টব্য: সূত্রের নম্বরটি বিভিন্ন QGIS সংস্করণের সাথে পরিবর্তিত হতে পারে।


বা আরও সরাসরি:

iface.actionZoomToSelected().trigger()

2
আমি এই পদ্ধতিটি ব্যবহার করব না। যদি কোনও নতুন কিউজিস সংস্করণে ফাংশনগুলি সূচী 13 এ চলে যায়? এই ধরণের সমস্যাগুলির সমাধান করা অবশ্যই খুব মজাদার নয় ...
মোজবোজ

@ মোজবোজ আমি সম্মত প্রথম উত্তরটি সেরা পছন্দ। এটি দ্বিতীয় বিকল্প বিকল্প হতে পারে। আপনার পরামর্শ অনুসারে উত্তরটি সম্পাদনা করেছেন। ধন্যবাদ!
এসজেএস

3
আপনি যদি বিকল্পটি ট্রিগার করতে চান তবে আমার মনে iface.actionZoomToSelected().trigger()হয় কিছুটা নিরাপদ :)
জোসেফ

@ জোসেফ আপনি কি আপনার পরামর্শ অনুসারে উত্তরটি সম্পাদনা করতে পারবেন?
এসজেএস

1
@ জোসেফ আমি তাতে কিছু মনে করব না;) আপনি উত্তরটি আরও ভাল দেখিয়েছেন বলে খুশি!
এসজেএস

0

# প্রথম একটি কিউমেসেজবক্স সমস্ত নির্বাচিত বৈশিষ্ট্য প্রদর্শন করে:

lyr = iface.activeLayer();
fts = lyr.selectedFeatures();
ftsCount = lyr.selectedFeatureCount();
sFts = str(ftsCount);
msgBox = QMessageBox();
msgBox.setText(sFts +' selected features');
msgBox.exec_();

নির্বাচিত বৈশিষ্ট্যগুলিতে # দ্বিতীয় জুম:

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