# coding=UTF8
import csv
from PyQt4.QtCore import QVariant

#Исходные параметры
layer_name = '014' # Имя линейного слоя в списке слоев
csvfile_path = '//Client/C$/Users/e.pavlov/Desktop/111.csv' # путь к файлу с данными
EPSG = '32637' #метрическая система координат

#Получаем слой и данные csv-файла
layer = QgsMapLayerRegistry.instance().mapLayersByName(layer_name)[0]
csvfile = open(csvfile_path, 'rb')
reader = csv.reader(csvfile, delimiter=';')
header = reader.next()

#Подгатавливаем выходной слой
mem_layer = QgsVectorLayer("Point?crs=epsg:"+EPSG, 'point', 'memory')
mem_layer.startEditing()
attr = [QgsField(header[0],QVariant.String),QgsField(header[1],QVariant.Double),QgsField(header[2],QVariant.Double)] #Задаем тип данных для каждого столбца csv
prov = mem_layer.dataProvider()
prov.addAttributes(attr)
mem_layer.updateFields()

#Выполняем запрос и заполняем поля из csv-файла
for feat in layer.getFeatures():
	for row in reader:
		new_feat = QgsFeature()
		new_feat.setGeometry(feat.geometry().interpolate(float(row[0])))
		new_feat.setAttributes(attr)
		new_feat.setAttribute(0, float(row[0])) # Заполняем столбец 0
		new_feat.setAttribute(1,row[1]) # Заполняем столбец 1
		new_feat.setAttribute(2,row[2]) # Заполняем столбец 2
		mem_layer.addFeatures([new_feat])

#Сохраняем результат в виртуальный слой
mem_layer.commitChanges()
QgsMapLayerRegistry.instance().addMapLayer(mem_layer)