Shapely pythonライブラリを使用できます。これはrepresentative_point()
、ポリゴン内にあることが保証されている関数を提供します。
以下は、QGIS Pythonコンソールで実行できるPythonスクリプトです。属性を作成するポリゴンレイヤーを選択する必要があります。この関数は、更新する属性の名前を取ります。属性はレイヤーにすでに存在している必要があり、文字列タイプである必要があり、十分な長さ(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()