यह वास्तव में जटिल नहीं है, वेक्टर में मेमोरी प्रदाता को देखें :
- एक बिंदु के साथ बनाया गया है
QgsPoint(x,y)
औरQgsGeometry.fromPoint(QgsPoint(x,y))
- एक लाइन दो बिंदुओं के साथ बनाई गई है:
QgsGeometry.fromPolyline([QgsPoint(x1,y1),QgsPoint(x2,y2)]))
- बहुभुज बिंदुओं की सूची के साथ बनाया गया है:
QgsGeometry.fromPolygon([[QgsPoint(x1,y1),QgsPoint(x2,y2), QgsPoint(x3,y3)]])
1) दो अंक:
# create a memory layer with two points
layer = QgsVectorLayer('Point', 'points' , "memory")
pr = layer.dataProvider()
# add the first point
pt = QgsFeature()
point1 = QgsPoint(50,50)
pt.setGeometry(QgsGeometry.fromPoint(point1))
pr.addFeatures([pt])
# update extent of the layer
layer.updateExtents()
# add the second point
pt = QgsFeature()
point2 = QgsPoint(100,150)
pt.setGeometry(QgsGeometry.fromPoint(point2))
pr.addFeatures([pt])
# update extent
layer.updateExtents()
# add the layer to the canvas
QgsMapLayerRegistry.instance().addMapLayers([layer])
2) दो बिंदुओं को जोड़ने वाली रेखा
layer = QgsVectorLayer('LineString', 'line' , "memory")
pr = layer.dataProvider()
line = QgsFeature()
line.setGeometry(QgsGeometry.fromPolyline([point1,point2]))
pr.addFeatures([line])
layer.updateExtents()
QgsMapLayerRegistry.instance().addMapLayers([layer])
3) अंक को कवर करने वाला बहुभुज
layer = QgsVectorLayer('Polygon', 'poly' , "memory")
pr = layer.dataProvider()
poly = QgsFeature()
points = [point1,QgsPoint(50,150),point2,QgsPoint(100,50)]
# or points = [QgsPoint(50,50),QgsPoint(50,150),QgsPoint(100,150),QgsPoint(100,50)]
poly.setGeometry(QgsGeometry.fromPolygon([points]))
pr.addFeatures([poly])
layer.updateExtents()
QgsMapLayerRegistry.instance().addMapLayers([layer])
-
QGIS 3.0 और बाद में परिवर्तन:
QGIS 3.0 के लिए और इसके बाद के संस्करण उपरोक्त वर्कफ़्लो अभी भी सही है, लेकिन कुछ फ़ंक्शन बदल गए हैं। Https://qgis.org/api/api_break.html देखें
उपरोक्त कोड को अपडेट करने के लिए, निम्नलिखित कार्यों को बदलें:
QgsPoint -> QgsPointXY
QgsfromPoint -> QgsfromPointXY
QgsfromPolyline -> QgsfromPolylineXY
QgsfromPolygon -> QgsfromPolylineXY
QgsfromPolyline -> QgsfromPolylineXY
QgsMapLayerRegistry -> QgsProject