Dieser Code funktioniert mit dem neuesten Entwickler-Build von 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)
Ich weiß, dass Sie gesagt haben, dass Sie mit Python-Code nicht sehr vertraut sind, aber Sie sollten in der Lage sein, dies ziemlich einfach auszuführen. Kopieren Sie den obigen Code in eine Datei (meine heißt locate.py
) und platzieren Sie sie in Ihrer, ~/.qgis/python
wenn Sie Windows 7 verwenden, das sich in C:\Users\{your user name}\.qgis\python\
oder unter Windows XP befindetC:\Documents and Settings\{your user name}\.qgis\python\
Sobald sich die Datei im Python-Ordner befindet, öffnen Sie QGIS und wählen Sie einige Linienobjekte aus.
Öffnen Sie dann die Python-Konsole und führen Sie den folgenden Code aus:
import locate.py
locate.createRandomPoints(10)
Das Ergebnis sollte ungefähr so aussehen
Wenn Sie es erneut ausführen möchten, wählen Sie einfach einige weitere Zeilen aus und führen Sie es erneut locate.createRandomPoints(10)
in der Python-Konsole aus.
Hinweis: locate.createRandomPoints (10) Die 10 hier ist die Anzahl der Punkte, die pro Zeile generiert werden sollen