开始研究遥感影像的分割,尝试去通过gdal对影像进行读取并对图像进行分割。过程中遇到了许多问题,现总结如下。

1.error1:range must be finite

  报这个错误是因为数组中有Nan值。一开始很纳闷,因为readasarray的图像在envi里打开并没有问题,黑边也作了处理。查询satckoverflow后发现是因为影像太大,无法读取,崩溃导致nan。通过采用分块读取的方法解决了问题。

但是仍有不足,这里的分块读取分割成四部分,不够intelligence。后续将作改进。

2.idea:采用polygonize方法可以用mask来提取栅格数据并且转换成shp文件。gdal:polygonize。

3.GetRasterBand(n)方法读取波段,readasarray转换成数组阵列。

2019/11/30

今天发现一些问题,以前对range must be finite的报错给出的答案是错误的,所以来进行修改。其实在读取遥感影像时,一般小图幅是不需要分块处理的,只有大到了一定程度才会需要去分块读取。今天用data = gdal_array.LoadFile(raster)读取了8000*8000的数据,并且是配置较差的电脑完成的,所以猜测ReadAsArray应该也是可以直接读取的(的确可以),这种图幅完全不需要分块读取。那么经过排查发现,报错问题在于ndwi值范围异常,-inf~1341的范围毫无疑问是错的,所以这里会导致pillow图像处理报错。最终发现错误原因在于辐射定标做错了,这里贴个图记录一下。下次不要再错了。

总结:如果遇到range must be finite,那么十之八九是你的辐射定标、大气校正存在问题,导致计算的ndwi值有巨大偏差。

Gdal随笔的更多相关文章

  1. 关于基于GDAL库QT软件平台下C++语言开发使用说明

    背景前提 地理空间数据抽象库(GDAL)是一个用于读取和编写栅格和矢量地理空间数据格式的计算机软件库,由开源地理空间基金会在许可的X / MIT风格免费软件许可下发布. 作为一个库,它为调用应用程序提 ...

  2. AI人工智能系列随笔

    初探 AI人工智能系列随笔:syntaxnet 初探(1)

  3. 【置顶】CoreCLR系列随笔

    CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...

  4. C++随笔:.NET CoreCLR之GC探索(4)

    今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...

  5. C++随笔:从Hello World 探秘CoreCLR的内部(1)

    紧接着上次的问题,上次的问题其实很简单,就是HelloWorld.exe运行失败,而本文的目的,就是成功调试HelloWorld这个控制台应用程序. 通过我的寻找,其实是一个名为TryRun的文件出了 ...

  6. ASP.NET MVC 系列随笔汇总[未完待续……]

    ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...

  7. 使用Beautiful Soup编写一个爬虫 系列随笔汇总

    这几篇博文只是为了记录学习Beautiful Soup的过程,不仅方便自己以后查看,也许能帮到同样在学习这个技术的朋友.通过学习Beautiful Soup基础知识 完成了一个简单的爬虫服务:从all ...

  8. 利用Python进行数据分析 基础系列随笔汇总

    一共 15 篇随笔,主要是为了记录数据分析过程中的一些小 demo,分享给其他需要的网友,更为了方便以后自己查看,15 篇随笔,每篇内容基本都是以一句说明加一段代码的方式, 保持简单小巧,看起来也清晰 ...

  9. 《高性能javascript》 领悟随笔之-------DOM编程篇(二)

    <高性能javascript> 领悟随笔之-------DOM编程篇二 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...

随机推荐

  1. 剑指Offer-3~9题

    3. 数组中重复的数字 题目描述: 在一个长度为 \(n​\) 的数组里的所有数字都在 \(0​\) 到 \(n-1​\) 的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个 ...

  2. 【官方文档翻译】SpringBootActuator生产特性

    翻译自 spring-boot 官方文档(版本:2.2.2.RELEASE) Spring Boot包含了许多附加功能,可以帮助您在将应用程序推送到生产环境时监视和管理它.您可以选择使用HTTP端点或 ...

  3. 从源码角度了解SpringMVC的执行流程

    目录 从源码角度了解SpringMVC的执行流程 SpringMVC介绍 源码分析思路 源码解读 几个关键接口和类 前端控制器 DispatcherServlet 结语 从源码角度了解SpringMV ...

  4. 为什么说ArrayList是线程不安全的?

    一.概述 对于ArrayList,相信大家并不陌生.这个类是我们平时接触得最多的一个列表集合类. 面试时相信面试官首先就会问到关于它的知识.一个经常被问到的问题就是:ArrayList是否是线程安全的 ...

  5. Webpack实战(四):教教你如何轻松搞定-预处理器(loader)

    前面三节,我主要给大家分享了有关webpack的一些配置的知识点,如何打包js文件,而如果我们遇到其他类型的资源如图片.css.字体font等等,我们该如何处理呢?今天会介绍预处理器(loader), ...

  6. Prop验证、inheritAttrs、$attrs的用法和坑

    Prop Prop验证 Vue.component('my-component', { props: { // 基础的类型检查 (`null` 和 `undefined` 会通过任何类型验证) pro ...

  7. SEVERE: Unable to process Jar entry [avassist xxxx.class]

    <bean id="sqlSessionTemplate2" class="org.mybatis.spring.SqlSessionTemplate" ...

  8. C++ vector对象是如何增长的

    为了支持快速随机访问,vector将元素连续存储---每个元素紧挨着前一个元素存储. 如果没有空间容纳新元素: 容器必须分配新的内存空间来保存已有元素和新元素,将已有元素从旧位置移动到新空间中,然后添 ...

  9. ubuntu文件操作mkdir cp mv rm ln

    pwd:显示当前目录 date:显示当前日期 cal:显示日历 ls:列出目录内容 cd:改变当前工作目录 ‘.’:代表工作目录 ‘..’:代表工作目录父目录 进入当前目录的父目录:cd /home ...

  10. Qt Installer Framework翻译(7-2)

    包文件夹 安装程序包含的组件,要么是内嵌的,要么可以从远程存储库加载.在这两种情况下,都需要为组件使用一种安装程序可以读取的文件格式和结构. 包文件夹结构 将所有组件放在相同的根文件夹中,即包文件夹. ...