আপনি শেপলি পাইথন লাইব্রেরিটি ব্যবহার করতে পারেন, এটি এমন একটি ফাংশন সরবরাহ করে যা representative_point()
বহুভুজের মধ্যে শুয়ে থাকার গ্যারান্টিযুক্ত।
এখানে পাইথন স্ক্রিপ্ট যা QGIS পাইথন কনসোলে চালানো যেতে পারে। যে বহুভুজ স্তরটির জন্য আপনি বৈশিষ্ট্য তৈরি করতে চান তা নির্বাচন করা উচিত। ফাংশনটি আপনি যে বৈশিষ্ট্যটি আপডেট করতে চান তার নাম নেয়। বৈশিষ্ট্যটি ইতিমধ্যে আপনার স্তরটিতে বিদ্যমান রয়েছে, এটি স্ট্রিং প্রকারের হতে হবে এবং এটি যথেষ্ট দীর্ঘ (30 অক্ষর) হওয়া উচিত।
অ্যালগরিদম যে পয়েন্টগুলি পাওয়া গেছে তার উদাহরণ এখানে:
import shapely.wkb
def setIDPoint(attributename):
layer = qgis.utils.iface.activeLayer()
provider = layer.dataProvider()
fields = provider.fields()
provider.select(provider.attributeIndexes() )
attributeID = provider.fieldNameIndex(attributename)
feature = QgsFeature()
layer.startEditing()
while provider.nextFeature(feature):
wkb = feature.geometry().asWkb()
polygon = shapely.wkb.loads(wkb)
reprPoint = ','.join([str(polygon.representative_point().x), str(polygon.representative_point().y)] )
feature.changeAttribute(attributeID, reprPoint)
layer.updateFeature(feature)
layer.commitChanges()