Tách tất cả các dòng trong lớp tại các đỉnh bằng cách sử dụng QGIS?


11

Tôi muốn tự động phân chia tất cả các dòng trong một lớp QGIS tại các đỉnh của chúng ( như thế này ).

Tôi đã thực hiện một tìm kiếm google và tìm thấy bài viết này , khá gần nhưng quy trình làm việc rất phức tạp. Bởi vì tôi sẽ phải đào tạo cho các đồng nghiệp của mình (những người không quen thuộc với GIS) sử dụng công cụ này, tôi muốn một cái gì đó đơn giản như một plugin hoặc thứ gì đó không yêu cầu GRASS. Vì đã lâu rồi kể từ năm 2010 - thời điểm của câu trả lời trước đó , tôi tự hỏi liệu có cách nào tốt hơn để đạt được kết quả tương tự không?


Bạn có thể sử dụng các công cụ GRASS từ QGIS ngay hôm nay.Maybe Vector-> Geometry Tools-> Các bộ phận đơn lẻ để đa mục có thể giúp ích. Hộp công cụ Sextante phải có "Lớp dòng nổ" Và có plugin "tính năng phân tách"
Simplexio 20/03/13

Tôi nghĩ rằng câu trả lời bạn đề cập là (vẫn) đúng quy trình. Công cụ vector "Single Part to Multipart" sẽ không làm những gì bạn muốn. Nó phân tách một đa dòng tại các nút , không phải ở mỗi đỉnh.
Micha

@simplexio: với hộp công cụ Sextante, tôi đã nhận được thông báo lỗi như trong câu trả lời của Bernd V. và tôi không thể tìm thấy plugin 'tính năng chia nhỏ' ở bất cứ đâu trên mạng.
Cao Minh Từ

@Micha: quy trình đó có thể đúng nhưng sẽ quá phức tạp đối với đồng nghiệp của tôi - những người không quen thuộc với GIS, vì vậy tôi sẽ coi đó là biện pháp cuối cùng, khi tất cả đều thất bại :)
Cao Minh Tu

@Cao Minh Tu: tôi đã thử nghiệm 'Tính năng phân tách' một lần nữa trên Linux Master và trên Win7 1.8 với một lớp dòng mới được tạo và nó hoạt động. Vui lòng tạo một lớp thử nghiệm từ đầu và áp dụng nó ở đó. Có lẽ có lỗi trong các lớp ban đầu của bạn phải được giải quyết trước tiên!?
Bernd V.

Câu trả lời:


17

Phát nổ các dòng từ Hộp công cụ xử lý sẽ phân chia tất cả các dòng ở các đỉnh của chúng thành các dòng riêng biệt.

Xử lý menu -> Hộp công cụ. Nhập "nổ" vào trường tìm kiếm để tìm hàm. Chọn lớp dòng của bạn từ danh sách thả xuống và bắt đầu. Điều này sẽ tạo ra một lớp mới.

Chọn một hoặc nhiều dòng từ lớp dòng sẽ tạo ra một lớp bị tách chỉ có các tính năng này, loại bỏ phần còn lại.

Lưu ý: Vì QGIS đang di chuyển nhanh, tất cả các thông tin dưới đây đã lỗi thời.

Tôi nghĩ rằng các dòng Explode sẽ là giải pháp noob thông qua hộp công cụ SEXTANTE . QGIS Geoalgorithms > Vector geometry tools > Explode lines. Thật không may, nó dường như không hoạt động vào lúc này, tôi chỉ nhận được một thông báo lỗi.

Traceback (most recent call last):
  File "path/.qgis//python/plugins\sextante\core\GeoAlgorithm.py", line 145, in execute
    self.processAlgorithm(progress)
  File "path/.qgis//python/plugins\sextante\algs\Explode.py", line 58, in processAlgorithm
    features = QGisLayers.features(layer)
NameError: global name 'layer' is not defined

Một giải pháp hoạt động là Split Feature-Plugin từ kho "đóng góp", công việc này giúp tôi.

Nói chung, tôi thích các chức năng sextante hơn các plugin riêng biệt, vì quy trình làm việc với sextante nhanh hơn rất nhiều và không tạo ra các tập tin rác của các bước trung gian (miễn là nó hoạt động).

EDIT: Thật không may, rất nhiều plugin chưa được chuyển đến kho plugin chính thức, nhưng vẫn chỉ có sẵn thông qua kho plugin "đóng góp": http://pyqgis.org/repo/contribution , đã bị xóa khỏi kho lưu trữ mặc định danh sách với phiên bản 1.8.

Ở đó, bạn có thể tải xuống riêng lẻ và giải nén chúng trong thư mục .qgis / python / plugin HOẶC bạn thêm địa chỉ này vào danh sách kho lưu trữ bổ trợ của mình: Plugins -> Fetch python plugins -> Tab "Repositories" -> Add ... -> enter a name and the url.


Bạn có thể cho tôi biết nơi tìm plugin 'Tính năng phân chia' - Tôi không thể tìm thấy nó trong kho plugin chính thức? Với các dòng Phát nổ SEXTANTE, tôi đã nhận được thông báo lỗi tương tự như của bạn - có một báo cáo lỗi ở đây: hub.qgis.org/issues/7157
Cao Minh Tu

@Cao Minh Tu: xin lỗi, hoàn toàn quên rằng tôi đã thêm kho lưu trữ cũ vào danh sách của mình, nơi plugin này nằm độc quyền. xem các chỉnh sửa của tôi.
Bernd V.

Tôi đã thử plugin Split Feature, không có thông báo lỗi nhưng lớp đầu ra không chứa gì.
Cao Minh Từ

Chỉ có một lỗi 404 tại pyqgis.org/repo/contribution - URL đã thay đổi chưa?
til_b

@til_be xem bản chỉnh sửa của tôi
Bernd V.

4
  1. Mở / Tạo bộ bản đồ GRASS (để bạn có thể chạy các công cụ trên dữ liệu của mình)
  2. Mở công cụ GRASS / Nhập shapefile bạn muốn tách vào cơ sở dữ liệu GRASS
  3. Chạy v.split.vert (đặt số đỉnh tối đa = 2)

Giải pháp này giữ các giá trị z trong hình học phân khúc
Tamas Kosa

1
    segment_list = []
    for feature in feature_list:
        vertices = feature.geometry().asPolyline() # returns list of vertices comprising polyline
        for point in range(len(vertices)-1):
            segment = QgsFeature()
            segment.setGeometry(QgsGeometry.fromPolyline([vertices[point], vertices [point+1]]))
            segment.setAttributes(feature.attributes())
            segment_list.append(segment)
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.