Saya telah mencoba untuk memeriksa filter saya pada DEM raster untuk pengenalan pola dan selalu menghasilkan baris dan kolom terakhir yang hilang (seperti..20) . Saya sudah mencoba dengan PIL library, memuat gambar. Lalu dengan numpy. Outputnya sama.
Saya pikir, ada yang salah dengan loop saya, ketika memeriksa nilai dalam array (hanya memilih piksel dengan Identifikasi di ArcCatalog) saya menyadari bahwa nilai piksel tidak dimuat ke dalam array.
Jadi, cukup buka, masukkan ke dalam array dan simpan gambar dari array:
a=numpy.array(Image.open(inraster)) #raster is .tif Float32, size 561x253
newIm=Image.new(Im.mode, Im.size)
Image.fromarray(a).save(outraster)
Hasil dalam memotong baris dan kolom terakhir. Maaf, tidak dapat memposting gambar
Adakah yang bisa membantu untuk memahami mengapa? Dan menyarankan beberapa solusi?
EDIT:
Jadi, saya berhasil memuat raster kecil ke array numpy dengan bantuan teman-teman, tetapi ketika memiliki gambar yang lebih besar saya mulai mendapatkan kesalahan. Saya kira ini tentang batas array numpy, dan array secara otomatis dibentuk ulang atau bertaut seperti itu ... Jadi ex:
Traceback (most recent call last):
File "<pyshell#36>", line 1, in <module>
ima=numpy.array(inDs.GetRasterBand(1).ReadAsArray())
File "C:\Python25\lib\site-packages\osgeo\gdal.py", line 835, in ReadAsArray
buf_xsize, buf_ysize, buf_obj )
File "C:\Python25\lib\site-packages\osgeo\gdal_array.py", line 140, in BandReadAsArray
ar = numpy.reshape(ar, [buf_ysize,buf_xsize])
File "C:\Python25\lib\site-packages\numpy\core\fromnumeric.py", line 108, in reshape
return reshape(newshape, order=order)
ValueError: total size of new array must be unchanged
Intinya adalah saya tidak ingin membaca blok demi blok karena saya perlu penyaringan, beberapa kali dengan filter berbeda, ukuran berbeda .. Apakah ada pekerjaan di sekitar atau saya harus belajar rading dengan blok: O
Anda dapat menggunakan rasterio untuk berinteraksi dengan array NumPy. Untuk membaca raster ke array:
Ini akan membaca semuanya menjadi array numpy 3D
arr
, dengan dimensi[band, row, col]
.Berikut adalah contoh lanjutan untuk membaca, mengedit piksel, lalu menyimpannya kembali ke raster:
Raster akan ditulis dan ditutup pada akhir pernyataan "dengan" .
sumber
arr.transpose((1, 2, 0))
mendapatkan (tinggi, lebar, pita) dari setiap file.np.append()
?Memang saya membaca gambar png tua biasa, tetapi ini bekerja menggunakan scipy (
imsave
menggunakan PIL):Png saya yang dihasilkan juga 81 x 90 piksel.
sumber
scipy
dannumpy
.Solusi saya menggunakan gdal terlihat seperti ini. Saya pikir ini sangat dapat digunakan kembali.
sumber
saya menggunakan gambar hyperspectral dengan 158 band. Saya ingin menghitung raster. tapi saya mengerti
untuk
print(data1)
saya hanya mendapat beberapa "1", tetapi nilai sebenarnya adalah beberapa mengapungTolong bantu untuk menemukan kesalahan
sumber