@影像nan转换为0

问题描述:

做高光谱降维处理或是纹理信息特征提取都会经历这一步,当小编看到进度条到达99%时,内心非常喜悦,紧接着却弹出下面的对话框,一盆冷水直淋头皮。于是乎,去网上查方法,查来查去,方法就那几种,而且都不能很好亦或是很方便的解决。

原因分析:

nan意为:not a number ,影像中出现nan值得情况有好几种,譬如:数字图像处理结果导出到本地时、数据格式问题、还有就是原始数据就他喵的这样,小编飞的无人机数据就是第三种情况。


解决方案:

罢了,我累了,我也妥协了。于是乎,我凭借着可怜的基础自己写了一组python代码来将整张影像中nan值替换为0,并将原始影像输出,保留原始影像的任何元数据信息。其PCA结果如下:

代码如下

需要的库:gdal、numpy、pandas

from osgeo import gdal
import numpy as np
import os
import pandas as pd#读取tif数据集
def readTif(path):dataset = gdal.Open(path)if dataset == None:print(fileName+"文件无法打开")return datasetUAV_Path = r"F:\uavdlw\20210516lxjian(5)\lx.tif"
UAV_Path = UAV_Path.encode('gbk','ignore')
SavePath = r"F:\uavdlw\20210516lxjian(5)\lxp.tif"# 读取影像
uav_data = readTif(UAV_Path)
Tif_width = uav_data.RasterXSize #栅格矩阵的列数
Tif_height = uav_data.RasterYSize #栅格矩阵的行数
Tif_geotrans = uav_data.GetGeoTransform()#获取仿射矩阵信息
Tif_proj = uav_data.GetProjection()#获取投影信息
uav_data = uav_data.ReadAsArray(0,0,Tif_width,Tif_height)#保存tif文件函数
def writeTiff(im_data,im_geotrans,im_proj,path):if 'int8' in im_data.dtype.name:datatype = gdal.GDT_Byteelif 'int16' in im_data.dtype.name:datatype = gdal.GDT_UInt16else:datatype = gdal.GDT_Float32if len(im_data.shape) == 3:im_bands, im_height, im_width = im_data.shapeelif len(im_data.shape) == 2:im_data = np.array([im_data])im_bands, im_height, im_width = im_data.shape#创建文件driver = gdal.GetDriverByName("GTiff")dataset = driver.Create(path, int(im_width), int(im_height), int(im_bands), datatype)if(dataset!= None):dataset.SetGeoTransform(im_geotrans) #写入仿射变换参数dataset.SetProjection(im_proj) #写入投影for i in range(im_bands):dataset.GetRasterBand(i+1).WriteArray(im_data[i])del datasetuav_data=np.nan_to_num(uav_data)#nan替换为0
uav_data.shape#通道5,行数列数writeTiff(uav_data,Tif_geotrans,Tif_proj,SavePath)

呼~~~~,完结。

遥感影像出现nan如何处理、envi主成分分析nan报错处理相关推荐

  1. ENVI app store报错:打不开和显示无法联网

    问题:envi_app_store安装后打不开 原因:Exelis文件没有权限,需要打开权限 (envi_app_store说明书) 问题:envi_app_store安装后显示无法联网 原因:env ...

  2. vue遇到ie兼容问题如何处理_vue 兼容IE报错解决方案

    IE 页面空白 报错信息 此时页面一片空白 报错原因 Babel 默认只转换新的 JavaScript 语法(如箭头函数),而不转换新的 API ,比如 Iterator.Generator.Set. ...

  3. ENVI经验|基于多源遥感影像的红树林范围提取4-面向对象分类

    传统的基于像素的遥感影像处理方法都是基于遥感影像光谱信息极其丰富,地物间光谱差异较为明显的基础上进行的.对于只含有较少波段的高分辨率遥感影像,传统的分类方法,就会造成分类精度降低,空间数据的大量冗余, ...

  4. envi的三个窗口_ENVI显示窗口遥感影像显示遥感数据应用

    原标题:ENVI显示窗口遥感影像显示遥感数据应用 ENV1的显示窗口(Dislay)是显示栅格图像.注记文件.ROI等数据层的主要窗口,也是实现人机交互的重要途径.当打开一个栅格文件时,一般会自动打开 ...

  5. ENVI:在ENVI中如何查看所打开遥感影像的所有波段

    在遥感影像的处理过程中,有时候会忘记或不知道打开的遥感影像是由那几个波段组成的,因此需要查看一下波段.本人比较菜,找到一个笨办法供各位小伙伴借鉴. 选中所打开的遥感影像,点击File-->Sav ...

  6. 【ENVI】遥感影像的导入与裁剪

    1. 流程图 2.导入 (1)通过MTL文本头文件导入.(这里以拖入法作为演示) ①选中并将头文件拖入ENVI中,结果如图所示. (3)通过分别导入Landsat8的第2-7波段,进行波段组合. ①点 ...

  7. ENVI经验|基于多源遥感影像的红树林范围提取3-监督分类

    监督分类,又称训练分类法,用被确认类别的样本像元去识别其他未知类别像元的过程.它就是在分类之前通过目视判读和野外调查,对遥感图像上某些样区中影像地物的类别属性有了先验知识,对每一种类别选取一定数量的训 ...

  8. 遥感影像的纹理特征计算(基于ENVI和Python实践)

    纹理特征计算的一些方法 1.主要有四大类:统计方法.信号处理方法.模型方法和结构方法 2.灰度共生矩阵的概念 在水平方向也就是0方向,0-0有共计4个:0-1共计2个 3.灰度共生矩阵计算的结果 4. ...

  9. 遥感影像镶嵌在不同软件上的比较——Envi, Erdas, Qmasaic

    老板最近给了一个任务,要用到广东珠三角地区2005年,2010年,2015年的土地利用情况,所以笔者开始下载影像进行图像镶嵌,然后分类.由于镶嵌花了笔者大量的时间,所以把镶嵌过程记录下来,以便后来的人 ...

最新文章

  1. springMVC对异常处理的支持
  2. 如何取消button的点击特效_如何衡量一个人的 JavaScript 水平?
  3. 【转】手工导入传输请求(Transport Request)
  4. 解决ssh连接Linux服务器经常掉线不稳定的问题
  5. vscode编辑器tab换行缩进问题
  6. 别让我思考(Don’t make me think)
  7. HYSBZ - 2342 双倍回文(回文自动机)
  8. python缩进符错误_python – 如何修复Pylint“错误的缩进”和PEP8 E121?
  9. qiaoye.php,全自动无限生成关键词页面(黑帽SEO优化终极方法)
  10. [2020多校A层12.3]虚构推理(语言/二分/数据结构)
  11. Linux内存管理:分页
  12. atoi的实现和 字符指针数组
  13. Cesium:显示一个3D地球
  14. cocos2d-x使用ant批量打包
  15. 使用vue-quill-editor实现富文本编辑器
  16. Micropython——基于PYB的霍尔编码器电机测速与使用
  17. vs2015上的html可以编译,libcef编译使用--使用VS2015
  18. 清、浊、爆破音的时域与频域特性
  19. seraph_256 写给自己的编程小事
  20. Golang.Go语言基础

热门文章

  1. 【深度长文】小样本学习及其在美团场景中的应用
  2. 这样去理解微信小程序
  3. 黑苹果 服务器系统安装,macOS Mojave黑苹果超详细图文教程
  4. 要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9) 也不相同,每个字符串长度为10;
  5. MATLAB与制冷,基于Matlab的CO2制冷系统的仿真设计与研究-暖通空调在线.PDF
  6. 手机摄影-参数(曝光补偿)
  7. Wondershare Filmora 9.1.2.17 特别版 Mac 易用的视频编辑工具
  8. JavaScript(十九)飞机大战demo
  9. 关于在线提供产品3D CAD模型的九问九答?
  10. msgsnd()函数