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

Scikit-image从tif读取卫星图像,并删除具有nodata值的所有行/列

Scikit-image是一个基于Python的图像处理库,它提供了许多图像处理和计算机视觉算法。它可以用于读取、处理和分析卫星图像。

对于从tif文件中读取卫星图像,并删除具有nodata值的所有行/列,可以按照以下步骤进行操作:

  1. 导入必要的库和模块:
代码语言:python
复制
import numpy as np
from skimage import io
  1. 使用io.imread()函数读取tif文件:
代码语言:python
复制
image = io.imread('path/to/image.tif')
  1. 获取图像的行数和列数:
代码语言:python
复制
rows, cols = image.shape[:2]
  1. 定义nodata值(如果已知):
代码语言:python
复制
nodata_value = 0  # 假设nodata值为0
  1. 创建一个布尔掩码,标记具有nodata值的像素:
代码语言:python
复制
mask = image == nodata_value
  1. 检查每一行和每一列是否都包含nodata值,并删除包含nodata值的行/列:
代码语言:python
复制
valid_rows = np.all(~mask, axis=1)
valid_cols = np.all(~mask, axis=0)

image = image[valid_rows, :]
image = image[:, valid_cols]
  1. 可选:保存处理后的图像到新的tif文件:
代码语言:python
复制
io.imsave('path/to/processed_image.tif', image)

这样,你就可以使用Scikit-image从tif文件中读取卫星图像,并删除具有nodata值的所有行/列了。

关于Scikit-image的更多信息和使用方法,你可以参考腾讯云的图像处理服务-图像处理(Scikit-image)文档:https://cloud.tencent.com/document/product/867/17752

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 EarthPy 堆叠和裁剪tif栅格数据

堆叠多波段影像 一些遥感数据集与每个波段一起存储在单独文件中。然而 通常,您希望在分析中同时使用所有波段。例如 您需要将所有条带放在同一个文件或“堆栈”中才能绘制颜色 RGB图像。...您是否注意到任何可能影响拉伸极端 图像?...= plotting_extent( array_nodata[0], raster_prof_nodata["transform"] ) 绘制未裁剪数据(掩码后) 删除 nodata 后...然后,循环浏览您要裁剪每个文件裁剪图像,然后 将其写出到文件中。获取创建栅格并将它们堆叠起来,就像 您在前面的示例中堆叠了条带。...''es.crop_all()'' 是一种快速裁剪图像所有波段有效方法。 该函数会将裁剪栅格写入 目录返回文件路径列表,然后可以与 ''es.stack()''。

5910

基于PythonTensorflow卫星数据分类神经网络

卫星数据一般问题: 卫星数据中两个或更多要素类(例如,建造/贫瘠/采石场)可具有相似的光谱,这使得该分类在过去几十年中成为具有挑战性任务。...然而,并非所有的分类图像都是真正房屋,这被称为低精度。同样,如果使用绿线,所有分类为房屋图像都是房屋; 因此,分类器具有高精度。在这种情况下召回次数会减少,因为还有三所房子被遗漏了。...将所有三个文件放在一个目录中 - 在脚本中分配路径和输入文件名,读取GeoTIFF文件。...,班加罗尔图像行数和数是相同,并且多光谱图像层数是相同。...该模型将基于所有频带上相应DN来学习确定像素是否构建,因此,多光谱图像具有以相同顺序堆叠相同数量特征(频带)。

3.2K51

Python忽略NoData求取多时相遥感影像平均值

本文介绍基于Python中whitebox模块,对大量长时间序列栅格遥感影像每一个像元进行忽略NoData多时序平均值求取。   ...但是这一方法具有一个问题,即对于任意一个像元,只要该像元在任意一个时相图像中是无效(即为NoData),那么该像元在最终求出平均值结果图中像素也将会是无效NoData。...这就导致在我们最终计算得到平均值结果图层中,具有很多空白区域(像素NoData区域)。   ...这里相信大家也看到了为什么我们要在前期先将文件夹中文件按照“名称”排序——是为了保证同一年成像所有遥感影像都排列在一起,遍历时只要遇到一个新年份,程序就知道上一个年份所有图像都已经遍历完毕了,就可以将上一个年份所有栅格图像加以平均值求取...如果是的话,就需要将当前成像年份所有图像进行平均值求取,宣告代码完成运行。

18020

Python | GDAL处理影像

: 读取起点,默认为0 win_xsize: 要读取数,默认读取所有 win_ysize: 要读取行数,默认读取所有 buf_xsize: 输出数组里数,默认用win_xsize,...如果需要,数据将会重采样以适应这个数组,将会转换为这种数组类型。 读取部分数据集举例: 第1400,6000开始,读取63,不做重采样 注意读取数据数组下标不要越界!...流程如下: 用ReadAsArray逐块读取数据举例 处理1113栅格数据 块大小为55 在右边界自动转换为3 在下边界自动转换为1 # 逐块处理大数据案例 # 将数字高程模型单位米转换为英尺...文件,读取文件尺寸,块大小,nodata等属性 in_ds = gdal.Open('gt30w140n90.tif') in_band = in_ds.GetRasterBand(1) xsize...[, ],与GDAL恰恰相反,GDAL为[]!

4.3K31

R语言raster包读取栅格遥感影像

本文介绍基于R语言中raster包,读取单张或批量读取多张栅格图像对栅格图像数据加以基本处理方法。...前面我们提到了na.rm = TRUE参数,这一参数表示是否消除数据集中无效NA影响;如果我们不将其设置为TRUE,那么就表示不消除数据集中无效;而如果我们栅格图像中出现无效NoData...这里需要注意,如果通过这种方法批量读取栅格图像,需要保证每一景图像空间参考信息、行数与数完全一致,否则会弹出报错信息。...如果大家栅格图像行数与数不完全一致,可以参考文章ArcPy栅格裁剪:对齐多个栅格图像范围、统一数与数,对各个栅格图像加以统一。...可以看到,这一变量中保存了12个图层(虽然栅格图像只有7景,但是其中有几景是具有多个波段);其中,除了最基本栅格图像维度、空间范围、空间参考信息等内容,names还展示了12个图层各自名称,min

36920

R语言遍历不同文件夹计算各文件夹内栅格图像平均值

本文介绍基于R语言中raster包,遍历读取多个文件夹下多张栅格遥感影像,分别批量对每一个文件夹中多个栅格图像计算平均值,并将所得各个结果栅格分别加以保存方法。   ...执行上述前3代码后,得到tif_folder结果如下图所示。   可以看到,tif_folder是一个字符串,其中每一个元素都是每一个小文件夹路径。   ...;接下来,就是读取全部遥感影像,计算其平均值;这里具体代码解释大家可以参考文章R语言计算大量栅格图像平均值、标准差。...此外需要注意是,由于我这里每一景遥感影像原本没有专门设置NoData,而是用-10000作为其NoData,因此需要通过NAvalue(tif_file_all) <- -10000这句代码,将为...-10000像元作为NoData像元,防止后期计算平均值时对结果加以干扰。

29730

Python ArcPy求取长时间序列栅格影像逐像元平均值

()函数,获取路径下原有的全部.tif格式图像文件,截取第一个文件部分文件名,从而获取其成像时间具体年份。   ...,那么就对这8景遥感影像加以逐像元平均值求取,开始对下一个年份(即2005年)成像遥感影像继续加以计算;如果还没有读取完毕,例如假如2001年成像8幅遥感影像目前仅遍历到了第5幅,那么就不求平均值...这里相信大家也看到了为什么我们要在前期先将文件夹中文件按照“名称”排序——是为了保证同一年成像所有遥感影像都排列在一起,遍历时只要遇到一个新年份,程序就知道上一个年份所有图像都已经遍历完毕了,就可以将上一个年份所有栅格图像加以平均值求取...如果是的话,就需要将当前成像年份所有图像进行平均值求取,宣告代码完成运行。   在 IDLE (Python GUI) 中运行代码。代码运行完毕后,我们看一下结果文件夹。...在最后,还需要说明一点——用以上代码来求取长时间序列遥感影像像元平均值,对于任意一个像元,只要该像元在任意一个时相图像中是无效(即为NoData),那么该像元在最终求出平均值结果图中,像素也将会是无效

23210

栅格数据实现地理探测器:基于R语言geodetector包

读取栅格数据完毕后,我们通过如下代码,基于getValues()函数,原本RasterStack格式数据中,将栅格数据像元数值提取出来;随后,基于View()函数显示出这一变量。...可以看到,此时tif_file_all_matrix变量是一个3、6377265矩阵(Matrix)数据;其中,每一表示每一个图层数据,每一则是每一个图层在同一空间位置上各自像元数值。...从上图可以看出,每一数据中都有很多无效(NA),即原本栅格图像无效NoData);由于在后期地理探测器分析过程中,出现无效会影响我们分析结果,因此我们需要通过na.omit()函数将无效去除...na.omit()是一个非常方便函数,其可以将Matrix数据中存在NA直接去除(只要这一中存在至少一个NA,就将这一去除)。...当然,外观上看,其和Matrix格式变量tif_matrix其实长得是一样

35510

ArcPy批量填充栅格图像NoData

在处理栅格图像文件时,我们经常会遇到图像中存在有无效(即NoData情况。...在一些情况下,这些无效可能会对我们后续图像处理操作带来很多麻烦。那么,我们可以通过代码,对大量存在NoData栅格图像进行无效填充。   首先,我们来明确一下本文具体需求。...现有一个存储有多张.tif格式遥感影像文件夹,且文件夹内除了.tif格式遥感影像文件外,还具有其它格式文件。   ...首先,我们利用arcpy.ListRasters()函数,获取路径下原有的全部.tif格式图像文件;接下来,遍历tif_file_path路径下全部.tif格式图像文件,分别执行arcpy.sa.Con...通过对比,我们可以看到填充后图像空白区域(NoData区域)已经明显较之填充前图像有了很大程度减少(图像右下角尤为明显)。

29820

栅格数据创建与保存

:param np_array: ndarray数组 :param driver: 文件格式驱动 :param prototype: 文件原型 :param xsize: 图像数...dtype: 数据存储类型 :param nodata: NoData元数据 """ # 创建要写入数据集(这里假设只有一个波段) # 分两种情况:一种给定了数据原型...在使用该函数时候,要么传进去一个prototype原型数据集,要么传进去transform和projection等信息,这样写入文件才具有空间参考。...我们首先计算NDVI,然后通过从原始数据中读取空间投影和空间变换六元组信息创建输出文件;然后再计算DVI,通过NDVI文件作为原型数据集,以创建DVI输出数据集。...ds.RasterXSize # 图像数 y_size = ds.RasterYSize # 图像行数 proj = ds.GetProjection() # 返回是WKT格式字符串 trans

1.6K11

R语言批量拼接遥感影像

本文介绍基于R语言中raster包,遍历文件夹,读取文件夹下大量栅格遥感影像,逐一对每一景栅格图像加以拼接、融合,使得全部栅格遥感影像拼接为完整一景图像方法。   ...此外,由于mosaic()函数在运行时,除了两个栅格对象(Raster* object)类型参数,还有其他一些辅助参数,比如拼接时重叠区域该如何处理、处理时是否考虑NoData影响等;由于我们时通过...因此,我们可以通过$运算符,将mosaic()函数所需要其他参数一放入tif_file_list中,在后期do.call()函数调用mosaic()函数时,将同时读取这些参数,起到将参数传递到mosaic...其中,在本文中我们需要指定mosaic()函数fun参数与na.rm参数,二者分别是指拼接时重叠区域像元计算方法,以及计算重叠区域像元时,是否考虑NoData影响;我们将这2个参数分别设定为...max与TRUE,二者分别是指重叠区域像元以2景遥感影像中最大像元为准,以及在计算时不考虑NoData影响。

23810

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

1.2 栅格图像文件名读取与配对   接下来,需要将全部待处理栅格图像用os.listdir()进行获取,并用for循环进行循环批量处理操作准备。...1.4 栅格文件数据与信息读取   接下来,利用gdal模块对.tif与.hdf等两种栅格图像加以读取。...其中,gdal.Open()读取栅格图像;.RasterCount获取栅格图像波段数量;.ReadAsArray()将栅格图像各波段信息读取为Array格式,当波段数量大于1时,其共有三维,第一维为波段个数...QA波段;.GetRasterBand(1)表示获取栅格图像第一个波段(注意,这里序号不是0开始而是1开始);np.where(rt_lai_array>30000,np.nan,rt_lai_array...这一步骤是消除图像中填充值、Nodata方法。最后一句*0.001是将图层原有的缩放系数复原。   其次,上述代码第三段为获取栅格数与投影变换信息。

24240

使用scikit-image遥感图像geotiff格式转mat格式

首先pip安装scikit-image包,或者直接使用pycharm安装 scikit-image包含一下相关子模块,这里我们使用io模块实现格式转换,输入geotiff具有很多个波段。...子模块名称 主要实现功能 io 读取、保存和显示图片或视频 data 提供一些测试图片和样本数据 color 颜色空间变换 filters 图像增强、边缘检测、排序滤波器、自动阈值等 draw 操作于numpy..." #geotiff outputgeotiff_path=r"D:\gt00cls00.mat" #tiff #图像读取 imggt=skimage.io.imread(inputgeotiff_path...,查阅了相关资料,应该是支持,也试用过其他三通道tif格式小图片,可以正常运行。...安装过程中,网络总是不稳定,最后使用手机移动网络连接实现安装。 其他说明 这里imggt是mat文件key,需要注意记录一下,后期读取是都是需要用到,最好设置和文件名称一致,方便记忆。

15910

NASA数据集—— 1987-2012 年期间北极极地脆弱性实验(ABoVE)核心域中火灾数据集

该产品使用土地覆被产品来区分扰动对森林或非森林土地覆被影响(Wang 等人,2019a)。 1985 年到 2012 年,每年都会提供用于推导干扰因果关系 dTC 图像。...该产品使用土地覆盖产品来区分扰动对森林或非森林土地覆盖影响(Wang 等人,2019a)。 1985 年到 2012 年,每年都会提供用于推导干扰因果关系 dTC 图像。...数据文件细节 所有数据分辨率均为 30 米,按 6000 x 6000 组合,并以标准 ABoVE 投影 "加拿大阿尔伯斯等面积圆锥形"(EPSG:102001)绘制。...表名为 BhXXvZZ_ABoVE_disturbance_agents.tif 文件单元格。...利用这些辅助数据集以及谷歌地球和陆地卫星图像高分辨率图像,收集了 1900 个单位分层随机样本参考数据(图 3)。

3700

使用ArcGIS Python检测洪水影响区域

解决此问题常用方法是使用直方图阈值化(histogram thresholding),这是一种常见图像处理技术,用于将图像转换为二图像。...该技术基于图像像素分布,通过选择适当阈值来将图像像素分为两个类别,通常是前景和背景( 0 或 1)。 直方图阈值化过程涉及计算图像像素直方图,该直方图显示了不同像素频率分布。...通过分析直方图形状和峰值,可以选择一个合适阈值来将图像分割为两个部分。所有低于阈值像素被标记为一个类别(通常是背景),而高于阈值像素被标记为另一个类别(通常是前景)。...生成栅格将具有三个可能: 像素 说明 0 两个指数均未将其识别为水像素 1 只有一个指数标记为水像素 2 两个指数均将其识别为水像素 可以将结果视为置信度栅格。...执行此操作一种方法是手动,右键单击单个图层单击移除。您还可以使用 Python 代码删除所有临时层。

26911

工具 | ImagePy——UI界面支持开放插件Python开源图像处理框架

如果你更喜欢 IJ 样式,请尝试使用「 Windows -> Windows Style 」来切换 ImagePy: 具有用户友好界面; 可以读取/保存各种格式图像数据; 支持 ROI 设置...、绘图、测量和其他鼠标操作; 可以执行图像滤波、形态学操作和其他常规操作; 可以进行图像分割、区域计数、几何测量和密度分析; 能够对图像中提取参数进行相关数据分析、滤波、统计分析等。...ps:ImagePy 支持 bmp、jpg、png、gif、tif 和其他常用文件格式。通过安装 ITK 插件,还可以读取/保存 dicom、nii 和其他格式医学图像。...ImagePy 支持表 I/O(xls、xlsx、csv)、过滤、切片、统计分析、排序等等(右键单击标题来设置文本颜色、小数精度、样式等)。 ?...表数据是当前表中一个 pandas.DataFrame 对象,存储在 tps 中。还可以 tps 检索其他信息,例如 tps.rowmsk、tps.colmsk,以获得当前选定表掩码。

1.5K20

打开栅格数据正确方式

以一个简单例子说明如何打开栅格影像 下面的例子打开一副GeoTIFF影像,输出了影像一些信息,然后遍历了所有波段,输出波段一些信息 import gdal # 打开栅格数据集 ds = gdal.Open...)}') # DataType属性返回是数字 print(f'NoData:{band.GetNoDataValue()}') # 很多影像都是NoData,我们在做数据处理时要特别对待...(宽度):4800 栅格行数(高度):4800 AREA_OR_POINT -> Area 数据类型:Int16 NoData:-28672.0 统计(最大最小):(-435.0, 6134.0...) 数据类型:Int16 NoData:-28672.0 统计(最大最小):(-468.0, 6265.0) 数据类型:Int16 NoData:-28672.0 统计(最大最小):(21.0...获得第一个波段数据 band1 = image[0] # 在波段层面的转换 for b in range(ds.RasterCount): # 注意GDAL中band计数是1开始

1K20

R语言计算大量栅格图像平均值、标准差

本文介绍基于R语言中raster包,批量读取多张栅格图像,对多个栅格图像计算平均值、标准差,并将所得新栅格结果图像保存方法。   ...在文章R语言raster包读取栅格遥感影像中,我们介绍了基于R语言raster包,对单张或多张栅格图像加以平均值、标准差计算方法;但这一篇文章中标准差计算方法仅仅可以对一张栅格图像全部像元加以计算...首先,我们按照文章R语言raster包读取栅格遥感影像中提到方法,配置、加载raster包,通过stack()函数读取同一文件夹下全部栅格图像,具体代码如下所示。...当然,前述提到文章R语言raster包读取栅格遥感影像中方法也是可以对多个栅格图像计算平均值。...(NoData),则这一像元在最终结果图像中同样为无效;若希望忽略无效这一影响,可以将上述第一句代码修改为如下格式。

49720
领券