2016-09-25 4 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은() 래스터 데이터 세트의 DTYPE와 numpy.ndarray을 만들 것입니다, 사전에 감사합니다. 귀하의 목표는 정수형 dtype을 float32로 변환하는 것입니다. 가장 간단한 방법은 ndarray에 astype() 메서드를 사용하는 것입니다.

# Convert Raster to Array 

hvArray = hvRaster.GetRasterBand(1).ReadAsArray().astype(np.float32) 
vhArray = vhRaster.GetRasterBand(1).ReadAsArray().astype(np.float32) 
관련 문제