首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python中gdal栅格影像读取计算与写入及质量评估QA波段筛选掩膜

本文所要实现的需求:现有自行计算的全球叶面积指数(LAI).tif格式栅格产品(下称“自有产品”),为了验证其精确度,需要与已有学者提出的成熟产品——GLASS全球LAI.hdf格式栅格产品(下称“GLASS...1.2 栅格图像文件名读取与配对   接下来,需要将全部待处理的栅格图像用os.listdir()进行获取,并用for循环进行循环批量处理操作的准备。...其中,gdal.Open()读取栅格图像;.RasterCount获取栅格图像波段数量;.ReadAsArray()将栅格图像各波段的信息读取为Array格式,当波段数量大于1时,其共有三维,第一维为波段的个数...QA波段;.GetRasterBand(1)表示获取栅格图像中的第一个波段(注意,这里序号不是从0开始而是从1开始);np.where(rt_lai_array>30000,np.nan,rt_lai_array...1.6 结果栅格文件写入与保存   接下来,将我们完成上述差值计算与依据算法进行筛选后的图像保存。

34840

ArcMap自动计算单一波段或多波段栅图像NDVI的方法

本文介绍在ArcMap软件中,快速对单一波段或多波段栅格遥感影像自动计算NDVI数值的方法。   ...计算遥感影像的NDVI值是一个很常见、也很基础的操作,基于ENVI、ERDAS等专业遥感影像数据处理软件都可以很方便地实现这一操作;而在ArcGIS软件中,除了用波段计算器这一方法计算遥感影像的NDVI...数值,还有一种基于“影像分析”的非常简单、快速的计算方法;且无论是需要对多个单一波段的图像(即一个波段就是一个图像)进行计算,还是对某一个多波段图像(即一个图像中包含了所需的全部波段)进行计算,都可以用这种方法...其中,“Red Band”与“Infrared Band”选项就依据遥感影像中,红波段与近红外波段的编号顺序来设置即可;例如,我这里是用Sentinel-2数据来计算,所以红波段与近红外波段就分别是第4...随后,“Use Wavelength”勾选框若选中,表示如果当前栅格图像的信息中包含了每一个波段的波长信息,那么软件将自动尝试基于波段的波长,自行确定哪个是红波段、哪个是近红外波段,并自动将二者进行计算

1.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python中gdal读取多波段HDF栅格影像并绘制直方图

    本文详细介绍基于Python语言gdal等模块实现多波段HDF栅格图像文件(即.hdf文件)的读取、处理与像元值可视化等操作。...此外,基于gdal等模块读取.tif格式栅格图层文件的方法可以查看Python中gdal实现多幅栅格影像批量绘制直方图,读取单波段.hdf格式栅格图层文件的方法可以查看Python中gdal栅格影像读取计算与写入及质量评估...本文期望实现的需求为:现有一存放.tif格式的全球LAI产品栅格数据的路径,需将这一路径下的全部LAI产品栅格数据依据另一路径下存放的全球MODIS植被覆盖类型产品栅格数据进行像元分类,并绘制全球每一种植被类型对应的...HDF栅格图像文件读取部分的代码:首先,多波段.hdf格式文件的读取在一开始与单波段.hdf格式文件或.tif格式文件的读取一致,即通过gdal.Open()函数实现;但随后,需要额外借助len()函数获取...mcd_sub_dataset的Index)是从0开始计算的;而后面的[0]则表示元组中的第一个参数,也就是上面一幅图中显示的该波段对应的数据路径。

    1.2K20

    ArcGIS计算栅格落在不同面矢量要素中的各数值区域面积

    本文介绍在ArcMap软件中,基于面积制表工具(也就是Tabulate Area工具),基于1个面要素数据集与1个栅格数据,计算每一个面要素中各栅格数据分布面积的方法。   ...首先,来看一下本文的需求。现有一个矢量面的要素集,其由多个椭圆形的面图层组成;同时还有一个栅格数据底图,其表示不同的地物类型。...我们现在希望,对于要素数据集中的每一个面要素(也就是上图中的每一个椭圆形),计算其中不同地物类型各自的面积。   接下来,就可以开始操作。...可以看到,标黄的那一列就是我这里作为分组依据的那一列(也就是前述第二个参数);其后的4列,也就是VALUE_10、VALUE_30等这4列,就是我这里栅格数据中的4种地物类型,这4列的数值就是——这种地物类型...,在对应的椭圆形面要素中的面积。

    26710

    GDAL简介

    GDAL提供了C/C++借口,并且通过SWIG提供了Python,Java,C#等的调用借口。当我们在Python中调用GDAL的API函数时,其实底层执行的是C/C++编译的二进制文件。...GDAL不但提供了API借口方便开发人员自定义自己的功能,而且还提供了一系列实用工具(Command Line Tools)可以实现方便快速的空间数据处理。...GDAL 1.x版本以前,对于栅格和矢量数据的读写API借口设计是相对分离的,从2.x版本开始,栅格和矢量数据的API进行了集成,对开发者更加友好。我们这里的示例都是以2.x版本为例。...栅格数据组织 GDAL中使用dataset表示一个栅格数据(使用抽象类GDALDataset表示),一个dataset包含了对于栅格数据的波段,空间参考以及元数据等信息。...) 元数据(键值对的集合,用于记录和影像相关的元数据信息) 栅格波段(使用GDALRasterBand类表示,真正用于存储影像栅格值,一个栅格数据可以有多个波段) 颜色表(Color Table用于图像显示

    2.3K40

    C++增加GDAL CreateCopy函数得到的栅格的波段数量

    在C++语言的GDAL库中,我们可以基于CreateCopy()函数与Create()函数创建新的栅格图像文件。...大家在实践过程中,如果用的是其他格式的栅格图像文件,可以先直接用AddBand()函数尝试一下,看看其对于自己当前格式的数据是否有效;如果没有效果的话,就需要用接下来的方法来实现需求了。   ...随后,我们为.vrt格式文件增添波段,再用CreateCopy()函数基于这一.vrt格式文件创建新的.tif格式的栅格图像文件,从而实现我们的需求。...接下来,就可以开始配置我们所需要创立的新的.tif格式栅格图像文件。其中,再用一次CreateCopy()函数,将.vrt格式文件的全部属性信息复制到新的.tif格式的栅格图像文件中。...通过上述方式,我们就实现了CreateCopy()函数创建新的栅格图像且为新的栅格图像增添波段数量的需求。

    18820

    C# .NET 中的缓存实现

    C# .NET 中的缓存实现 软件开发中最常用的模式之一是缓存。这是一个简单但非常有效的概念,这个想法的核心是记录过程数据,重用操作结果。当执行繁重的操作时,我们会将结果保存在我们的缓存容器中。...早期做法 让我们用 C# 创建一个非常简单的缓存实现: public class NaiveCache { Dictionary _cache = new...但是,正如编程中的大多数事情一样,没有什么是那么简单的。由于多种原因,上述解决方案并不好。一方面,这个实现不是线程安全的。从多个线程使用时可能会发生异常。...这剥夺了我自己创建类似实现的乐趣,但至少我写这篇博文的工作量减少了。 我将向您展示微软的解决方案,如何有效地使用它,然后在某些场景中如何改进它。...关于GC压力的第一个问题:可以使用多种技术和启发式方法来监控GC压力。这篇博文与此无关,但您可以阅读我的文章在 C# .NET 中查找、修复和避免内存泄漏:8 个最佳实践[4]以了解一些有用的方法。

    3.9K40

    Google Earth Engine谷歌地球引擎外部数据导入管理及数据与代码共享

    那么,最新的GEE外部数据导入方式(包括栅格与矢量数据)则显得非常简洁;由于目前GEE中栅格与矢量数据导入方法已经统一,我们本文就仅以一景外部栅格遥感影像的导入与数据管理为例进行介绍。   ...此外,如果我们需要下载GEE中的栅格图像,可以基于.getDownloadURL({})函数实现: var URL=Wuhan.getDownloadURL({}); print(URL);   其中...依据Google Earth Engine谷歌地球引擎栅格代数与NDVI计算中内容,依据波段名称对某一波段加以选择,并对选择后的单波段栅格图像加以下载: var band=Wuhan.select("b10...对其加以重命名后,我们依据Google Earth Engine谷歌地球引擎矢量数据裁剪栅格数据中内容,依据刚刚划定的矢量区域对单波段遥感影像加以裁剪,并重新执行.getDownloadURL({})函数...分享有多种方式,包括用GEE内部的链接分享,以及通过Git方式分享。对“Repository”进行共享,即可实现将其内部的代码分享给他人。 ? 欢迎关注公众号:疯狂学习GIS

    3.9K32

    GeoTrellis整体介绍

    简介 GeoTrellis是一个基于Apache spark 的用于处理栅格数据的scala库和框架 1.可以高效的读/写和操作栅格,实现了地图运算和矢栅转换工具 2.可以将栅格数据渲染成PNG图片...集群并行处理,相当于GeoTrellis已经实现了分布式的瓦片切割。...GeoTrellis是针对大数据量栅格数据进行分布式空间计算的框架,所以无论采取何种操作,都是先将大块的数据切割成一定大小的小数据(瓦片),这是分治的思想,也是分布式计算的精髓。...MultibandGeoTiff // 读取多波段 LayerReader // 读取集群中整层的瓦片信息 GeoTiff SpatialKey //每幅瓦片在Accumulo中对应的瓦片Key...处理的就是原始数据只将数据切割成256*256的块,层为0(具体x、y编号不需要操心,geotrellis会自动计算) tms会建立金字塔 ,用tms会将数据从最大层(此最大层根据数据的分辨率计算得出)

    41810

    C++中GDAL:用像素均为0的栅格填补时序遥感数据中缺少的时相

    本文介绍基于C++语言的GDAL库,基于一个存储大量遥感影像的文件夹,依据每一景遥感影像的文件名中表示日期的那个字段,找出这些遥感影像中缺失的成像日期,并新生成多个像元值全部为0的栅格文件,作为这些缺失日期当日的遥感影像文件的方法...首先,我们需要基于文件夹中遥感影像文件的文件名称特征,遍历生成文件名列表。在这里,我们使用两个嵌套的for循环,生成所有可能的栅格图像文件名,并将这些文件名保存在all_file_path向量中。...接下来,我们使用GDALOpen函数,从2018001这一天开始,通过循环打开对应名字的文件,直到找到文件夹中第一个实际存在的栅格图像文件(poDataset_actual),并获取其栅格图像的行列数(...;其中,我们就是以前期找到的文件夹中第一个实际存在的栅格图像文件one_actual_path为模板。...随后,我们用0填充新创建的栅格图像,并使用RasterIO函数对栅格图像的像元进行写入操作。   最后,在上述处理完成后,使用GDALClose函数关闭数据集,并输出新创建的栅格图像的文件名。

    26130

    Python中gdal实现MODIS遥感影像数据读取与质量控制QC波段筛选及掩膜

    前期推文Python中gdal栅格影像读取计算与写入及质量评估QA波段筛选掩膜详细介绍了基于Python语言gdal等模块实现遥感影像栅格数据的读取,以及基于质量评估(QA)波段实现栅格像元筛选与掩膜的全部操作...例如,下图所示即为用户手册中关于这一产品一景影像中波段分布情况与每一个波段具体信息的介绍表格;其中包括了波段含义、数据类型、填充值范围、有效值范围与缩放系数等关键参数,这些对于后期我们用gdal读取.hdf...在这里需要注意的是,之前的两篇推文:Python中gdal栅格影像读取计算与写入及质量评估QA波段筛选掩膜以及Python中gdal读取多波段HDF栅格影像并绘制直方图中,已经对本次所要用到的大部分需求与代码加以实现并进行了详细讲解...本文代码所实现功能与上述第一篇推文中的需求一致,唯一不同的是将GLASS产品更改为了MCD15A3H产品,且仅需对MCD15A3H产品的主算法像元加以做差计算(也就是筛选出MCD15A3H产品中第一个QC...波段对应二进制数的第一位为0的像元,其它像元就不用参与差值计算了)。

    1.4K30

    geotrellis使用(二十八)栅格数据色彩渲染(多波段真彩色)

    目录 前言 实现过程 总结 一、前言        上一篇文章介绍了如何使用Geotrellis渲染单波段的栅格数据,已然很是头疼,这几天不懈努力之后工作又进了一步,整清楚了如何使用Geotrellis...将多个(3个)波段的栅格数据渲染成真彩色,废话不多说,进入正题。...2.1 获取三个波段整体信息        就是将上一篇文章(geotrellis使用(二十七)栅格数据色彩渲染)中的获取单个波段整体信息计算三次,分别与rgb波段对应。...3、将多波段瓦片转变成真彩色单波段瓦片        其实就是将三个波段的亮度值分别作为rgb的值,合并成一个波段的亮度值,在geotrellis中也已经实现了该转换方法,代码如下: val colorTile...三、总结        本文简单为大家介绍了如何实现栅格数据的多波段真彩色渲染,有了单波段的基础之后真彩色貌似就没有那么复杂了。复杂的问题总是这样,只要拆分成一个个小问题,总能迎刃而解。

    1.2K50

    Python | GDAL处理影像

    GDAL栅格数据处理 栅格数据介绍 栅格数据读取 读取部分数据集 坐标变换 重采样 什么是栅格数据 基本上是一个大的二维或三维数组 没有独立的几何对象,只有像素的集合 二维:黑白图片 三维:彩色/假彩色...on each output band. # 计算每个波段的统计量 # 注意用range(1,4)表示在波段1,2,3之间循环 # 统计每个波段的:平均值、最小值、最大值、标准差 # 参数取False...:从现有数据直接计算,True:用概视图估计值 out_ds.FlushCache() for i in range(1, 4): out_ds.GetRasterBand(i).ComputeStatistics...流程如下: 用ReadAsArray逐块读取数据举例 处理11行13列的栅格数据 块大小为5行5列 在右边界自动转换为3列 在下边界自动转换为1行 # 逐块处理大数据案例 # 将数字高程模型的单位从米转换为英尺...如果它们比win_xsize和win_ysize大,那么会重采样为更高的分辨率,更小的像素 如果它们比win_xsize和win_ysize小,那么会重采样为更低的分辨率,更大的像素,使用最邻近插值来实现

    4.5K31

    Python提取大量栅格文件各波段的时间序列与数值变化

    本文介绍基于Python语言,读取文件夹下大量栅格遥感影像文件,并基于给定的一个像元,提取该像元对应的全部遥感影像文件中,指定多个波段的数值;修改其中不在给定范围内的异常值,并计算像元数值在每一景遥感影像中变化的差值...首先,我们来看一下本文需要具体实现的需求。...我们现在希望,给定一个像元(也就是给定了这个像元在遥感影像中的行号与列号),提取出在指定的波段中(我们这里就提取全部的5个波段),该像元对应的每一景遥感影像的数值(也就是提取了该像元在每一景遥感影像、每一个波段的数值...);随后,将提取到的大于1的数值修改为1,并计算像素值在每一景遥感影像中数值的差值;最后,将提取到的数据保存为一个Excel表格文件。   ...接下来,我们将大于1的数值加以处理,并计算每个波段随时间变化的数值之差。

    12910

    Google Earth Engine谷歌地球引擎栅格代数与NDVI计算

    本文主要对GEE中的栅格代数与波段计算操作加以介绍。...在Google Earth Engine谷歌地球引擎像元条件筛选与掩膜中,我们利用normalizedDifference()函数计算了NDVI图层;而在本文中,我们则尝试手动进行波段运算的方式计算NDVI...(数据类型为ee.Image),遥感影像各波段才可以参与计算。...也就是说,.subtract()等这些波段运算函数仅对于ee.Image数据有效;而若是ee.ImageCollection等数据类型需要参与波段计算,还需要映射等其它操作。   ...此外,我们还可以按照Google Earth Engine谷歌地球引擎栅格数据可视化代码嵌入中方法,对NDVI图层加以手动可视化配置,并将配置嵌入到代码中,从而实现每一次代码运行得到的NDVI图层可视化设置都是一致的

    41020

    Python自动计算大量遥感数据的NDVI

    本文介绍基于Python中的gdal模块,批量基于大量多波段遥感影像文件,计算其每1景图像各自的NDVI数值,并将多景结果依次保存为栅格文件的方法。   ...在之前的文章中,我们多次介绍过在不同软件或平台中计算NDVI的方法,大家可以参考文章ArcMap自动计算单一波段或多波段栅图像NDVI的方法,或者文章Google Earth Engine谷歌地球引擎栅格代数与...而在本文中,我们就介绍一下基于Python中的gdal模块,实现NDVI批量计算的方法。   这里所需的代码如下。...dataset.GetRasterBand()用以获取指定的栅格波段,而band.ReadAsArray()则将波段数据读取为数组;同时,我这里还用了astype()转换数组的格式,避免原本遥感影像的数据格式带来的问题...其次,即可计算NDVI。使用获取的红光和近红外波段数据计算NDVI,并将NDVI数据保存在data_ndvi数组中。   最后,将NDVI数据写入输出影像文件。

    16210

    打开栅格数据的正确方式

    以一个简单例子说明如何打开栅格影像 下面的例子打开一副GeoTIFF影像,输出了影像的一些信息,然后遍历了所有波段,输出波段的一些信息 import gdal # 打开栅格数据集 ds = gdal.Open...('example.tif') # 获得栅格数据的一些重要信息 print(f'投影信息:{ds.GetProjection()}') print(f'栅格波段数:{ds.RasterCount}')...ndarray对象,所以我们一般是将Band对象中存储的数据转为ndarray进行处理以后,然后再写回去。...下面介绍几种转换的方法: 在Dataset级别进行转换,转换结果是一个三维数组,第一个维度是波段数 在Band级别进行转换,转换的结果是一个二维数据 使用gdal_array模块中的LoadFile()...获得第一个波段的数据 band1 = image[0] # 在波段层面的转换 for b in range(ds.RasterCount): # 注意GDAL中的band计数是从1开始的

    1.1K20

    数据智慧:C#中编程实现自定义计算的Excel数据透视表

    它可以帮助用户从原始数据中提取关键信息、发现模式和趋势,并以可视化的方式呈现。 在数据透视表中,数据分析师通常希望进行自定义计算。 例如,组合“数量”和“单价”字段即可获得“销售额”。...但是在某些情况中,需要对一些数据进行合并,比如把所有”黑龙江“的数据、”吉林“的数据和”辽宁“的数据合并在一起,并起一个新的名字叫”东北“。 而数据透视表的计算项功能则可以满足这样的业务需求。...因此小编今天为大家介绍的是如何使用Java将计算项添加到数据透视表中,具体步骤如下: 加载工作簿 创建数据透视表 将计算项添加到数据透视表 隐藏重复的名称项 保存工作簿 使用案例 现在某公司的采购经理需要基于下图...该数据可从 Excel 文件中的“销售数据”工作表中获取。...您可以对字段项进行计算,例如 计算特定产品的折扣价格 计算一个项目与其他项目相比的百分比份额 使用备用名称引用字段项目等等 如果您想了解更多有关于计算项的资料,可以点击这里查看。

    27110
    领券