全国高分辨率土地利用数据服务 土地利用数据服务 土地覆盖数据服务 坡度数据服务 土壤侵蚀数据服务 全国各省市DEM数据服务 耕地资源空间分布数据服务 草地资源空间分布数据服务 林地资源空间分布数据服务 水域资源空间分布数据服务 建设用地空间分布数据服务 地形、地貌、土壤数据服务 分坡度耕地数据服务 全国大宗农作物种植范围空间分布数据服务
多种卫星遥感数据反演植被覆盖度数据服务 地表反照率数据服务 比辐射率数据服务 地表温度数据服务 地表蒸腾与蒸散数据服务 归一化植被指数数据服务 叶面积指数数据服务 净初级生产力数据服务 净生态系统生产力数据服务 生态系统总初级生产力数据服务 生态系统类型分布数据服务 土壤类型质地养分数据服务 生态系统空间分布数据服务 增强型植被指数数据服务
多年平均气温空间分布数据服务 多年平均降水量空间分布数据服务 湿润指数数据服务 大于0℃积温空间分布数据服务 光合有效辐射分量数据服务 显热/潜热信息数据服务 波文比信息数据服务 地表净辐射通量数据服务 光合有效辐射数据服务 温度带分区数据服务 山区小气候因子精细数据服务
全国夜间灯光指数数据服务 全国GDP公里格网数据服务 全国建筑物总面积公里格网数据服务 全国人口密度数据服务 全国县级医院分布数据服务 人口调查空间分布数据服务 收入统计空间分布数据服务 矿山面积统计及分布数据服务 载畜量及空间分布数据服务 农作物种植面积统计数据服务 农田分类面积统计数据服务 农作物长势遥感监测数据服务 医疗资源统计数据服务 教育资源统计数据服务 行政辖区信息数据服务
Landsat 8 高分二号 高分一号 SPOT-6卫星影像 法国Pleiades高分卫星 资源三号卫星 风云3号 中巴资源卫星 NOAA/AVHRR MODIS Landsat TM 环境小卫星 Landsat MSS 天绘一号卫星影像
栅格(Raster)数据是最常见的数据图像的存储方式,对栅格影像的像元值进行读写、计算是栅格影像数据处理的基本方式,比如,归一化差异植被指数(NDVI)就是利用近红外(NIR)和红色(R)波段对应像元值的差与和的比值来进行计算的。为了能够处理栅格影像数据,我们首先需要将栅格数据读取到电脑的内存(Memory),待处理完后,我们又需要将内存中的数据写入到磁盘(Disk)。本文,小编将和大家一起学习在ArcPy的基础上,如何编写Python脚本来实现栅格影像的读写,本文中会以最常用的tif格式的栅格为例,其它栅格数据的读写方法与此类似。
现有Landsat5 第一波段(band01)的TM影像,要求编写Python脚本读取该影像,然后创建一个行列数(图像大小)、空间分辨率、空间参考信息均与所读取影像相同的tif格式的“国际棋盘”影像。(即看起来和下图所示相同的影像,但不同之处是,我们要创建的是具有空间投影、空间分辨率,行列数远大于该图的影像。)
如上图,对于栅格影像数据读写问题,首先,在“ArcGIS 10.2 for Desktop Help ”文档中的“目录“选项卡下,定位到”Desktop“—>”Geoprocessing“—>“ArcPy”—>“ArcPy classes”—>“General”—>目录下,我们可以找到一个名为“Raster”的工具,点击打开可以看到如下表所示的“Raster”函数说明:
实现本文读写栅格影像数据集的Python脚本代码如下图所示:
代码注释:
(1)第8行代码,设置ArcMap新的输出结果能够覆盖之前的输出,这是因为,第42行的save函数,已经将文件写到了磁盘上,如果不设置,则第45行代码再次读取save所输出的数据并以保存时,会提示错误!
(2)第12行代码,这里完成了根据文件路劲读取栅格影像;
(3)第13行代码,这里创建了一个Python字典,字典内容,则是利用了第12行所读取的栅格数据的,即Raster对象的属性来获取;
(4)第34—36行代码,首先利用numpy创建了与所读取的栅格数据相同大小的全为0的数组,然后,通过赋值,创造了一个二值数组,即所创建的数组,就255和0两个值,这是实现国际象棋棋盘效果的关键。
(5)第37行,使用NumPyArrayToRaster函数,根据之前所读取的栅格数据的信息将上述创建的数组转换为Raster对象,以备下文写出save之用(关于如何实现Raster与Numpy之间的转换,请参考本公众号,“GIS数据处理”模块下的文章——“1.1.2 栅格数据计算——栅格数据与numpy的转换”);
(6)第42行,这则是将内存中创建的国际象棋的棋盘栅格数据集写入到本地磁盘;
(7)第45行,根据第44行创建的空间参考信息——PCS信息,再次读取国际象棋的棋盘栅格数据,并为之定义空间信息。(关于如何定义空间参考信息,请参考本公众号,“GIS数据处理”模块下的文章——“1.2.1GCS、PCS的定义与转换”)
结果展示
如下图所示,执行完脚本后,ArcMap中将自动加载结果,一开始,可能颜色并不黑白色(这知识ArcMap的显示原因,数据处理上并没有问题),我们做一下更改即可:
放大后的结果,如下图所示,有的地方两个黑色的正方形链接在一块了,这是因为,黑白相间的像元,在一定的行列号的限制下,达到一定数目后,就会周期性的重复。