0

I'm trying to do a spatial clipping operation between 2 point layers, representing buildings and earthquakes, and a buffer area created by the user. The problem is that after operation, all attributes of the starting layers disappear. Here is the code:

from PyQt5.QtGui import *
from PyQt5.QtCore import QVariant
import processing

layer = qgis.utils.iface.activeLayer()
elementi_selezionati = layer.selectedFeatures()
layerEdifici = QgsVectorLayer("Edifici.gpkg", "Edifici", "ogr")
layerTerremoti = QgsVectorLayer("LayerGIS/totaleepicentriterremotiinunareadi200kmdatoscanaliguria.gpkg", "Terremoti", "ogr")
contenitoreEdifici = QgsVectorLayer("LayerGIS/edContenitore.shp")
contenitoreTerr = QgsVectorLayer("LayerGIS/terrContenitore.shp")
ceDp = contenitoreEdifici.dataProvider()
ctDp = contenitoreTerr.dataProvider()

edificiIdonei = QgsVectorLayer("LayerGIS/edificiProva.shp", "edificiIdoneiRitagliati","ogr")
eDp = edificiIdonei.dataProvider()
terrFiltrati = QgsVectorLayer('LayerGIS/terrProva.shp', "terrIdoneiRitagliati","ogr")
tfDp = terrFiltrati.dataProvider()
buffDist = 10


if ceDp.countFeatures() > 0:
    
    with edit(contenitoreEdifici):
    
        for feat in contenitoreEdifici.getFeatures():
        
            contenitoreEdifici.deleteFeature(feat.id())
        contenitoreEdifici.updateFeature(feat)
if ctDp.countFeatures() > 0:
    
    with edit(contenitoreTerr):
    
        for feat in contenitoreTerr.getFeatures():
        
            contenitoreTerr.deleteFeature(feat.id())
        
        contenitoreTerr.updateFeature(feat)
if tfDp.countFeatures()> 0:
    with edit(terrFiltrati):
    
        for feat in terrFiltrati.getFeatures():
        
            terrFiltrati.deleteFeature(feat.id())
        
        terrFiltrati.updateFeature(feat)
if eDp.countFeatures() > 0:
    
    with edit(edificiIdonei):
    
        for feat in edificiIdonei.getFeatures():
        
            edificiIdonei.deleteFeature(feat.id())
        
        edificiIdonei.updateFeature(feat)


for fx in layerTerremoti.getFeatures():

            ctDp.addFeatures([fx])
for gx in layerEdifici.getFeatures():
    
        ceDp.addFeatures([gx])
    
 

aRispettoLayer = QgsVectorLayer('Polygon?crs=EPSG:3003','areaRispetto','memory')
pr = aRispettoLayer.dataProvider()
for t in elementi_selezionati:
        
    buff = t.geometry().buffer(buffDist*1000,18)
    b = QgsFeature()
    b.setGeometry(buff)
    pr.addFeatures([b])
        
single_symbol_renderer = aRispettoLayer.renderer()
symbol = single_symbol_renderer.symbol()

    
    
    
outres = processing.run("gdal:clipvectorbypolygon", {
    'INPUT': contenitoreTerr,
    'MASK' : aRispettoLayer,
    'OUTPUT': 'LayerGIS/terrProva.shp'
    })
        
    
    
    
outres = processing.run("gdal:clipvectorbypolygon", {
    'INPUT': contenitoreEdifici,
    'MASK' : aRispettoLayer,
    'OUTPUT': 'LayerGIS/edificiProva.shp'
    })
    
    
    

QgsProject.instance().addMapLayers([aRispettoLayer])
QgsProject.instance().addMapLayers([edificiIdonei])
QgsProject.instance().addMapLayers([terrFiltrati])
    
    
1

0