You can implement the code below to get the coordinates from a text file, clipboard, or any user input.
Below are two functions that, called with the layer name and list of points as arguments, build a Line or Point temporary layer.
+1 / share if you like the post and the blog!
-----------
def createLineLay(name,lstP): vl = QgsVectorLayer("Linestring", name, "memory") #pr = vl.dataProvider() vl.startEditing() vl.addAttribute(QgsField("id", QVariant.Int)) vl.updateFields() fet = QgsFeature(vl.pendingFields()) lstPP = [] for p in lstP: lstPP.append(QgsPoint(float(p[0]),float(p[1]))) lstPP.append(QgsPoint(float(lstP[0][0]),float(lstP[0][1]))) fet.setGeometry(QgsGeometry.fromPolyline(lstPP)) fields = vl.pendingFields() fet.setFields( fields, True ) fet['id'] = 0 pr = vl.dataProvider() pr.addFeatures( [ fet ] ) vl.commitChanges() QgsMapLayerRegistry.instance().addMapLayer(vl) def createLayPts(name, lstP): vl = QgsVectorLayer("Point", name, "memory") #pr = vl.dataProvider() vl.startEditing() vl.addAttribute(QgsField("ID", QVariant.Int)) vl.addAttribute(QgsField("X", QVariant.Double)) vl.addAttribute(QgsField("Y", QVariant.Double)) vl.updateFields() idP = 0 for p in lstP: fet = QgsFeature(vl.pendingFields()) fet.setGeometry(QgsGeometry.fromPoint(QgsPoint(float(p[0]),float(p[1])))) fields = vl.pendingFields() fet.setFields( fields, True ) fet["ID"] = idP fet['X'] = p[0] fet['Y'] = p[1] pr = vl.dataProvider() pr.addFeatures( [ fet ] ) vl.commitChanges() idP +=1 QgsMapLayerRegistry.instance().addMapLayer(vl)