def processPointsLayer(self, feedback, layer, mapAttr, resultProj): feedback.setProgressText("Publishing map: " + UTILS.normalizeName(layer.name())) clonedLayer = layer.clone() layerRenderer = clonedLayer.renderer() renderContext = QgsRenderContext() renderContext.setUseAdvancedEffects(True) renderContext.setFlags(QgsRenderContext.Flag.RenderBlocking | QgsRenderContext.Flag.Antialiasing) imageList = list() iconField = QgsField( 'icon_url', QVariant.String, 'text') #Danilo não vou verificar se o mapa ja tem esse atributo feedback.setProgressText("Adding a column 'icon_url'") clonedLayer.startEditing() clonedLayer.addAttribute(iconField) clonedLayer.commitChanges() clonedLayer.startEditing() feedback.setProgressText("Rendering symbologies") for feature in clonedLayer.getFeatures(): layerRenderer.startRender(renderContext, clonedLayer.fields()) symbol = layerRenderer.originalSymbolsForFeature( feature, renderContext) if len(symbol) <= 0: continue else: if len(symbol) > 1: feedback.pushConsoleInfo( "Warning: Only one symbol for symbology, the others will be ignored." ) symbol = symbol[0] layerRenderer.stopRender(renderContext) curImage = symbol.asImage(QSize(24, 24)) try: imgIndex = imageList.index(curImage) except Exception as e: imageList.append(curImage) imgIndex = len(imageList) - 1 feature.setAttribute("icon_url", './' + str(imgIndex) + ".png") clonedLayer.updateFeature(feature) clonedLayer.commitChanges() layerCsvFolder = self.getPathForMap(layer.name(), mapAttr, 'csv') feedback.setProgressText("Saving results") os.makedirs(layerCsvFolder, exist_ok=True) savedCsv = QgsVectorFileWriter.writeAsVectorFormat( clonedLayer, os.path.join(layerCsvFolder, 'point_layer.csv'), 'utf-8', resultProj, 'CSV', layerOptions=['GEOMETRY=AS_XY']) #Saving symbology for index in range(len(imageList)): imageList[index].save( os.path.join(layerCsvFolder, str(index) + '.png')) return savedCsv and len(imageList) > 0