Próbowałem sprawdzić filtry w rastrze DEM pod kątem rozpoznawania wzorców i zawsze powoduje to brak ostatnich wierszy i kolumn (np ...20) . Próbowałem z biblioteką PIL, ładowanie obrazu. Następnie z numpy. Dane wyjściowe są takie same.
Myślałem, że coś jest nie tak z moimi pętlami, podczas sprawdzania wartości w tablicy (tylko wybieranie pikseli z Identyfikacja w ArcCatalog) zdałem sobie sprawę, że wartości pikseli nie zostały załadowane do tablicy.
Wystarczy po prostu otworzyć, włożyć do tablicy i zapisać obraz z tablicy:
a=numpy.array(Image.open(inraster)) #raster is .tif Float32, size 561x253
newIm=Image.new(Im.mode, Im.size)
Image.fromarray(a).save(outraster)
Powoduje odcięcie ostatnich wierszy i kolumn. Przepraszamy, nie można opublikować obrazu
Ktoś może pomóc zrozumieć, dlaczego? I doradzić jakieś rozwiązanie?
EDYTOWAĆ:
Tak więc udało mi się załadować małe rastry do tablicy numpy z pomocą facetów, ale kiedy mam większy obraz, zaczynam dostawać błędy. Przypuszczam, że dotyczy limitów tablicy numpy, więc tablica jest automatycznie przekształcana lub tak dalej ... Więc np .:
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
Chodzi o to, że nie chcę czytać blok po bloku, ponieważ potrzebuję filtrowania, kilka razy z różnymi filtrami, różnymi rozmiarami .. Czy jest jakieś obejście lub muszę nauczyć się radowania według bloków: O