Saya punya banyak objek garis. Beberapa dari mereka lebih kecil dari beberapa kriteria.
Saya ingin menggabungkan semua garis atau segmen garis yang lebih kecil yang lebih kecil daripada 1 meter
garis yang lebih besar, menjaga atribut garis yang lebih besar.
Ada saran?
Saya mencoba menggunakan Tester pertama untuk memeriksa panjang objek garis (jika lebih kecil dari 1 m), dan dari output yang lewat pergi ke LineJoiner. Tetapi sebenarnya tidak ada yang terjadi, dan garis-garis yang berasal dari port keluaran LineJoiner tidak memiliki atribut sebagai garis sebelumnya (sebagaimana seharusnya). Mungkin saya terlalu rumit, tapi saya pikir ini akan menjadi tugas yang mudah.
Jawaban:
Anda dapat menggunakan
LineJoiner
transformator dengan parameterList Name
. Tetapi Anda perlu melakukan beberapa pemrosesan data tambahan:LengthCalculator
untuk menghitung panjang.Sorter
untuk mengurutkan garis Anda berdasarkan panjang (pengurutan numerik, turun).LineJoiner
untuk bergabung dengan garis. Yang terbesar lebih dulu (terima kasih ke langkah 2). Tentukan parameterList Name
dariLineJoiner
- beberapa nama untuk atribut daftar baru.ListIndexer
dengan indeks daftar 0 - untuk mendapatkan fitur bergabung pertama (yang terbesar) atribut dari daftar.Berikut ini tampilannya:
EDIT1:
Agar hanya dapat bergabung dengan fitur <1m ke yang lebih besar, kita juga perlu menggunakan:
Tester
transformator setelah LengthCalculator dengan tes:_length < 1
SpatialFilter
(tes untuk melakukan parameterTOUCHES
:) setelah Tester untuk memfilter hanya fitur yang menyentuh fitur <1m. Kemudian lakukan sambungan garis pada mereka bersama-sama dengan fitur <1m. Fitur yang tidak menyentuh <1m, langsung ke keluaran (atau pemrosesan lebih lanjut).Model:
EDIT2:
Jika Anda memiliki garis <1m yang menyentuh dua garis besar maka mereka semua akan bergabung bersama. Jika case seperti itu (<1m fitur menyentuh dua atau lebih besar) adalah mungkin dalam data Anda maka Anda harus menambahkan beberapa pemrosesan case seperti itu. Lihatlah parameter
Merge Attributes
danAttribute Prefix
transformatorSpatialFilter
. Dengan menggunakan parameter ini Anda harus dapat mendeteksi kasus-kasus seperti itu dan kemudian melakukan beberapa penyaringan tambahan.EDIT3:
Mari kita selesaikan kasus ini ketika Anda memiliki dua garis besar yang menyentuh satu kecil (<1m). Kita hanya perlu mengambil satu dari garis besar untuk berpartisipasi dalam bergabung dengan yang kecil.
Untuk dapat melakukan penyaringan seperti itu, kita harus menandai dua fitur besar ini dengan beberapa id dari yang kecil yang mereka sentuh. Sebagaimana dinyatakan dalam EDIT2, itu dapat dilakukan dalam
SpatialFilter
transformator menggunakan parameterMerge Attributes
danAttribute Prefix
.Kemudian gunakan transformator
DuplicateRemover
untuk memfilter fitur duplikat tersebut (dua besar) dan hanya mengambil satu saja.Petunjuk: coba gunakan
Inspector
transformator selama membuat model Anda dan lihat hasil antara dalam hal apa pun yang tidak jelas bagi Anda. Sedemikian rupa Anda akan lebih memahami bagaimana masing-masing transformer bekerja. Eksperimen dengan data Anda! :)sumber
Sorter
kami memberlakukan fitur dengan panjang lebih duluLineJoiner
dan kemudian atributnya akan dengan indeks "0" di daftar (lihat parameterList Name
) dan kemudian kita bisa memindahkannya ke atribut utama fitur (ListIndexer
). Kalau tidak, Anda dapat memperoleh hasil di mana atribut fitur kecil akan "mendominasi". Anda dapat melihat tidak ada perbedaan jika fitur besar duluan, tetapi saya tidak akan mengaitkannya.