Lagi

Pilih Data tidak akan berfungsi… Parameter tidak valid di ArcGIS ModelBuilder?


Saya membuat model di ArcGIS 10.3 ModelBuilder dan memiliki masalah untuk membuat alat data pilihan berfungsi. Pada awalnya model lengkap: IHS-Klassifizierung Dengan Pilih Data alat (Elemen Data Masukan: Raster, Elemen Data Anak: %layerband%_1) Saya memilih Band_1 atau Band_3 dari Rasterfile, untuk ini saya perlu memeriksanya Hitung Nilai jika Band disebut "Layer_x" atau "Band_x" (Dalam data raster saya ada nama yang berbeda dan saya tidak boleh mengubahnya), dengan kode berikut:

def x(Rasterfile): import arcpy # Saya rasa ini tidak perlu, tapi saya tidak yakin desc = arcpy.Describe(Rasterfile) # Dapatkan informasi yang diperlukan bandlayer = desc.children[0].name # pilih band pertama ergebnis = str(bandlayer.split("_",1)[0]) # Hapus _ dan nomor dari Nama kembali ergebnis

sebagai Ekspresi yang saya gunakanx("%Rasterfile%")dan String tipe tanggal.

Ketika saya menjalankan model pada data sampel saya (hanya satu file raster) saya mendapatkan kesalahan berikut:

Pelaksana: IHS-Klassifizierung W:arctest W:arctestoutput Waktu Mulai: Sel 03 Nov 16:39:06 2015 Pelaksana (Iterate Rasters): IterateRasters W:arctest # # NOT_RECURSIVE Waktu Mulai: Sel 03 Nov 16:39 :06 2015 Berhasil pada Sel 03 Nov 16:39:07 2015 (Waktu yang Berlalu: 0,52 detik) Eksekusi (Parse Path (2)): ParsePath W:arctestorthoclip.tif FILE Waktu Mulai: Sel 03 Nov 16: 39:07 2015 Berhasil pada Sel 03 Nov 16:39:07 2015 (Waktu yang Berlalu: 0,00 detik) Menjalankan (Menghitung Nilai): Hitung Nilai x("orthoclip.tif") "def x(Rasterfile):
 import arcpy desc = arcpy.Describe(Rasterfile) bandlayer = desc.children[0].name ergebnis = str(bandlayer.split("_",1)[0]) return ergebnis
" String Waktu Mulai: Sel 03 Nov 16: 39:07 2015 Nilai = Band Berhasil pada Sel 03 Nov 16:39:07 2015 (Waktu yang Berlalu: 0,04 detik) Eksekusi (Pilih Data): SelectData W:arctestorthoclip.tif Band_1 Waktu Mulai: Sel 03 Nov 16 :39:07 2015 **Gagal dijalankan. Parameter tidak valid.** **ERROR 000800: Nilai bukan anggota Band_1 | Band_2 | Band_3 | Band_4.** Gagal dijalankan (Pilih Data). Gagal mengeksekusi (IHS-Klassifizierung).

Jika saya mencobanya tanpa Alat Hitung Nilai dan masukkan ke dalam Pilih Data- Elemen Data Anak langsung Band_1 atau Band_3 berfungsi.

Kadang-kadang terjadi (saya tidak tahu mengapa dan saya tidak menghubungkannya ke penyihir perubahan yang saya buat) bahwa kesalahan berikut muncul:

Pelaksana: IHS-Klassifizierung W:arctest W:arctestoutput Waktu Mulai: Rab 04 Nov 13:23:47 2015 Pelaksana (Iterate Rasters): IterateRasters W:arctest # # NOT_RECURSIVE Waktu Mulai: Rabu 04 Nov 13:23 :47 2015 Berhasil pada Rab 04 Nov 13:23:47 2015 (Waktu yang Berlalu: 0,35 detik) Eksekusi (Parse Path (2)): ParsePath W:arctestorthoclip.tif FILE Waktu Mulai: Rabu, 04 Nov 13: 23:47 2015 Berhasil pada Rab 04 Nov 13:23:47 2015 (Waktu yang Berlalu: 0,00 detik) Pelaksana (Hitung Nilai): Hitung Nilai x("orthoclip.tif") "def x(Rasterfile):
 import arcpy 
 desc = arcpy.Describe(Rasterfile) 
 bandlayer = desc.children[0].name 
 ergebnis = bandlayer.split("_",1)[0] 
 return ergebnis
" String Waktu Mulai: Rabu 04 Nov 13:23:47 2015 ERROR 000539: Error running expression: x("orthoclip.tif") Traceback (panggilan terakhir terakhir): File "", baris 1, di  berkas "", baris 3, di x File "c:program files (x86)arcgisdesktop10.3arcpyarcpy\__init__.py", baris 1246, di Jelaskan kembali gp.describe(value) File "c: program files (x86)arcgisdesktop10.3arcpyarcpygeoprocessing\_base.py", baris 374, di deskripsikan self._gp.Describe(*gp_fixargs(args, True))) IOError: "orthoclip.tif" tidak ada Gagal mengeksekusi (Hitung Nilai) Gagal pada Rabu 04 Nov 13:23:48 2015 (Waktu yang telah berlalu: 0,28 detik) Gagal mengeksekusi (IHS-Klassifizierung) Gagal pada Rabu 04 Nov 13:23:48 2015 (Waktu yang Berlalu: 0,93 detik)

Saya menemukan solusi: Dalam hal ini bodoh menggunakan alat "Pilih Data", karena Anda dapat menggunakan langsung alat hitung nilai untuk mendapatkan jalur lengkap ke Band.

Kode python dari alat hitung nilai (ekspresi x(r"%Raster%"), DataType Raster Band):

def x(rasterimage): import arcpy desc = arcpy.Describe(rasterimage) bandlayer = desc.children[0].name ergebnis = bandlayer.split("_",1)[0] pfad = r"%Raster%\% s_1" % ergebnis mengembalikan pfad

Bekerja dengan baik sekarang.


Tonton videonya: Using Parameters in ModelBuilder (Oktober 2021).