Страница 2 из 2

Re: Преобразование линий в точки

Добавлено: 18 май 2012, 10:02
KartaBY
Спасибо. :D
Преобразовал в LineString. Получил точечный файл с помощью выше указанного кода, но без исходных атрибутов. (
Если вас не затруднит, сделайте пожалуйста и перенос атрибутов в выше указанном коде.
:oops:

ps. Вопрос вдогонку. Как можно проверить шейп на наличие в нем MultiLinestring?

Re: Преобразование линий в точки

Добавлено: 18 май 2012, 16:23
Voltron
KartaBY писал(а):Если вас не затруднит, сделайте пожалуйста и перенос атрибутов в выше указанном коде. :oops:
А самостоятельно попробовать не хотите? :-)

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

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, можно спец. утилитами при их наличии.

Re: Преобразование линий в точки

Добавлено: 20 май 2012, 22:49
Александр Мурый
Сделал точки в GRASS, посмотрите, пойдёт или нет.
N_34_131_LAYER17_txt_CENTERS.zip
(11.35 КБ) 280 скачиваний

Re: Преобразование линий в точки

Добавлено: 22 май 2012, 13:53
KartaBY
Всем спасибо большое за оказанную помощь.

Re: Преобразование линий в точки

Добавлено: 22 май 2012, 14:05
Voltron
Если ваша проблема решена, пожалуйста отметьте это, отредактировав первое сообщение (п. 4.1)

Re: Преобразование линий в точки

Добавлено: 11 авг 2014, 09:35
tsatsara
Спасибо за помощь, точно такая же проблема - была) Ура)