Saya memiliki spreadsheet Excel yang ada dikembangkan untuk melacak data hidran spesifik, ini diperbarui secara berkala dan bergabung dengan data hidran spasial di ArcGIS. Di spreadsheet ada sejumlah kolom untuk memasukkan data yang terkait dengan Tekanan Statis, Tekanan Sisa, dan Laju Alir.
Memanfaatkan Kapasitas Nilai pada 20 PSI dalam rumus Tes Aliran Api untuk menghitung aliran api, spreadsheet secara otomatis menghitung. Perhitungannya adalah sebagai berikut.
Fire Flow = Flow * ((Static - 20)/(Static - Residual))^0.54
Saya tidak yakin cara terbaik untuk menyerang ini dan saya sedang mencari saran. Berdasarkan hasil perhitungan, saya memiliki kolom tambahan dengan pernyataan IF yang menunjukkan warna aliran api yang sesuai dengan hydrant yang harus dicat. Bagi yang tidak tahu, warna hidran adalah indikator untuk memadamkan personil dalam keadaan darurat kondisi aliran api. Saya telah melakukan penelitian dan mengembangkan skrip python berikut:
def Reclass !Bon_Color!:
if ( !Fire_Flow! <= 0):
return Black
elif ( !Fire_Flow! >= 1 and !Fire_Flow! <= 499):
return Red
elif ([Fire_Flow] > 499 and [Fire_Flow] <= 999):
return Orange
elif ( !Fire_Flow! > 999 and !Fire_Flow! <= 1499):
return Green
elif ( !Fire_Flow! > 1499):
return Blue
end if
Saya ingin tahu apakah perhitungan yang disebutkan di atas, yang digunakan dalam lembar kerja Excel dapat direplikasi dalam tabel atribut database menggunakan kalkulator bidang dan pengurai python? Daripada mengandalkan spreadsheet Excel dan kebutuhan untuk bergabung kembali dengan data.
Jawaban:
Kode python Anda masuk akal tetapi memiliki beberapa kesalahan. Rekatkan ini ke kotak "Kode skrip pra-logika" di bidang kalkulator:
Kemudian pada kotak di bawahnya, tempel:
Lekukan di blok atas itu agak tidak biasa, tetapi jumlah lekukan yang tepat tidak masalah selama garis-garis tersebut diindentasi dengan benar relatif satu sama lain.
Kesalahan:
Saat Anda mendefinisikan suatu fungsi, Anda harus mengikutinya dengan daftar parameter yang digunakan fungsi untuk melakukan fungsinya. Daftarnya harus dalam tanda kurung. Dalam kasus Anda, Anda hanya menggunakan satu parameter input, nomor Fire_Flow Anda.
Anda akan masuk
!Fire_Flow!
ke dalam fungsi, begitu Anda berada di fungsi yang nilainya ditugaskan ke variabelfire_flow
, jadi rujuk ke variabel itu sebagai gantinya. Juga, Anda perlu memasukkanBlack
tanda kutip, sehingga string dikembalikan. Cara Anda memilikinya di sini, skrip Anda mencari variabel bernamaBlack
untuk kembali, dan tidak ada.Anda tidak perlu mengakhiri jika dengan Python.
Untuk bidang pertama Anda, angka aliran api, Anda harus memberi nama bidang Anda dengan tepat dan operator untuk eksponen dalam Python adalah
**
, bukan^
.paste ini ke kotak bawah di kalkulator bidang:Jika Anda perlu memperbarui lebih dari satu bidang secara bersamaan, saya setuju dengan MacroZED bahwa kursor pembaruan adalah cara yang lebih baik, tetapi itu bisa sedikit membingungkan jika Anda baru menggunakan Python.
sumber
Ini bisa dilakukan di ArcGIS tanpa harus di excel. Jika bidang ini (Tekanan Statis, Tekanan Sisa, dan Laju Alir) sudah ada dalam dataset, maka kita bisa menggunakan kursor berikut untuk menambahkan bidang baru dan memperbaruinya:
sumber