2016-09-25 5 views
0

У меня возникли проблемы с преобразованием растра в массив. В конечном счете, я хотел бы преобразовать растр из целого числа в float32, чтобы я мог запускать gdal_calc, однако я не мог правильно изменить тип, чтобы сделать это.У меня возникли проблемы с преобразованием растра в массив

ТАК, я был бы признателен за любую помощь, которую может предоставить кто-то. Вот мой сценарий, очень короткий.

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 

Спасибо заранее,

Моисей

ответ

2

Метод ReadAsArray() создаст numpy.ndarray с DTYPE из растровых данных. Ваша цель - преобразовать целочисленный dtype в float32. Самый простой способ сделать это - использовать метод astype() для ndarray.

# Convert Raster to Array 

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