Làm cách nào để chuyển đổi một tính năng nhiều phần được chọn thành các tính năng một phần trong khi chỉnh sửa trong QGIS?


9

Có một số câu hỏi và câu trả lời tương ứng về cách biến nhiều tính năng nhiều lớp thành một tính năng một phần bằng cách sử dụng QGIS:

Nhưng tất cả các giải pháp tôi đã thấy, tạo lớp hoàn toàn mới và sẽ biến đổi TẤT CẢ các hình học đa biến thành một hình duy nhất.

Vì vậy, các câu hỏi là, làm thế nào một người, trong một phiên chỉnh sửa, có thể chuyển đổi có chọn lọc một tính năng nhiều phần thành một tính năng một phần, mà không cần phải tạo các lớp mới?

Nó sẽ ngược lại với công cụ "hợp nhất các tính năng được chọn" và tương tự như phát nổ trong ArcGIS.

Có plugin nào làm việc này không? Làm thế nào điều này có thể được thực hiện bằng cách sử dụng giao diện điều khiển python?

Câu trả lời:


18

Lấy cảm hứng từ câu hỏi & câu trả lời này như một ví dụ về cách "dễ dàng" có thể tạo ra các giải pháp của riêng mình khi sử dụng Nguồn mở, tôi đã cố gắng tạo mã của riêng mình để "nổ" các tính năng đa mục trong một phiên chỉnh sửa.

Tôi đã khám phá API QGIS 1.8 lần đầu tiên và đã đưa ra đoạn mã này để thực hiện công việc:

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)    

Tôi không phải là một lập trình viên có kinh nghiệm, vì vậy mã có thể không phải là mã hiệu quả nhất.

Dốc tiếp theo sẽ là tạo một plugin từ nó ... Hoặc ít nhất, hãy thử!

CẬP NHẬT:
Tôi đã có thể tạo plugin. Nó được gọi là Multipart Split , và có thể được tìm thấy trong kho chính thức của QGIS.


1
Có thể thực hiện chuyển đổi Multipart này -> Chuyển đổi một phần mà không có QGIS không? Có cách nào để thực hiện với Python độc lập không? @Alexandre Neto
Akhil

Lưu ý rằng giải pháp này dựa trên việc chọn một phần các tính năng của lớp trong khi chỉnh sửa trong khung vẽ bản đồ. Để chuyển đổi tất cả các tính năng của một lớp (giả sử shapefile) thành các tính năng một phần tôi nghĩ bạn có thể sử dụng thư viện OGR. Có một cái nhìn trong liên kết này .
Alexandre Neto

Chúc mừng! Giúp .. !!
Akhil

Tôi muốn lấy một lớp là một đa giác nhiều phần và chuyển đổi một phần duy nhất - tôi dường như không thể tìm thấy mã python để làm điều này trong qgis. Tôi thấy có một lệnh dưới vector - công cụ hình học - Multiparts to Singleparts. đây là những gì tôi muốn tôi chỉ cần cú pháp python
kflaw

@AlexandreNeto plugin tuyệt vời!
DPSSpatial
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.