representative_point()
Çokgenin içinde kalması garanti edilen bir işlev sağlayan Shapely python kitaplığını kullanabilirsiniz .
İşte QGIS Python konsolunda çalıştırılabilen bir Python betiği. Özniteliğini oluşturmak istediğiniz çokgen katmanı seçilmelidir. İşlev, güncellemek istediğiniz özniteliğin adını alır. Öznitelik katmanınızda zaten var olmalı, dize türü olmalı ve yeterince uzun olmalıdır (30 karakter).
İşte algoritmanın bulduğu noktalara bir örnek:
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()