Parece una operación básica usando PyQGIS pero no veo lo que me falta. Quiero crear una capa de memoria con las mismas características y atributos de un shapefile. He mirado varios posts como:
- Copia de atributos de la capa de puntos a la capa de líneas de memoria PYQGIS
- pyQGIS copia manualmente todas las características con atributos de una capa en una capa de memoria
El siguiente script crea una capa de memoria, obtiene los campos correctos y el número correcto de características pero no rellena los campos con datos:
input = "C:/Users/Me/Desktop//example.shp"
layer = QgsVectorLayer(example,"line","ogr")
temp = QgsVectorLayer("LineString?crs=epsg:4326", "result", "memory")
temp_data = temp.dataProvider()
temp.startEditing()
layer_fields = layer.dataProvider().fields().toList()
attr = layer.dataProvider().fields().toList()
temp_data.addAttributes(attr)
temp.updateFields()
feat = QgsFeature()
for elem in layer.getFeatures():
feat.setGeometry(elem.geometry())
feat.setAttributes(attr)
temp.addFeatures([feat])
temp.updateExtents()
temp.commitChanges()
QgsMapLayerRegistry.instance().addMapLayer(temp)