Menggabungkan garis dengan titik akhir yang sedikit berbeda di QGIS

22

Di QGIS, saya punya dua baris. Titik akhir dekat satu sama lain, tetapi tidak cukup selaras. Saya ingin mengubah dua garis menjadi satu, dengan dua titik akhir digabungkan menjadi titik tengah.

Yang paling dekat yang saya dapat datang adalah dengan "Gabungkan fitur yang dipilih." Itu memberi saya satu fitur, tetapi terdiri dari dua garis terputus-putus - tidak ada garis di antara titik akhir.

Saya mencari sesuatu yang berperilaku mirip dengan fitur Join Paths Illustrator (Object> Paths> Join).

Apakah QGIS melakukan itu?

Evan
sumber

Jawaban:

12

Jawaban cepat: tidak! Tidak ada alat seperti itu untuk melakukan operasi itu secara langsung pada layer ("Gabung Dua Baris" plugin membutuhkan persimpangan).

Anda bisa melakukannya untuk layer yang sangat sederhana dengan memutar baris ke titik (ekstrak node) kemudian bergabung dengan points2one (output baris) tetapi ini akan jauh lebih lambat daripada hanya mengedit dengan tangan:

  1. Pastikan Anda telah memotret (Pengaturan | Opsi gertakan ...) dihidupkan untuk lapisan garis Anda (5 piksel berfungsi baik untuk saya).
  2. Buat garis baru dari satu titik akhir ke titik lainnya.
  3. Pilih ketiga garis (dua garis asli + yang baru) dan gabungkan (Edit | Gabungkan fitur yang dipilih atau tombol bilah alat).
Simbamangu
sumber
1
Terima kasih. Saya hanya memiliki beberapa baris untuk digabung, jadi ini cepat & mudah. (Jawaban @Michael Markieta tampaknya lebih cocok untuk situasi yang kompleks.)
Evan
14

Anda dapat melakukannya dengan kombinasi QGIS dan GRASS.

  1. Impor layer vektor Anda ke mapset GRASS (Rumput | File> Impor Data Vektor)
  2. Buka mapset Anda di QGIS (QGIS | Plugins> GRASS> Open mapset)
  3. Tambahkan layer vektor dari GRASS mapset Anda ke proyek QGIS Anda (QGIS | Plugins> GRASS> Tambahkan layer vektor GRASS)
  4. Gunakan v.clean.snap (QGIS | Plugins> GRASS> Buka GRASS tools> Daftar Modul> v.clean.snap)

Sesuaikan 'ambang batas' v.clean.snap untuk mencapai titik simpul yang benar di seluruh area studi.

Michael Markieta
sumber
10

Saya menganggap Anda ingin bergabung dengan dua segmen garis menjadi satu baris. masukkan deskripsi gambar di sini

Ini adalah bagaimana saya melakukannya ...

  • Aktifkan pengeditan.
  • Aktifkan gertakan (Pengaturan -> Pilihan Gertakan ...) masukkan deskripsi gambar di sini
  • Pilih alat simpul simpul.masukkan deskripsi gambar di sini
  • Klik dua kali di dekat ujung salah satu baris untuk menambahkan simpul. masukkan deskripsi gambar di sini
  • Seret simpul di ujung untuk masuk ke ujung garis lainnya masukkan deskripsi gambar di sini
  • Pilih kedua garis
  • Gabungkan atribut mereka (Anda tidak dapat membuat satu baris jika mereka memiliki atribut yang berbeda)masukkan deskripsi gambar di sini
  • Gabungkan kedua fitur tersebutmasukkan deskripsi gambar di sini

Ini harus menghasilkan satu baris. masukkan deskripsi gambar di sini

DickShinnery
sumber
Semua baik-baik saja Tapi bagaimana dengan set data 22.000 baris? Saya tidak bisa melakukan ini secara manual ...
FaCoffee
3

Jika Anda bermaksud bahwa fitur tunggal Anda terdiri dari MULTILINESTRING dan bukan LINESTRING tunggal maka Anda dapat dengan mudah memperbaikinya jika Anda menggunakan database Postgis:

update your_table set your_geo_column = ST_LineMerge(your_geo_column);

Jika Anda hanya ingin 1 baris melakukan ini, Anda harus menambahkan WHERE id = your_row_id tentu saja.

mrg
sumber
2

Seseorang juga dapat mencoba:

  1. simpan .shp sebagai .dxf
  2. buka .dxf dengan DraftSight
  3. bergabung dengan bagian polyline
  4. buka kembali .dxf dengan qgis dan simpan sebagai .shp
  5. dari menu Vektor -> Alat Geometri -> Garis ke poligon
chamin
sumber
2

Saya baru saja melakukan ini dengan QGIS 3.4.0, menggunakan plugin Join Multiple Lines yang disebutkan oleh tnagel di atas (menginstal di bawah menu Vector> Join Multiple Lines). Bekerja dengan baik untuk menggabungkan sekitar 60 fragmen garis jejak menjadi sekitar 20 garis jejak. Semakin banyak fragmen yang Anda miliki dan semakin besar area yang dicakupnya, semakin tidak praktis hal ini, karena Anda harus melihat hasilnya untuk masalah (tnagel mungkin memiliki salah satu masalah yang saya uraikan).

Anda memilih garis yang ingin Anda gabungkan, klik item menu dan bergabung dengan mereka (Anda dapat memilih sebanyak mungkin garis yang Anda inginkan, tetapi ...), bahkan jika ujungnya terpisah satu mil, Anda mendapatkan garis lurus dari ujung satu ke ujung yang lain menghubungkan mereka, jadi pastikan ujung Anda cukup dekat sehingga Anda akan senang dengan hasilnya (saya menggunakan ujung di pos lain untuk menandai ujung garis saya dengan spidol, sehingga mereka mudah untuk melihat (Properties> Symbology> menambahkan garis penanda dan membuat simbol cukup besar untuk melihat dengan mudah> pilih tombol radio "pada titik terakhir saja" (dan jika Anda mau, tambahkan garis penanda lain dengan simbol yang berbeda dan pilih "pada pertama hanya vertex ")).

Juga, garis-garis tampaknya dapat terarah. Jadi, Anda harus memperhatikan (misalnya) bahwa ujung paling selatan dari garis A tidak bergabung dengan ujung paling selatan dari garis B di bawahnya (garis lurus panjang lain di mana Anda tidak menginginkannya).

Saya menemukan ketika itu terjadi saya bisa "membatalkan" dan menggunakan "garis Mundur" di Advanced Processing Toolbar untuk membalik arah garis dari satu ujung ke ujung lainnya (tidak mengubah di mana garis itu, hanya membalik awal dari garis dengan akhir baris), lalu gabungkan baris lagi.

Hal yang baik tentang hal ini adalah perubahan / pengeditan Anda disimpan ke lapisan yang ada sehingga tidak perlu menyimpan hasilnya sebagai shapefile baru (buat cadangan terlebih dahulu).

Saya selalu kagum dengan pekerjaan yang dilakukan oleh pengembang inti dan plugin QGIS. Menunjukkan apa yang bisa dilakukan manusia konstruktif yang cerdas ketika mereka memutuskan untuk bekerja sama. Terima kasih!

JJD
sumber
0

Menggunakan OpenJUMP (edisi Plus):

  1. File> Buka file
  2. Plugin> Topologi> Pembersihan topologi jaringan ...
  3. Klik kanan pada layer baru (tetap): Simpan dataset sebagai ....

Ini hasilnya: masukkan deskripsi gambar di sini

Fabiog
sumber
0

Dalam kasus saya, garis-garis berada di lapisan yang berbeda dan dengan atribut yang berbeda. Saya menggabungkan lapisan dengan mmqgis dan kemudian menggabungkan garis pada langkah berikutnya dengan teknik mematahkan dan menggabungkan garis.

Herr Eichert
sumber