1.数据准备
1.1 影像数据选取
这里选取一景OLI8(Landsat8)数据作为测试数据,该数据已经进行过辐射定标和大气校正。该数据显示如下
数据信息:轨道号12340 时间20190817
由于一景数据过大,处理太耗费时间,这里裁剪一个规则矩形区域作为测试区。
1.2 绘制规则矩形
在ArcCatlog里面新建shapefile图层,投影选择和影像一致(对于较新版本实际上也可以随意设置,裁剪功能会自动转换投影进行裁剪),一般选择一致,这样更好一些。
选择矩形工具进行要素采集,即绘制一个规则矩形,这里是绘制一个水平的规则矩形。具体方法可以参考:Arcgis应用(二)使用editor工具绘制水平矩形
1.3 使用clip工具裁剪影像作为测试数据
使用以下第三个工具
或者直接从工具箱找到:
设置参数并点击OK输出结果
结果如下:
默认显示颜色很暗,可以拉伸一下,将符号系统属性中的max值设置为10,
效果如下:
至此,测试数据我们就做好了,我们可以看一下这个数据的基本参数信息如下:
有行列数信息:531行,580列,波段数信息:7个波段,这里分别是对应OLI8 2-8个波段,空间分辨率信息30m以及格式等。
2. 提取影像数据光谱值为txt文件
2.1 提取方法
具体方法可以参考博文:ArcGIS应用(一)提取遥感影像各波段值
这里具体步骤就省略了。
需要说明一下的是:
计算过程中,有的版本会报这个错误,10.2的就会报错(时间上查看路径的时候数据也计算出来了,结果也和10.3一样),10.3可以直接计算出来不报错。
结果显示如下:
我们查看属性表的时候会发现要素个数为305651,这和580*531=307980不一样,要少2329个。
2.2 问题分析
产生这个问题的原因首先推测应该是nodata像元值引起的,在数据格式转换过程中,遇到nodata的时候,可能没有转换为点数据。为了确认是否是这个原因,我们可以局部放大数据查看,如下:
上图中,有些白色像元中没有点,我们打开属性查看一下:
可以看到有波段是nodata的没有转化为点要素。
有数据缺失我们后面就没法准确计算影像数据的行列号了,所以这里必须要处理好。
2.3 问题解决办法
找到问题了之后,解决办法很简单,我们在裁剪的时候,输出结果的nodata Value设置为0.然后重新计算结果。
或者直接处理裁剪好的影像数据,将nodata转化为0值。这里就先用第二种试一下:
注意区分函数的大小写,如CON ISNULL 如果都大写会报错
正确如下:
nodata去除了,但是影像变为单波段了,应该默认只计算了一个波段数据,看来还是在裁剪的时候直接设置为0值比较好。
直到属性表中要素个数为305651,和580*531=307980一样就可以了。
3.numpy读取光谱值数据
更新中……
转载:https://blog.csdn.net/soderayer/article/details/116572325