Bagaimana mengubah fitur multi-bagian yang dipilih menjadi fitur-fitur singlepart saat mengedit di QGIS?

9

Ada beberapa pertanyaan dan jawaban masing-masing untuk bagaimana membuat fitur multipart. Layer menjadi fitur singlepart yang menggunakan QGIS:

Tapi semua solusi yang saya lihat, buat layer yang sama sekali baru dan akan mengubah SEMUA geometri multipart menjadi yang tunggal.

Jadi pertanyaannya adalah, bagaimana mungkin seseorang, selama sesi edit, secara selektif mengubah fitur multi bagian menjadi fitur singlepart, tanpa perlu membuat lapisan baru?

Ini akan menjadi kebalikan dari alat "menggabungkan fitur yang dipilih", dan mirip dengan meledak di ArcGIS.

Apakah ada plugin yang melakukan ini? Bagaimana ini bisa dilakukan menggunakan konsol python?

Alexandre Neto
sumber

Jawaban:

18

Terinspirasi oleh pertanyaan & jawaban ini sebagai contoh betapa "mudahnya" seseorang dapat membuat solusinya sendiri ketika menggunakan Open Source, saya telah mencoba membuat kode sendiri untuk secara selektif "meledakkan" fitur multipart selama sesi pengeditan.

Saya telah menjelajahi QGIS 1.8 API untuk pertama kalinya, dan keluar dengan sepotong kode ini yang bekerja:

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)    

Saya bukan programmer yang berpengalaman, jadi kodenya mungkin bukan yang paling efisien.

Curam selanjutnya adalah membuat plugin dari itu ... Atau setidaknya, coba!

UPDATE:
Saya dapat membuat plugin. Ini disebut Multipart Split , dan dapat ditemukan di repositori resmi QGIS.

Alexandre Neto
sumber
1
Mungkinkah mengerjakan Multipart ini -> konversi Singlepart tanpa QGIS? Apakah ada cara yang bisa dilakukan dengan Standalone Python? @Alexandre Neto
Akhil
Perhatikan bahwa solusi ini bergantung pada pemilihan bagian dari fitur layer selama edit di kanvas peta. Untuk mengubah semua fitur layer (katakanlah shapefile) menjadi fitur bagian tunggal, saya pikir Anda bisa menggunakan pustaka OGR. Lihat tautan ini .
Alexandre Neto
Bersulang! Membantu .. !!
Akhil
Saya ingin mengambil lapisan yang merupakan satu poligon multi-bagian dan mengubahnya menjadi satu bagian - saya sepertinya tidak dapat menemukan kode python untuk melakukan ini dalam qgis. Saya melihat ada perintah di bawah vektor - alat geometri - Multiparts ke Singleparts. ini yang saya inginkan saya hanya perlu sintaks python
kflaw
@AlexandreNeto plugin hebat!
DPSSpatial