PyQGIS के साथ चयनित सुविधा पर ज़ूम कैसे करें


10

मैं एक ऐसा फंक्शन बनाना चाहता हूं जो एक फीचर को चुनता है और इसे (QGIS में समान) ज़ूम करता है। इसलिए निम्नलिखित कार्य है:

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()

धन्यवाद! और मैं वास्तविक खुले QGIS नक्शे में iface कैसे संबंधित कर सकता हूं?
मार्टिन

क्या आप एक प्लगइन, या एक स्टैंडअलोन ऐप पर काम कर रहे हैं?
नाथन डब्ल्यू

हां पा लिया। मैं एक प्लगइन पर काम कर रहा हूँ। मैं भूल गया gis.utils.iface। अब पूरी तरह से काम कर रहा है। फिर से धन्यवाद!
मार्टिन

5

दृश्य मेनू के "ज़ूम टू सेलेक्शन" विकल्प को ट्रिगर करके चयनित सुविधाओं को ज़ूम भी किया जा सकता है।

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

नोट: सूचकांक संख्या अलग-अलग QGIS संस्करणों के साथ भिन्न हो सकती है।


या अधिक सीधे:

iface.actionZoomToSelected().trigger()

2
मैं इस पद्धति का उपयोग नहीं करूंगा। क्या होगा यदि एक नए qgis संस्करण में फ़ंक्शन 13 को अनुक्रमित करता है? इस तरह के मुद्दों का निवारण करना निश्चित रूप से बहुत मज़ेदार नहीं है ...
mozzbozz

@mozzbozz मैं सहमत हूँ। पहला उत्तर सबसे अच्छा विकल्प है। यह दूसरा वैकल्पिक विकल्प हो सकता है। आपके सुझाव के अनुसार उत्तर को संपादित किया। धन्यवाद!
एसजे

3
यदि आप विकल्प को ट्रिगर करना चाहते हैं, तो मुझे लगता iface.actionZoomToSelected().trigger()है कि थोड़ा सुरक्षित है :)
जोसेफ

@ जोसेफ pls आपके सुझाव के अनुसार उत्तर को संपादित कर सकता है?
एसजे

1
@ जोसेफ मैं बुरा नहीं मानूंगा;) खुश हूं कि आपने जवाब को और बेहतर बना दिया!
एसजे

0

# पहली QMessageBox सभी चयनित सुविधाओं को प्रदर्शित करती है:

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

# चयनित सुविधाओं के लिए दूसरा ज़ूम:

iface.actionZoomToSelected().trigger();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.