Este código funcionará en la última versión de desarrollo de QGIS.
from qgis.utils import iface
from qgis.core import *
from PyQt4.QtCore import QVariant
import random
def createRandomPoints(count):
# Create a new memory layer to store the points.
vl = QgsVectorLayer("Point", "distance nodes", "memory")
pr = vl.dataProvider()
pr.addAttributes( [ QgsField("distance", QVariant.Int) ] )
layer = iface.mapCanvas().currentLayer()
# For each selected object
for feature in layer.selectedFeatures():
geom = feature.geometry()
length = geom.length()
feats = []
# Loop until we reach the needed count of points.
for i in xrange(0,count):
# Get the random distance along the line.
distance = random.uniform(0, length)
# Work out the location of the point at that distance.
point = geom.interpolate(distance)
# Create the new feature.
fet = QgsFeature()
fet.setAttributeMap( { 0 : distance } )
fet.setGeometry(point)
feats.append(fet)
pr.addFeatures(feats)
vl.updateExtents()
QgsMapLayerRegistry.instance().addMapLayer(vl)
Sé que dijiste que no estás muy familiarizado con el código de Python, pero deberías poder ejecutar esto de manera bastante fácil. Copie el código anterior en un archivo (se llama el mío locate.py
) y colóquelo en su ~/.qgis/python
si está en Windows 7 que estará C:\Users\{your user name}\.qgis\python\
en Windows XPC:\Documents and Settings\{your user name}\.qgis\python\
Una vez que el archivo esté en la carpeta de Python, abra QGIS y seleccione algunos objetos de línea.
Luego abra la consola de Python y ejecute el siguiente código:
import locate.py
locate.createRandomPoints(10)
El resultado debería verse así
Si desea ejecutarlo nuevamente, simplemente seleccione algunas líneas más y locate.createRandomPoints(10)
vuelva a ejecutarlo en la consola de Python.
Nota: localizar.createRandomPoints (10) el 10 aquí es el número de puntos a generar por línea