Memisahkan semua garis dalam lapisan pada simpul menggunakan QGIS?

11

Saya ingin membagi semua garis secara otomatis dalam lapisan QGIS pada simpulnya ( seperti ini ).

Saya telah melakukan pencarian google dan menemukan artikel ini , yang cukup dekat tetapi alur kerjanya rumit. Karena saya harus melatih rekan kerja saya (yang tidak terbiasa dengan SIG) untuk menggunakan alat ini, saya ingin sesuatu yang sederhana seperti plugin atau sesuatu yang tidak memerlukan GRASS. Karena sudah lama sejak 2010 - waktu jawaban sebelumnya , saya ingin tahu apakah ada cara yang lebih baik untuk mencapai hasil yang sama?

Cao Minh Tu
sumber
Anda dapat menggunakan alat GRASS dari QGIS hari ini. Mungkin Vector-> Alat Geometri-> Bagian tunggal untuk multipart dapat membantu. Toolbox Sextante harus memiliki "Explode line layer" Dan ada plugin "fitur split"
simplexio
Saya pikir jawaban yang Anda maksudkan adalah (masih) prosedur yang benar. Alat vektor "Single Part to Multipart" tidak akan melakukan apa yang Anda inginkan. Membagi multi-linestring pada node , bukan pada setiap vertex.
Micha
@simplexio: dengan Sextante toolbox, saya menerima pesan kesalahan seperti pada Bernd V. jawab dan saya tidak dapat menemukan plugin 'fitur split' di mana saja di internet.
Cao Minh Tu
@Micha: prosedur itu mungkin benar tetapi akan terlalu rumit untuk rekan kerja saya - yang tidak terbiasa dengan GIS, jadi saya akan menganggapnya sebagai upaya terakhir, ketika semuanya gagal :)
Cao Minh Tu
@Cao Minh Tu: saya menguji 'fitur Split' lagi di Linux Master dan pada Win7 1.8 dengan lapisan baris yang baru dibuat, dan itu berfungsi. Harap buat lapisan uji dari awal dan terapkan di sana. Mungkin ada kesalahan di lapisan asli Anda yang harus diselesaikan dulu !?
Bernd V.

Jawaban:

17

Meledakkan garis dari Toolbox Pemrosesan akan membagi semua garis pada simpulnya menjadi garis yang terpisah.

Pemrosesan Menu -> Toolbox. Ketik "meledak" ke dalam bidang pencarian untuk menemukan fungsi. Pilih layer garis Anda dari dropdown dan mulai. Ini akan menghasilkan layer baru.

Memilih satu atau lebih garis dari lapisan garis akan menghasilkan lapisan yang terpecah hanya dengan fitur-fitur ini, membuang sisanya.

Catatan: Karena QGIS bergerak cepat, semua info di bawah sudah usang.

Saya pikir garis Explode akan menjadi solusi noob melalui toolbox SEXTANTE . QGIS Geoalgorithms > Vector geometry tools > Explode lines. Sayangnya, sepertinya tidak berfungsi saat ini, saya mendapatkan pesan kesalahan saja.

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

Solusi yang berfungsi adalah Split Feature-Plugin dari repositori "kontribusi", yang berfungsi untuk saya.

Secara umum saya lebih suka fungsi sextante daripada plugin terpisah, karena alur kerja dengan sextante jauh lebih cepat dan tidak menghasilkan file sampah dari langkah menengah (asalkan berfungsi).

EDIT: Sayangnya, banyak plugin yang belum dipindahkan ke repositori plugin resmi, tetapi masih hanya tersedia melalui repositori plugin "kontribusi": http://pyqgis.org/repo/contributed , yang telah dihapus dari repositori default daftar dengan versi 1.8.

Di sana Anda dapat mengunduhnya secara terpisah dan unzip di folder .qgis / python / plugins ATAU Anda menambahkan alamat ini ke daftar repositori plugin Anda: Plugins -> Fetch python plugins -> Tab "Repositories" -> Add ... -> enter a name and the url.

Bernd V.
sumber
Dapatkah Anda memberi tahu saya di mana menemukan 'Split Feature' plugin - Saya tidak dapat menemukannya di repositori plugin resmi? Dengan baris SEXTANTE Explode, saya menerima pesan kesalahan yang sama dengan Anda - ada laporan bug di sini: hub.qgis.org/issues/7157
Cao Minh Tu
@Cao Minh Tu: maaf, benar-benar lupa bahwa saya menambahkan repositori lama ke daftar saya, tempat plugin ini berada secara eksklusif. lihat hasil edit saya.
Bernd V.
Saya mencoba plugin Split Feature, tidak ada pesan kesalahan tetapi lapisan output tidak mengandung apa pun.
Cao Minh Tu
Hanya ada kesalahan 404 di pyqgis.org/repo/contributed - sudahkah URL diubah?
til_b
@til_be lihat hasil edit saya
Bernd V.
4
  1. Buka / Buat GRASS mapset (sehingga Anda dapat menjalankan alat pada data Anda)
  2. Buka alat GRASS / Impor shapefile yang ingin Anda bagi menjadi basis data GRASS
  3. Jalankan v.split.vert (atur jumlah simpul maksimum = 2)
pengguna32879
sumber
Solusi ini menjaga nilai z dalam geometri segmen
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)
Steve
sumber