接上文
(六)作物冠层体积(canopy volume,CV)
(1)图片读取以及图片数据处理函数
1)RasterXSize,RasterYSize,RasterCount函数:
读取tif图片栅格矩阵的列数,行数和波段数
2)property函数:
通过存取方法定义的属性通常称为特性(property)
首先property有两种用法,一种是作为函数用法,一种是作为装饰器的用法,接下来逐一分析
- property函数参数分析
property(fget=None, fset=None, fdel=None, doc=None)
fget 是获取属性值的方法。
fset 是设置属性值的方法。
fdel 是删除属性值的方法。
doc 是属性描述信息。
- @property装饰器
@property提供了比property()函数更简洁直观的写法
被 @property 装饰的方法是获取属性值的方法,被装饰方法的名字会被用做属性名。
被 @属性名.setter 装饰的方法是设置属性值的方法。
被 @属性名.deleter 装饰的方法是删除属性值的方法。
3)GetGeoTransform():
为了理解这个函数,这里打印了一下,发现输出的是一组数值
经过查询,利用GetGeoTransfrom函数可以获得图像中任意一点的地理坐标。
参数分别如下
影像左上角横坐标:geoTransform[0]
影像左上角纵坐标:geoTransform[3]
遥感图像的水平空间分辨率为geoTransform[1]
遥感图像的垂直空间分辨率为geoTransform[5]
如果遥感影像方向没有发生旋转,即上北、下南,则
geoTransform[2] 与 row *geoTransform[4] 为零
4)ReadAsArray()
图像重采样就是从高分辨率遥感影像中提取出低分辨率影像,或者从低分辨率影像中提取高分辨率影像的过程。常用的方法有最邻近内插法、双线性内插法、三次卷积法等
(2) write_img函数
1)GetDriverByName函数:
读取某一类型的数据,需要先载入数据驱动,初始化一个对象
driver = gdal.GetDriverByName("GTiff")
2)driver.Create函数:
创建空文件,并确定开辟多大内存;每个像素都有一个对应的值,这个值得类型用数据类型指定。这里的数据类型是gdal数据类型
dataset = driver.Create("fdem_new.tif", 栅格矩阵的列数, 栅格矩阵的行数, 波段数, 数据类型)
创建文件时 driver = gdal.GetDriverByName("GTiff"),数据类型必须要指定,因为要计算需要多大内存空间。于是在载入驱动前,用if语句判断了一下数据类型
3)gdal数据类型:
gdal数据类型如下:
GDT_Byte(int8);GDT_UInt16; GDT_Int16;(4)GDT_UInt32 ;(5)GDT_Int32;
(6)GDT_Float32;(7)GDT_Float64
(3) 主程序分析
主程序中主要有
1.求取株高数据
2.求取savi指数,求取冠层覆盖度阈值
3.利用阈值,划分冠层覆盖区域,设置覆盖区域为1,未覆盖区域为0,制作覆盖掩膜
4.株高数据与掩膜数据相乘,求得每像素位置株高
5.调用像素的项元值
6.项元平方与株高相乘,求得每像素位置体积,换算为立方分米
7.保存tif数据
8.划分体积单位,并着色处理,改为RGB
9.保存RGB输出结果如下
(七)植物表型程序学习全流程总结
从OSgeo与GDAL概念出发,了解GIS 是一门综合性学科,其结合了地理学与地图学。并且 GDAL和OGR两个库合并后使用 GDAL 这一个名字,用来处理用来处理栅格空间数据和处理矢量数据的。再到株高代码的学习,得到遥感的DEM数据,用后阶段的DEM数据减去前阶段DEM数据,得到高程差,进而对差数据可视化显示;随后了解到植被指数的概念,植被指数包括比值植被指数,归一化植被指数,差值植被指数。本项目只要求解归一化植被指数,通过测量近红外(植被强烈反射) 和红光(植被吸收)之间的差异来量化植被。任何强化Red和NIR差别的数学变换都可以作为植被指数。而后学习土壤调节植被指数 (SAVI)和冠层覆盖度,(SAVI) 方法是试图通过土壤亮度校正系数最小化土壤亮度影响的植被指数。 它通常用在植被覆盖率较低的干旱区域,其输出值在 -1.0 到 1.0 之间。上述参数求得之后,最后求得作物冠层体积(canopy volume,CV)并通过RGB转换成彩色图。到此算是一个植物表型项目的全流程,其中又不少细节仍然需要反复学习和实践才能更好的理解。
最后汇总一下前文遇到的网站和书籍:
OSgeo与GDAL:开源地理空间基金会中文分会,OSGeo中文分会,OSGeo中国中心,地理空间数据共享,开放地理空间实验室
Python与开源GIS:Python与开源GIS:数据处理、空间分析与地图制图 — 首页
15 个免费卫星图像数据源:植物表型程序学习(二)_机械刘怀洋的博客-CSDN博客
gdal学习书籍:《GDAL源码剖析与开发指南》