ได้รับแรงบันดาลใจจากคำถาม & คำตอบนี้เป็นตัวอย่างว่า "ง่าย ๆ " สามารถสร้างโซลูชันของตัวเองเมื่อใช้ Open Source ได้อย่างไรฉันพยายามสร้างรหัสของตัวเองเพื่อเลือก "กระจาย" คุณสมบัติหลายส่วนในระหว่างการแก้ไข
ฉันได้สำรวจ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