<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><div>Hello</div><div><br></div><div><br></div><div>I found out that it works when I initialize the layer like this:</div><div><br></div><div>QgsVectorLayer("Point?crs=epsg:21781&field=name:string(255)&field=description:string(255)", "temp", "memory")</div><div><br></div><div><br></div><div>So my code looks like this:</div><div><br></div><div><br></div><div>---------------</div><div><br></div><div>layer = QgsVectorLayer("Point?crs=epsg:21781&field=name:string(255)&field=description:string(255)", "temp", "memory")</div><div><br></div><div>feature = QgsFeature()</div><div><br></div><div>feature.setGeometry(QgsGeometry.fromPoint(QgsPoint(1, 2)))</div><div><br></div><div>feature.setAttributes(["namex", "xyz"])</div><div><br></div><div>layer.dataProvider().addFeatures([feature])</div><div><br></div><div>QgsVectorFileWriter.writeAsVectorFormat(layer, "/path/to/file.geojson", "utf-8", None, "GeoJSON")</div><div><br></div><div>---------------</div><div><br></div><div><br></div><div>But is there a possibility to directly write it to a file with the QgsVectorFileWriter without using the memory layer?</div><div><br></div><div><br></div><div>It would be nice if PyQGIS Developer Cookbook (http://www.qgis.org/en/docs/pyqgis_developer_cookbook/vector.html#writing-vector-layers) is updated, the second example still contains QVariant.</div><div><br></div><div><br></div><div>Thank you very much.</div><div><br></div><div><br></div><div>Josua</div><div><br></div><br><div><hr id="stopSpelling">From: josh-talk@hotmail.com<br>To: qgis-developer@lists.osgeo.org<br>Date: Sat, 22 Mar 2014 01:09:42 +0100<br>Subject: [Qgis-developer] Add Attributes,   Features and Geometries to QgsVectorFileWriter<br><br>

<style><!--
.ExternalClass .ecxhmmessage P {
padding:0px;
}

.ExternalClass body.ecxhmmessage {
font-size:12pt;
font-family:Calibri;
}

--></style>
<div dir="ltr">Hello<div><br></div><div>My goal is to write some features and geometries to a JSON file. I searched for examples however in QGIS 2 (I am using 2.2) something seems to have changed so it does not work. Here is a very simple example of what I want to do:</div><div><br></div><div><br></div><div><div>fields = QgsFields()</div><div>fields.append(QgsField("name"))</div><div>fields.append(QgsField("description"))</div><div>writer = QgsVectorFileWriter("/path/to/file.geojson", "utf-8", fields, QGis.WKBPoint, None, "GeoJSON")</div><div>feature = QgsFeature(fields)</div><div>feature.setGeometry(QgsGeometry.fromPoint(QgsPoint(1, 2)))</div><div>feature.setAttributes(["name", "xyz"])</div><div>writer.addFeature(newFeature)</div><div>del writer</div><div><br></div></div><div><br></div><div>The result is a JSON file with the following content:</div><div><br></div><div><br></div><div><div>{</div><div>"type": "FeatureCollection",</div><div>                                                                                </div><div>"features": [</div><div>{ "type": "Feature", "properties": { }, "geometry": null }</div><div>]</div><div>}</div></div><div><br></div><div><br></div><div>So the feature is added but attributes and geometry are ignored. Do you have any idea what I am doing wrong? I also tried to create a memory layer:</div><div><br></div><div><br></div><div><div>layer = QgsVectorLayer("Point", "temp", "memory")</div><div>provider = layer.dataProvider()</div><div>layer.startEditing()</div><div>provider.addAttributes([QgsField("name"), QgsField("description")])</div><div>feature = QgsFeature(fields)</div><div>feature.setGeometry(QgsGeometry.fromPoint(QgsPoint(1, 2)))</div><div>feature.setAttributes(["namex", "xyz"])</div><div>provider.addFeatures([feature])</div><div>layer.updateFields()</div><div>QgsVectorFileWriter.writeAsVectorFormat(layer, "/path/to/file.geojson", "utf-8", None, "GeoJSON")</div></div><div><br></div><div><br></div><div>The result looks a little bit better:</div><div><br></div><div><br></div><div><div>{</div><div>"type": "FeatureCollection",</div><div>"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::21781" } },</div><div>                                                                                </div><div>"features": [</div><div>{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 1.0, 2.0 ] } }</div><div>]</div><div>}</div></div><div><br></div><div><br></div><div>But the attributes are still missing. Does anybody know how this is done correctly? Thank you very much!</div><div><br></div><div>Josua</div>                                           </div>
<br>_______________________________________________
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer</div>                                        </div></body>
</html>