Existe un script en la colección de scripts en línea para el complemento Processing llamado "Líneas de distancia entre puntos", que utiliza una capa de puntos de entrada y crea una capa de líneas de salida. Las líneas en la capa de salida se dividen entre los puntos y contienen solo un campo de distancia.
Puedes acceder a esto desde:
Processing Toolbox > Scripts > Tools > Obtener scripts de la colección de scripts en línea
Un problema con el script es que crea líneas desde cada punto a cada otro punto lo que puede causar superposiciones. He editado ligeramente el código reemplazando la declaración de if
existente (que evita duplicados):
if feature1.id() < feature2.id():
con
if feature2.id() == feature1.id() + 1:
ya que esto solo crea líneas desde una característica al anterior, evitando así duplicados o superposiciones:
Nota: Esto solo funcionará eficientemente si el id()
de cada punto está ordenado correctamente.
Aquí está el código completo:
##Líneas de distancia entre puntos=nombre
##Vector=grupo
##CapaDePuntos=vector
##CapaDeSalida=vector de salida
from qgis.core import *
from PyQt4.QtCore import *
from processing.tools.vector import VectorWriter
inputLayer = processing.getObject(pointLayer)
# crear nueva capa para la salida:
fields = [QgsField('distance', QVariant.Double)]
writer = VectorWriter(outputLayer, None, fields, QGis.WKBLineString, inputLayer.crs())
# recorrer todos los puntos:
iter1 = inputLayer.getFeatures()
for feature1 in iter1:
p1 = feature1.geometry().asPoint()
# recorrer todos los puntos nuevamente:
iter2 = inputLayer.getFeatures()
for feature2 in iter2:
# la siguiente línea crea líneas desde una característica al anterior:
if feature2.id() == feature1.id() + 1:
# crear una nueva característica de línea:
p2 = feature2.geometry().asPoint()
l = QgsGeometry.fromPolyline([p1,p2])
feat = QgsFeature()
feat.setGeometry(l)
feat.setAttributes([l.length()])
writer.addFeature(feat)
del writer