オープンソースを使用するときにどのように「簡単に」独自のソリューションを作成できるかの例として、この質問と回答に触発されて、編集セッション中にマルチパート機能を選択的に「分解」する独自のコードを作成しようとしました。
私は初めてQGIS 1.8 APIを探索しましたが、仕事をするためにつながっている次のコードを作成しました。
layer = qgis.utils.iface.mapCanvas().currentLayer()
remove_list = []
for feature in layer.selectedFeatures():
geom = feature.geometry()
# check if feature geometry is multipart
if geom.isMultipart():
remove_list.append(feature.id())
new_features = []
temp_feature = QgsFeature(feature)
# create a new feature using the geometry of each part
for part in geom.asGeometryCollection ():
temp_feature.setGeometry(part)
new_features.append(QgsFeature(temp_feature))
# add new features to layer
layer.addFeatures(new_features, False)
# remove the original (multipart) features from layer
if len(remove_list) > 0:
for id in remove_list:
layer.deleteFeature (id)
私は経験豊富なプログラマーではないので、コードが最も効率的なものではないかもしれません。
次の急勾配は、それからプラグインを作成することです...または、少なくとも、試してみてください!
更新:
プラグインを作成することができました。これはMultipart Splitと呼ばれ、QGIS公式リポジトリにあります。