Kode ini akan bekerja pada pengembangan dev terbaru 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)
Saya tahu Anda mengatakan Anda tidak terlalu terbiasa dengan kode Python tetapi Anda harus dapat menjalankan ini dengan cukup mudah. Salin kode di atas ke dalam file (milik saya disebut locate.py
) dan letakkan di Anda ~/.qgis/python
jika Anda berada di Windows 7 yang akan berada di C:\Users\{your user name}\.qgis\python\
atau di Windows XPC:\Documents and Settings\{your user name}\.qgis\python\
Setelah file ada di folder python buka QGIS dan pilih beberapa objek garis.
Kemudian buka konsol Python dan jalankan kode berikut:
import locate.py
locate.createRandomPoints(10)
Hasilnya akan terlihat seperti ini
Jika Anda ingin menjalankannya kembali cukup pilih beberapa baris lagi dan jalankan locate.createRandomPoints(10)
di konsol Python lagi.
Catatan: temukan.createRandomPoints (10) 10 di sini adalah jumlah poin yang akan dihasilkan per baris