ArcPy学习笔记(五)使用栅格数据

第五章 使用栅格数据

1.列出栅格数据
ListRasters函数是以python列表的形式返回工作空间中的栅格数据,该函数语法如下:
在这里插入图片描述
raster_type通过栅格数据类型限制返回的结果。
在这里插入图片描述
以下为示例代码:

import arcpy
from arcpy import env

env.workspace="D:/PythonforArcGIS/study/raster/test.png"
rasterlist=arcpy.ListRasters()
for i in rasterlist:
    print i

当workspace为一个栅格文件时,输出为该栅格文件的信息

当workspace为一个文件夹时,输出为该工作空间内的各个栅格文件
在这里插入图片描述
此外,还可以通过对ListRaster的参数进行修改,来达到对数据的过滤,当我们把上面代码的第四行进行修改:

import arcpy
from arcpy import env

env.workspace="D:/PythonforArcGIS/study/raster/1991"
rasterlist=arcpy.ListRasters("*","TIF")
for i in rasterlist:
    print i

在这里插入图片描述
可以发现这里输出的均为tif文件。

2.描述栅格属性
栅格数据可以使用之前提到的Describe进行描述。该函数将返回指定数据元素的各种属性。此类属性为动态的,即不同的数据类型会有不同的描述属性可供使用。
栅格元素具有三种不同的类型:
(1)栅格数据集——是一种栅格数据模型,它可以存储在磁盘或者地理数据库中。
(2)栅格波段——是栅格数据集中的一个图层,代表电磁光谱某个范围内或波段内的值。
(3)栅格目录——是以表格形式定义的栅格数据集的集合,目录中每条记录表示一个栅格数据集。
下面的例子说明了使用Describe函数对栅格属性的读取并输出:

import arcpy
from arcpy import env

env.workspace="D:/PythonforArcGIS/study/raster/1991"
raster='LT05_L1TP_121044_19911009_20170125_01_T1_B1.tif'
desc=arcpy.Describe(raster)
print desc.dataType

这里dataType返回的实际上为目标数据的数据类型,这很明显为RasterDataset。除此之外,栅格数据集还包含了以下内容:
(1)bandcount——波段数
(2)compressionType——压缩类型
(3)format——栅格数据格式(tif、grid、imagine等)
(4)permanent——表明栅格的状态:False表示临时数据,True则相反
(5)sensorType——获取影像的传感器的类型
可通过desc.bandcount来进行查看,但前提是影像有包含该类信息
在这里插入图片描述
如这里我查看了3个信息,但实际上只显示了两个(如下图),这可能是由于该影像并未储存相关属性。
在这里插入图片描述
针对栅格波段数据,还有很多其特有的属性如下:
(1)height——行数
(2)width——列数
(3)isInteger——表明波段中的数据是否为整型
(4)meanCellheight——栅格单元在y坐标方向上的大小
(5)meanCellwidth——栅格单元在x坐标方向上的大小
(6)noDataValue——栅格波段中的NoData
(7)pixeltype——像元类型,如八进制、十六进制、单精度浮点型等
(8)primaryField——字段索引
(9)tableType——表的类别名称
在这里插入图片描述

结果为下图所示,其中这个高和宽相当于分辨率,这幅影响为30x30m分辨率的影像。
在这里插入图片描述

3.处理栅格对象
在ArcPy中,有两种方法创建栅格对象
(1)直接引用磁盘上已有的栅格数据
(2)使用地图代数语句。
创建栅格类的语法为:
Raster(inRaster)
下面代码说明通过引用磁盘上已有栅格数据来创建对象

import arcpy
myraster=arcpy.Raster("D:/PythonforArcGIS/study/raster/1991/LT05_L1TP_121044_19911009_20170125_01_T1_B1.tif")

使用地图代数语句创建

import arcpy
outraster=arcpy.sa.Slope("D:/PythonforArcGIS/study/raster/1991/LT05_L1TP_121044_19911009_20170125_01_T1_B1.tif")

栅格对象只有一个方法:save方法。有地图代数语句返回的栅格对象默认为临时数据,这意味它们将在使用结束后被删除。而save方法可以使栅格对象永久保存在磁盘中,如下面这段代码:

import arcpy

arcpy.CheckOutExtension("Spatial")
outraster=arcpy.sa.Slope("D:/PythonforArcGIS/study/raster/1991/LT05_L1TP_121044_19911009_20170125_01_T1_B1.tif")
outraster.save("D:/PythonforArcGIS/study/raster/slope")

这里需要注意第二行代码,这里用到的slope是属于spatial工具库中,而如果没有这一步就会导致其报错。
在这里插入图片描述
在这里插入图片描述
4.地图代数
arcpy.sa模块除了可以提供访问工具的接口,还提供了一系列用于执行地图代数的运算符。其中大多数运算符既可以作为工具箱下Math工具集中的工具,也可以作为代码中的运算符。
如代码

outraster=Times(elevraster,"0.348")

可替换为

outraster=elevraster*0.348

又比如

temp1=Plus(f1,f2)
temp2=Plus(temp1,f3)
out=Divide(temp2,"3")

可替换为

out=(f1+f2+f3)/3
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值