Центроиды линий

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Центроиды линий

Сообщение Александр Мурый » 10 июн 2015, 12:18

Вот вариант предыдущего скрипта с копированием атрибутов.

Код: Выделить всё


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)

center_points_pyqgis.py
(800 байт) 389 скачиваний
Замечание: не запускать на больших файлах (начинает сжирать всю опер.память и вешает QGIS намертво).
Редактор материалов, модератор форума

Аватара пользователя
Игорь Лебедь
Завсегдатай
Сообщения: 452
Зарегистрирован: 24 апр 2010, 19:47
Репутация: 101
Откуда: Город в клёнах и акациях
Контактная информация:

Re: Центроиды линий

Сообщение Игорь Лебедь » 10 июн 2015, 12:39

Спасибо! Вопрос решён. Жаль, что такого казалось бы простого инструмента (или хотя бы опции в инструменте Convert geometry type) нет в стандартной поставке QGIS и NEXTGIS.

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя