对于一个项目,我正在创建不同的图层,这些图层都应该写入一个地理包中。我正在使用 QGIS 3.16.1 和 QGIS 中的 Python 控制台,它在 Python 3.7 上运行
我尝试了很多事情,但无法弄清楚如何做到这一点。这是我到目前为止使用的。
vl = QgsVectorLayer("Point", "points1", "memory")
vl2 = QgsVectorLayer("Point", "points2", "memory")
pr = vl.dataProvider()
pr.addAttributes([QgsField("DayID", QVariant.Int), QgsField("distance", QVariant.Double)])
vl.updateFields()
f = QgsFeature()
for x in range(len(tag_temp)):
f.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(lon[x],lat[x])))
f.setAttributes([dayID[x], distance[x]])
pr.addFeature(f)
vl.updateExtents()
# I'll do the same for vl2 but with other data
uri ="D:/Documents/QGIS/test.gpkg"
options = QgsVectorFileWriter.SaveVectorOptions()
context = QgsProject.instance().transformContext()
QgsVectorFileWriter.writeAsVectorFormatV2(vl1,uri,context,options)
QgsVectorFileWriter.writeAsVectorFormatV2(vl2,uri,context,options)
问题是在“test.gpkg”中创建了一个名为“test”的层,而不是“points1”或“points2”。第二个 QgsVectorFileWriter.writeAsVectorFormatV2() 也覆盖第一个的输出,而不是将图层附加到现有的地理包中。
我还尝试创建单个 .geopackages,然后使用“包层”处理工具 (processing.run("native:package") 将所有层合并到一个地理包中,但不幸的是,属性类型都转换为字符串。
任何帮助深表感谢。提前谢谢了。