आप Shapely python पुस्तकालय का उपयोग कर सकते हैं, जो 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()