本文整理汇总了Python中qgis.gui.QgsMapCanvas.zoomByFactor方法的典型用法代码示例。如果您正苦于以下问题:Python QgsMapCanvas.zoomByFactor方法的具体用法?Python QgsMapCanvas.zoomByFactor怎么用?Python QgsMapCanvas.zoomByFactor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.gui.QgsMapCanvas
的用法示例。
在下文中一共展示了QgsMapCanvas.zoomByFactor方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: WidgetResult
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import zoomByFactor [as 别名]
#.........这里部分代码省略.........
@logUICall
def closeResult(self):
''' remove from map result QGIS layer and reset quality report display '''
self.canvas.setLayerSet([]) # call necessary to remove all layers to avoid disconnect errors
self.removeDataLayer(self.EXPOSURE)
self.refreshLayers()
self.ui.txt_dq_test_details.setText("")
@logUICall
def closeAll(self):
''' remove from map all QGIS layer in currently defined project '''
self.ui.cb_layer_selector.clear()
try:
self.canvas.setLayerSet([]) # call necessary to remove all layers to avoid disconnect errors
for i in range(5):
self.removeDataLayer(i)
self.ui.txt_dq_test_details.setText("")
self.refreshLayers()
except:
pass # exception will is thrown when registry is empty
# internal helper methods
###############################
def showDataLayer(self, index, layer):
""" display given QGIS layer on map """
try:
# add to QGIS registry and refresh view
if self.map_layers[index] is not None:
self.removeDataLayer(index)
self.map_layers[index] = layer
self.registry.addMapLayer(layer)
layer.setRendererV2(self.map_layer_renderer[index])
except:
pass
def removeDataLayer(self, index):
""" remove from map the layer identified with index """
layer = self.map_layers[index]
self.map_layers[index] = None
if layer is not None:
try:
self.registry.removeMapLayer(layer.getLayerID(), False)
del layer
except:
pass # do nothing if it fails. probably already deleted
def findFeatureExtentByAttribute(self, layer, field, value):
"""
find extent of all objects in QGIS layer matching condition "field=value"
"""
fidx = layer_field_index(layer, field)
if fidx == -1:
return None
xmin, xmax, ymin, ymax = 180, -180, 90, -90
extent = QgsRectangle(xmin, ymin, xmax, ymax)
need_transform = layer.crs() != self.canvas.mapRenderer().destinationCrs()
if need_transform:
transform = QgsCoordinateTransform(layer.crs(), self.canvas.mapRenderer().destinationCrs())
for feature in layer_features(layer):
if str(value) == feature.attributeMap()[fidx].toString():
f_extent = feature.geometry().boundingBox()
if need_transform:
f_extent = transform.transform(f_extent)
xmin = min(f_extent.xMinimum(), xmin)
xmax = max(f_extent.xMaximum(), xmax)
ymin = min(f_extent.yMinimum(), ymin)
ymax = max(f_extent.yMaximum(), ymax)
extent.set (xmin, ymin, xmax, ymax)
return extent
def zoomToLayer(self, layer):
""" zoom canvas to extent of given layer """
try:
lyr_extent = layer.extent()
if layer.crs() != self.canvas.mapRenderer().destinationCrs():
transform = QgsCoordinateTransform(layer.crs(), self.canvas.mapRenderer().destinationCrs())
lyr_extent = transform.transform(lyr_extent)
self.zoomToExtent(lyr_extent)
except:
pass
def zoomToExtent(self, extent):
""" zoom canvas to given extent """
try:
self.canvas.setExtent(extent)
self.canvas.zoomByFactor(1.1)
except:
self.mapZoomFull()
def refreshLayers(self):
""" refresh all layers in canvas """
# add each layer according to order
layerSet = []
self.ui.cb_layer_selector.clear()
for idx, lyr in enumerate(self.map_layers):
if lyr is not None:
layerSet.append(QgsMapCanvasLayer(lyr))
self.ui.cb_layer_selector.addItem(self.LAYER_NAMES[idx])
if len(layerSet) > 0: