def batchExportAsXls(self, layer, Wb): features = layer.selectedFeatures() mapTool = QgsMapTool(self.iface.mapCanvas()) FieldName = self.dlg.fieldCombo.currentField() for feature in features: title = feature[FieldName] if not title: title = 'profile' sh = Wb.add_sheet(str(title)) self.profiles = list() pointstoDraw = list() # Get feature geometry first_segment = True if first_segment: k = 0 first_segment = False else: k = 1 while not feature.geometry().vertexAt(k) == QgsPoint(0, 0): point2 = mapTool.toMapCoordinates( layer, QgsPoint(feature.geometry().vertexAt(k))) pointstoDraw += [[point2.x(), point2.y()]] k += 1 self.updateProfile(pointstoDraw, mapTool, False) if self.profiles: plotTool().exportToXls(self.profiles, sh, title) plotTool().clearData(self.dlg.plotWidget, self.profiles) self.dlg.activeLayerList.clear()
def selectAnnotation(self): self.rb.reset(QgsWkbTypes.PolygonGeometry) self.rb.setColor(QColor(0, 0, 255, 128)) for item in self.annotationList.selectedItems(): index = self.annotationList.row(item) mapTool = QgsMapTool(self.iface.mapCanvas()) point = mapTool.toCanvasCoordinates( self.annotationManager.annotations()[index].mapPosition()) pt1 = mapTool.toMapCoordinates( QPoint(point.x() - 10, point.y() - 10)) pt2 = mapTool.toMapCoordinates( QPoint(point.x() + 10, point.y() + 10)) rect = QgsRectangle(pt1, pt2) poly = QgsGeometry().fromRect(rect) self.rb.addGeometry(poly, None)
def batchExportPlot(self, layer): features = layer.selectedFeatures() mapTool = QgsMapTool(self.iface.mapCanvas()) FieldName = self.dlg.fieldCombo.currentField() projFolder = self.settings.value('projFolder') outputFolder = QFileDialog.getExistingDirectory( directory=projFolder, caption='Choose the folder to export profile plots') outputFolder = toUnicode(outputFolder) if outputFolder: for feature in features: title = feature[FieldName] if not title: title = 'profile' self.profiles = list() pointstoDraw = list() # Get feature geometry first_segment = True if first_segment: k = 0 first_segment = False else: k = 1 while not feature.geometry().vertexAt(k) == QgsPoint(0, 0): point2 = mapTool.toMapCoordinates( layer, QgsPoint(feature.geometry().vertexAt(k))) pointstoDraw += [[point2.x(), point2.y()]] k += 1 self.updateProfile(pointstoDraw, mapTool, False) if self.profiles: self.exportPlot(folder=outputFolder, name=str(feature.id()).zfill(3), title=str(title)) plotTool().clearData(self.dlg.plotWidget, self.profiles) self.dlg.activeLayerList.clear()