Вдохновленный этим вопросом и ответом в качестве примера того, как «легко» можно создавать свои собственные решения при использовании Open Source, я попытался создать свой собственный код для выборочного «взрыва» многокомпонентных функций во время сеанса редактирования.
Я впервые исследовал API QGIS 1.8 и вышел с этим фрагментом кода, который можно использовать для выполнения этой работы:
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.