Saya ingin membuat fungsi if / else sederhana di dalam Model saya dan saya ingin tahu apakah itu mungkin atau tidak.
Saya ingin hal ini dilakukan jika Input untuk 'Segmen Lapisan' dipilih yang tidak harus menjalankan 'Segmentasi (berarti pergeseran)' dan menggunakan 'Segmen Lapisan' sebagai input untuk Proses selanjutnya.
Input untuk 'Segmentasi (berarti pergeseran)' adalah sebagai berikut
Pembaruan setelah mencoba menerapkan jawaban Joseph: Saya menggunakan kode berikut dan mendapatkan kesalahan ini
Pembaruan 2, setelah mengganti parameter saya mendapatkan kesalahan di baris 28 ini adalah berdiri 'else:'
##Example=name
##BGREN=optional raster
##Segment_Layer=optional vector
##output=output vector
if BGREN is not None:
processing.runalg('otb:segmentationmeanshift', \
-BGREN\
-0\
-70\
-70\
-0.1\
-100\
-100\
-0\
-0\
-0\
-'True'\
-'False'\
-1\
-0.1\
-'Layer'\
-'DN'\
-1024\
-1\
-0\
-output)
else:
output=Segment_Layer
Perbarui itu berfungsi :) setelah beberapa kali mencoba dan dengan bantuan Joseph kode ini sekarang berfungsi seperti pesona, trik terakhirnya adalah mengganti dua nilai opsional dengan 'Tidak Ada'.
##Example=name
##BGREN=optional raster
##Segment_Layer=optional vector
##output=output vector
if BGREN is not None:
processing.runalg('otb:segmentationmeanshift', \
BGREN, \
0, \
70, \
70, \
0.1, \
100, \
100, \
0, \
0, \
None, \
True, \
False, \
1, \
0.1, \
'Layer', \
'DN', \
1024, \
1, \
None, \
output)
else:
output=Segment_Layer
Jawaban:
Seperti yang disebutkan dalam komentar saya, skrip khusus mungkin menjadi cara untuk masuk dalam situasi ini. Anda dapat membuatnya dari:
Script berikut menetapkan parameter input sebagai opsional bersama dengan pernyataan if / else tergantung pada parameter mana yang berisi layer. Jadi jika sebuah layer dipilih
BGREN
, ia akan melakukan alat segmentasi dan mengatur output; jika tidak, output akan menjadi lapisan yang dipilihSegment_Layer
.Berikut ini skrip yang mungkin:
Parameter untuk
otb:segmentationmeanshift
tampilan menakutkan! Sayangnya, saya tidak menginstal Orfeo sehingga tidak dapat menguji alat ini. Namun, parameternya ditampilkan di sini , Anda hanya perlu mengetikkannya daripada menggunakan GUI. Setelah selesai, tambahkan skrip ke pemodel Anda menggunakanBGREN
danSegment_Layer
sebagai lapisan input:Selain itu, dalam pemodel Anda, Anda mungkin perlu mengubah definisi parameter yang Diperlukan dari
BGREN
danSegment_Layer
:Kemudian hubungkan output skrip ke alat NDVI Anda.
Saya menguji ini sampai batas tertentu menggunakan alat-alat lain yang bekerja tergantung pada lapisan input mana yang dipilih jadi semoga akan bekerja untuk pemodel Anda!
EDIT:
Berikut adalah kode yang Anda gunakan sedikit dimodifikasi (Anda perlu koma untuk memisahkan parameter,
True
danFalse
pernyataan tidak memerlukan tanda kutip di sekitar mereka, garis miring hanya untuk keterbacaan tetapi akan memasukkannya sebagai satu-baris):Atau sebagai one-liner:
sumber