Qgs开发18-读取栅格数据

本文介绍了在QGIS开发中如何读取栅格数据,包括加载数据、计算像素位置以及通过经纬度或行列号获取像素值。提供了lonLat2ColRow和colRow2LonLat方法进行坐标转换,以及getRasterValue方法获取特定点的像素值。
摘要由CSDN通过智能技术生成

Qgs开发-读取栅格数据

sf2gis@163.com

2014年10月28日

 

1  目的:加载栅格并取得指定点(经纬度或行/列号)的像素值

2 原理:计算像素值位置,读取数据

通过驱动程序将栅格读入内存,并按照像素的实际大小,计算内存位置,读取数据。

驱动程序提供相应的计算接口。

3 方法

3.1 加载数据

通过驱动(默认GDAL(key=”gdal”)等),读入Raster数据(QgsRasterLayer)。然后读取数据的内存地址(QgsRasterDataProvider::block())(如果数据过大,则需要分块读取)。

3.2 读取数据

可以通过block()加载数据块,但是此块不能太大。对于大数据(实测超过1G大小,bValid=false,bEmpty=true),只能使用分块读取的方法。小数据(实测不超过1G,但并没有找到官方说明)可以直接取得全部范围并根据行列号取得像素值(QgsRasterDataProvider取得QgsRasterBlock)。

QgsRasterBlock提供value(row,col)取影像数据的行、列号数据。但分块时要重新计算范围,实际上就是QgsRasterDataProvider::Identify()的算法。小数据可以直接使用,方便。

对于经纬度,使用QgsRasterDataProvider::Identify(),会先将经纬度转换为行列号,然后计算读取1*1范围(单个像素)大小的像素值。

4 示例

/******************************************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗里曼的小伙伴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值