KartaBY писал(а):Если вас не затруднит, сделайте пожалуйста и перенос атрибутов в выше указанном коде.

А самостоятельно попробовать не хотите?
Код: Выделить всё
from qgis.core import *
layer = qgis.utils.iface.mapCanvas().currentLayer()
vl = QgsVectorLayer("Point", "temporary_points", "memory")
pr = vl.dataProvider()
pr.addAttributes(layer.dataProvider().fields().values())
vl.updateFieldMap()
layer.select(layer.dataProvider().attributeIndexes())
ft = QgsFeature()
while layer.nextFeature(ft):
tmp = ft.geometry().asPolyline()
x = (tmp[0].x() + tmp[1].x())/2.0
y = (tmp[0].y() + tmp[1].y())/2.0
f = QgsFeature()
f.setGeometry(QgsGeometry.fromPoint(QgsPoint(x, y)))
f.setAttributeMap(ft.attributeMap())
pr.addFeatures([f])
QgsMapLayerRegistry.instance().addMapLayer( vl )
KartaBY писал(а):ps. Вопрос вдогонку. Как можно проверить шейп на наличие в нем MultiLinestring?
Зависит от. Можно из консоли Python QGIS, можно спец. утилитами при их наличии.