Re: Центроиды линий
Добавлено: 10 июн 2015, 12:18
Вот вариант предыдущего скрипта с копированием атрибутов.
Замечание: не запускать на больших файлах (начинает сжирать всю опер.память и вешает QGIS намертво).
Код: Выделить всё
from qgis.core import *
import qgis.utils
layer = qgis.utils.iface.mapCanvas().currentLayer()
iter = layer.getFeatures()
crs = layer.crs().toWkt()
out_name = layer.name() + '_centerpoints'
vl = QgsVectorLayer("Point?crs=" + crs, out_name, "memory")
pr = vl.dataProvider()
fet = QgsFeature()
fields = layer.dataProvider().fields().toList()
new_attr = []
for feature in iter:
geom = feature.geometry()
attr = feature.attributes()
for attrib in fields:
new_attr.append(QgsField(attrib.name(),attrib.type()))
pr.addAttributes(new_attr)
vl.updateFields()
length = geom.length()
mid = geom.interpolate(length/2)
fet.setGeometry(mid)
fet.setAttributes(attr)
pr.addFeatures([fet])
vl.commitChanges()
QgsMapLayerRegistry.instance().addMapLayer(vl)
Замечание: не запускать на больших файлах (начинает сжирать всю опер.память и вешает QGIS намертво).