Mendapatkan ruas garis, disilangkan dengan yang lain dengan ekspresi QGIS
Saya memiliki dua layer baris di QGIS 3.16: baris 1 (biru), baris 2 (merah). Titik putih adalah simpul (simpul) dari dua garis. Mereka tidak memiliki simpul yang sama, tidak terhubung. Bagaimana saya bisa mendapatkan segmen dari baris 1 yang disilangkan oleh baris 2 menggunakan ekspresi QGIS? Saya ingin membuat garis demi generator geometri dari segmen kuning yang disorot (lihat tangkapan layar).

Saya mencoba ini sebagai lapisan simbol yang dihasilkan geometri pada baris 1: Saya pertama kali menyegmentasikan baris 1 untuk mendapatkan segmen, lalu saya menyilangkannya dengan garis_2 pada lapisan lainnya. Saya mendapatkan keluaran boolean (true / false) dan saya juga dapat membuat titik persimpangan di mana dua garis berpotongan. Namun, saya mencoba dengan sia-sia untuk menyikapi langsung ruas yang dilintasi.
crosses (
segments_to_lines (
$geometry),
geometry (
get_feature(
'line_2',
'fid',
1
)
)
)
Dalam kasus sederhana ini, saya bisa mendapatkan segmen dengan ekspresi (itulah bagaimana saya dihasilkan garis kuning): geometry_n (segments_to_lines ( $geometry), 3)
. Namun, saya harus mengatur nomor segmen (3 dalam kasus ini) secara manual, tetapi saya ingin membuat nomor ini secara otomatis karena saya memiliki banyak kasus berbeda dan tidak dapat melakukannya secara manual. Bagaimana ini bisa dilakukan?
Untuk latar belakang pertanyaan ini, lihat: Menemukan kembali titik secara acak pada jarak tertentu di QGIS (Langkah 5)
Jawaban
Jika tidak wajib untuk menyebarkan ekspresi QGIS maka Anda dapat mencoba alur kerja berikut ini
Langkah 1. Terapkan "garis ledakan" untuk lapisan'Line 1'
Langkah 2. Gunakan geoalgoritma "Geometri menurut ekspresi" , di mana hasil dari Langkah 1 melintasi fitur dari lapisan 'Line 2'
. Anda juga dapat menggunakan "Persimpangan" dasar .