Hi,

I am trying to update a geometry using changeGeometryValues, it works fine
when the layer is of type shp or geopakage, but when I use it in
SpatialLite layer it gives me the following error.

This is part of the code that I use. How can I solve this error?

patialLite layer it gives me the following error.

This is part of the code that I use. How can I solve this error?


feats1 = [ feat for feat in
QgsProject.instance().mapLayersByName('trapecio_lineal')[0].getFeatures()
]

feats2 = [ feat for feat in
QgsProject.instance().mapLayersByName('malezas_areal')[0].getFeatures()
]

tempLayer = QgsVectorLayer('Polygon?crs=EPSG:3795', 'templayer', 'memory')
dptemp = tempLayer.dataProvider()
feattemp = QgsFeature()
for feats_trapecio in feats1:
    geom1 = feats_trapecio.geometry()
    iter = feats_trapecio.geometry().vertices()
    listOfVertices = []
    while iter.hasNext():
        vertex = iter.next()
        listOfVertices.append([vertex.x(), vertex.y()])

    poligonotrapecio = listOfVertices

    points =[]

    for i in range(len(poligonotrapecio)):
        point=QgsPointXY(float(poligonotrapecio[i][0]),
float(poligonotrapecio[i][1]))
        points.append(point)

    polig = QgsGeometry.fromPolygonXY([points])
    feattemp.setGeometry(polig)

    tempLayer.dataProvider().addFeatures([feattemp])
    tempLayer.commitChanges()
    geomtemplayer = feattemp.geometry()

    for feats in feats2:
        geom2 = feats.geometry()
        fid = feats.id()

        if geomtemplayer.intersects(geom2):

            geom4 = geom2.intersection(geomtemplayer)

            
QgsProject.instance().mapLayersByName('malezas_areal')[0].dataProvider().changeGeometryValues({fid:
geom4})

QgsProject.instance().mapLayersByName('malezas_areal')[0].commitChanges()
QgsProject.instance().addMapLayer(tempLayer)

QgsProject.instance().removeMapLayer(tempLayer.id())













This is the error that appears in the Qgis panel:

Error de SQLite: areas_verdes_y_terrenos.malezas_areal.GEOMETRY violates
Geometry constraint [geom-type or SRID not allowed] SQL: UPDATE
"areas_verdes_y_terrenos.malezas_areal" SET "geometry"=GeomFromWKB(?, 3795)
WHERE "ogc_fid"=?
_______________________________________________
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to