繁体   English   中英

我在将栅格转换为数组时遇到问题

[英]I'm having trouble converting a Raster to an Array

我目前在将栅格转换为数组时遇到了一些问题。 最终,我想将栅格从整数转换为 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

提前谢谢你,

摩西

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)

免责声明:我是以下库的作者。

lidario.Translator可以帮助您将栅格转换为点云(np.array):

import lidario as lio
    
# Create a Translator object which will take a tif file and return a np.array
translator = lio.Translator("geotiff", "np")
    
# Translate the tif file and get the np.array
point_cloud = translator.translate("/path/to/file.tif")

Lidario 在幕后使用 GDAL。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM