Semua balasan saat ini memberikan saran yang bagus. Aturan umum (dari komunitas komputasi ilmiah) yang berfungsi dengan baik dalam kasus di mana Anda tidak dapat menyimpan nulls benar atau NaN menggunakan nilai terkecil (paling negatif) yang akan dipegang oleh bidang (secara sah).
Contoh:
Bidang 7,2 desimal dapat menampung nilai sekecil -9999,99.
Raster integer dapat menampung angka sekecil -32768, tetapi sering (karena keengganan terhadap biner dan afinitas untuk basis 10) nilai -9999 digunakan sebagai gantinya.
Float dapat menampung angka pada urutan -10 ^ (38). Jika Anda tidak dapat menempatkan NaN di lapangan, temukan float terkecil yang sesuai (yang menyakitkan) atau gunakan sesuatu seperti -10 ^ (38) itu sendiri. Untuk ganda, -10 ^ (303) berfungsi dengan baik, tetapi begitu juga -10 ^ (38): cukup besar dan negatif untuk berfungsi sebagai penanda yang jelas dari nilai nol.
Aturan ini mudah diingat, konsisten, mudah diterapkan, mudah didokumentasikan dengan cara boilerplate (untuk metadata Anda), dan jarang mengarah pada kesalahan yang tidak disengaja (karena angka paling negatif biasanya sangat berbeda dari data sehingga penyalahgunaannya sebagai nilai aktual, alih-alih sebagai nol, ringkasan statistik korup dan perhitungan lainnya cukup untuk menaikkan tanda bahwa ada masalah).
Sebagian besar raster yang saya temui menggunakan -9999.0 untuk data floating point sebagai konvensi, dan GDAL akan menggunakan -dbl_inf saat Anda menulis kode untuk gambar yang tidak memiliki nilai nodata / dummy. 8-bit RGB biasanya akan menggunakan 0 0 0 atau 255 255 255, atau memiliki saluran alpha atau mask.
Cakupan GML 3 (yang saat ini tidak banyak dukungan, tetapi itu akan berubah ketika spesifikasi WCS 2 disahkan) memiliki beberapa nilai dummy yang direpresentasikan sebagai teks seperti "hilang" dan "ditahan".
Saya pengalaman saya standar apa pun cenderung spesifik domain atau khusus vendor. Jika Anda adalah penghasil data dan bukan konsumen, pilih angka dan tetap padanya dan pastikan konsumen Anda menyadarinya.
sumber
Saya akan menggunakan NaN karena operasi matematika akan menghasilkan NaN lain atau melempar pengecualian. Dengan begitu Anda dapat mendeteksi dengan jelas bahwa Anda mengacau karena Anda menggunakan nilai palsu
sumber