2016-09-25 3 views
0

Ich habe derzeit Probleme, ein Raster in ein Array zu konvertieren. Letztendlich möchte ich ein Raster von einem Integer in ein float32 umwandeln, so dass ich ein gdal_calc ausführen kann, aber ich konnte den Typ nicht richtig ändern, um dies zu tun.Ich habe Probleme beim Umwandeln eines Rasters in ein Array

SO würde ich jede Hilfe schätzen, die jemand zur Verfügung stellen könnte. Hier ist mein Skript, sehr kurz.

import gdal 
import numpy as np 
import math 
import osgeo 
import os 
import scipy 


# Open Rasters 

hvRaster = gdal.Open("C:\\Users\\moses\\Desktop\\Calc_Test\\IMG-HV-ALOS2110871010-160611-HBQR1.5RUA.img") 
vhRaster = gdal.Open("C:\\Users\\moses\\Desktop\\Calc_Test\\IMG-VH-ALOS2110871010-160611-HBQR1.5RUA.img") 


# Get Raster Band 

hvRasterBand = hvRaster.GetRasterBand(1) 
vhRasterBand = vhRaster.GetRasterBand(1) 

# Convert Raster to Array 

hvArray = np.array(hvRaster.GetRasterBand(1).ReadAsArray()) 
vhArray = np.array(vhRaster.GetRasterBand(1).ReadAsArray()) 

print hvArray 
print vhArray 

Vielen Dank im Voraus,

Moses

Antwort

2

Verfahren ReadAsArray() eine numpy.ndarray mit einem dtype der Raster-Dataset erstellen wird. Ihr Ziel ist es, einen ganzzahligen dtype in einen float32 umzuwandeln. Der einfachste Weg, dies zu tun, ist die Verwendung der astype() Methode für NDarray.

# Convert Raster to Array 

hvArray = hvRaster.GetRasterBand(1).ReadAsArray().astype(np.float32) 
vhArray = vhRaster.GetRasterBand(1).ReadAsArray().astype(np.float32) 
Verwandte Themen