Me gustaría crear un conjunto de datos de puntos modelo en QGIS 3.0.3 con Python en la consola de QGIS python para hacer algunas pruebas. En concreto, quiero crear un conjunto de datos de puntos que tiene una característica con una geometría vacía, y, otra característica con una geometría nula.
Lo que he intentado es:
layer = QgsVectorLayer('Point?crs=epsg:4326&field=id:string&field=type:string','ModelPoints',"memory")
pr = layer.dataProvider()
points = {}
points['Pt1'] = ['(1,1)', QgsPointXY(1,1)]
points['Pt2'] = ['(2,1)', QgsPointXY(1,1)]
points['Pt3'] = ['(4,1)', QgsPointXY(1,1)]
points['Pt4'] = ['empty', QgsPointXY()]
points['Pt5'] = ['null', None]
for id, point in points.items():
pt = QgsFeature()
pt.setAttributes([id,point[0]])
if point[1] is not None:
pt.setGeometry(QgsGeometry.fromPointXY(point[1]))
print(pt.geometry().asWkt())
pr.addFeature(pt)
layer.updateExtents()
QgsProject.instance().addMapLayer(layer)
En este código, la geometría de punto vacío se pretende crear por:
pt.setGeometry(QgsGeometry.fromPointXY(QgsPointXY())
Sin embargo, el resultado es:
pt.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(0,0))
Por lo tanto, mi código está haciendo un punto con el vértice (0,0), pero, mientras que necesito un punto (o una geometría) sin vértices.
Nota: Los enfoques g = QgsGeometry.fromWkt('POINT')
y g = QgsGeometry.fromWkt('POINT EMPTY')
ambos resultan en una geometría nula como se muestra utilizando print(g.isNull())
.