Ich habe versucht, meine Filter im DEM-Raster auf Mustererkennung zu überprüfen. Dabei fehlen immer die letzten Zeilen und Spalten (wie z . B. 20) . Ich habe mit PIL-Bibliothek versucht, Bilder zu laden. Dann mit Numpy. Die Ausgabe ist die gleiche.
Ich dachte, mit meinen Schleifen stimmt etwas nicht, als ich die Werte im Array überprüfte (indem ich nur die Pixel mit "Identifikation" in ArcCatalog auswählte), stellte ich fest, dass die Pixelwerte nicht in ein Array geladen wurden.
Öffnen Sie einfach das Array und speichern Sie das Bild aus dem 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)
Entfernt die letzten Zeilen und Spalten. Das Bild kann leider nicht # gepostet werden
Kann jemand helfen zu verstehen, warum? Und eine Lösung empfehlen?
BEARBEITEN:
Ich habe es also geschafft, mit Hilfe von Leuten kleine Raster in Numpy-Arrays zu laden, aber wenn ich ein größeres Bild habe, bekomme ich Fehler. Ich nehme an, es geht um die Grenzen des Numpy-Arrays, und so wird das Array automatisch umgeformt oder ähnliches ... Also Bsp .:
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
Der Punkt ist, dass ich Block für Block nicht lesen möchte, da ich mehrmals mit verschiedenen Filtern und verschiedenen Größen filtern muss
Mit rasterio können Sie eine Schnittstelle zu NumPy-Arrays herstellen. So lesen Sie ein Raster in ein Array:
Dadurch wird alles in ein 3D-Zahlenfeld
arr
mit Abmessungen eingelesen[band, row, col]
.Hier ist ein erweitertes Beispiel zum Lesen, Bearbeiten und Speichern eines Pixels im Raster:
Das Raster wird am Ende der "with" -Anweisung geschrieben und geschlossen .
quelle
arr.transpose((1, 2, 0))
Sie (Höhe, Breite, Bänder) aus jeder Datei abrufen.np.append()
?Zugegeben, ich lese ein einfaches altes PNG-Bild, aber das funktioniert mit scipy (
imsave
verwendet jedoch PIL):Meine resultierende PNG ist auch 81 x 90 Pixel.
quelle
scipy
undnumpy
.Meine Lösung mit gdal sieht so aus. Ich denke, dass es sehr wiederverwendbar ist.
quelle
Ich verwende ein hyperspektrales Bild mit 158 Bändern. Ich möchte das Raster berechnen. aber ich verstehe
Für die habe
print(data1)
ich nur eine "1", aber die realen Werte sind einige SchwimmerPLZ helfen, den Fehler zu finden
quelle