সবেমাত্র অনলাইনে স্ক্রিপ্ট পাওয়া গেছে যা কিছু সামঞ্জস্যের সাথে কিউগিস 3.5.x এর সাথে কাজ করে
আমি মূল পোস্টটি হারিয়েছি তাই লেখককে ক্রেডিট করতে পারি না।
আপনি যা করেন তা হ'ল:
- ভরাট স্তর তৈরি করুন এটি "জ্যামিতি জেনারেটর" এ পরিবর্তন করুন
- "জ্যামিতির ধরণ" পয়েন্টে পরিবর্তন করুন
- অভিব্যক্তির জন্য পাঠ্যক্ষেত্রের ডানদিকে "সিগমা" বোতামটি ক্লিক করুন
- "এক্সপ্রেশন ডায়লগ" উইন্ডোতে "ফাংশন সম্পাদক" এ ট্যাব পরিবর্তন করুন এবং নীচের কোডটি এখানে পেস্ট করুন
- এখন "এক্সপ্রেশন ডায়লগ" এ ফাংশন কলটি এমনভাবে পেস্ট করুন: ফিলিগ্রিড (0.001,0.001,1) (প্রথম 2 টি মান এলোমেলো আকারের)
- পরিবর্তনগুলি এবং আপডেট দেখুন সংরক্ষণ করুন।
- অসাধারণ র্যান্ডম পয়েন্ট রয়েছে
লিপিটির মূল লেখককে ধন্যবাদ।
from qgis.core import *
from qgis.gui import *
import math
import random
"""
Define a grid based on the interval and the bounding box of
the feature. Grid will minimally cover the feature and be centre aligned
Create a multi-point geometry at the grid intersections where
the grid is enclosed by the feature - i.e. apply a clipping mask
Random value determines amount of randomness in X/Y within its
grid square a particular feature is allowed to have
"""
@qgsfunction(args='auto', group='Custom')
def fillGrid(xInterval, yInterval, rand, feature, parent):
box = feature.geometry().boundingBox()
#Create a grid that minimally covers the boundary
#using the supplied intervals and centre it
countX = math.ceil(box.width() / xInterval)
countY = math.ceil(box.height() / yInterval)
#Align the grid
gridX = countX * xInterval
gridY = countY * yInterval
dX= gridX - box.width()
dY= gridY - box.height()
xMin = box.xMinimum() - (dX/2)
yMin = box.yMinimum() - (dY/2)
points = []
#+1 to draw a symbol on the n+1th grid element
for xOff in range(countX+1):
for yOff in range(countY+1):
ptX = xMin + xOff*(xInterval) + rand * random.uniform(0,xInterval)
ptY = yMin + yOff*(yInterval) + rand * random.uniform(0,xInterval)
pt = QgsPointXY(ptX,ptY)
point = QgsGeometry.fromPointXY(pt)
if feature.geometry().contains(point):
points.append(pt)
return QgsGeometry.fromMultiPointXY(points)