如何加载自己的遥感影像(tiff格式)数据集

这里使用gdal库

下面是将tiff格式转为tensor格式的模块

将此模块放在一个python文件下

import torch
import os
import numpy as np
from osgeo import gdal
from torch.utils.data import Dataset


# 定义获取文件的方法
class WaterDataSet(Dataset):
    def __init__(self, images_dir, labels_dir):
        self.images = self.read_muitiband_images(images_dir)    # 调用下面的方法加载遥感影像
        self.labels = self.read_water_labels(labels_dir)        # 调用下面的方法加载加载数据集
    # 加载images 方法
    def read_muitiband_images(self,images_dir):
        images = []     # 为images 创建一个空数组
        imgs = os.listdir(images_dir)
        for img in imgs:        # 遍历整个包含image的文文件夹
            filetype = os.path.splitext(img)[-1]    # filetype 返回文件的格式
            if filetype == '.tif':      # 判断是否为tiff格式的图像
                img_path = os.path.join(images_dir, img)    # 如果是tiff,将文件路径拼接
                rsdl_data = gdal.Open(img_path)     # 采用gdal.Open()的方法打开文件
                # 将数据源的各个波段堆叠为一个数组,np.stack()用于堆叠数组, axis=0 表示按照第一个维度,即波段维度
                #[……]中,rsdl_data 为需要处理的遥感影像;
                # .GetRasterBand(i).ReadAsArray() for…… 遍历图像的每个波段,将波段数据以二维数组的形式输出
                images.append(np.stack([rsdl_data .GetRasterBand(i).ReadAsArray() for i in range(1,7)],axis=0))
        return images
    # 加载labels的方法,与读取images类似
    def read_water_labels(self,labels_dir):
        labels = []
        labs = os.listdir(labels_dir)
        for lab in labs:
            filetype = os.path.splitext(lab)[-1]
            if filetype == '.tif':
                lab_path = os.path.join(labels_dir, lab)
                rsdl_data = gdal.Open(lab_path)
                labels.append(np.stack(rsdl_data .GetRasterBand(1).ReadAsArray()))
        return labels
    # 返回数据集长度
    def __len__(self):
        return len(self.images)
    # 实现定义数据的索引操作,并将图像返回给tensor张亮
    def __getitem__(self, idx):
        image = self.images[idx]
        label = self.labels[idx]
        return torch.tensor(image), torch.tensor(label)

读取该模块,导入文件

from reading import *
from torch.utils.data import DataLoade, Subset

# 获取数据集的影像和标签
images_dir = 'your images path'
labels_dir = 'your labels path'

# 将数据集使用WaterDataset()类实现对数据集格式的转换
dataset = WaterDataSet(images_dir, labels_dir)
len_deatset=len(dataset) # 获取数据集的长度
# 将数据集分为训练集和测试集
trainset = Subset(dataset, list(range(len_deatset//5*4)))
testset = Subset(dataset, list(range(len_deatset//5*4, len_deatset)))

# 每次使用一个样本进行数据更新,随机抓取数据
trainloader = DataLoader(trainset, batch_size=1, shuffle=True)
testloader = DataLoader(testset, batch_size=1, shuffle=True)

调式代码,可以看到结果

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 遥感卫星数据格式主要用于存储和传输从遥感卫星获取的影像数据。常见的遥感卫星数据格式包括TIFF、JPEG、PNG、GEOTIFF等。 TIFF格式(Tagged Image File Format)是一种灵活的、无损的图像文件格式,广泛用于存储遥感卫星影像数据。TIFF格式支持多通道、多波段的数据存储,并且可以存储元数据信息,如地理坐标、波段信息等。由于TIFF格式具有较高的数据质量、完整性和灵活性,因此被广泛应用于遥感领域。 JPEG格式(Joint Photographic Experts Group)是一种有损的图像文件格式,通常用于存储高分辨率的卫星影像数据。JPEG格式可以通过调整压缩比来平衡图像质量和文件大小,适用于网络传输和存储。然而,在进行JPEG格式压缩时,会丢失一定的细节和信息,因此不适合用于一些需要精确测量和分析的遥感应用。 PNG格式(Portable Network Graphics)是一种无损的图像文件格式,它支持透明度的设置,适用于存储遥感卫星影像的分割结果、分类标签等。PNG格式在保持图像质量的同时,具有较小的文件大小,适合用于网络传输和存储。 GEOTIFF格式是在TIFF格式的基础上扩展而来的,可以存储地理坐标和辅助数据等地理信息。GEOTIFF格式将地理坐标与影像数据进行关联,使得影像数据的地理位置可以被准确地定位和分析。 总之,遥感卫星数据格式的选择应根据具体的应用需求来进行。不同的格式具有不同的特点和适用范围,需要根据数据的质量要求、大小限制、分析需求等因素综合考虑。 ### 回答2: 遥感卫星数据格式是一种用于存储和传输遥感卫星数据的特定格式。CSDN是中国最大的IT社区,提供各种技术文章和资源。在CSDN上,可以找到关于遥感卫星数据格式的相关文章和教程。 遥感卫星数据格式通常包括影像数据和元数据两个部分。影像数据是指卫星拍摄到的图像信息,可以包括多光谱、高光谱或合成孔径雷达等类型的数据。元数据则是与图像数据相关的信息,如图像的时间、分辨率、坐标系统等。这些数据格式可以是开放式的,如TIFF、JPEG或GeoTIFF等,也可以是专有格式,如ENVI或HDF等。 CSDN作为一个技术交流平台,提供了丰富的遥感卫星数据格式的相关文章、代码和工具。在CSDN上,可以找到关于如何读取、处理和分析不同格式的遥感卫星数据的教程。同时,也有很多专业人士在CSDN上分享了自己的经验和技巧,帮助其他人更好地理解和应用遥感卫星数据格式。 总之,CSDN是一个对于遥感卫星数据格式有兴趣的人来说非常有价值的资源。在这里,可以找到各种关于遥感卫星数据格式的文章、教程和工具,帮助我们更好地理解和应用这些格式。无论是初学者还是专业人士,都可以在CSDN上获取到自己需要的资料和帮助。 ### 回答3: 遥感卫星数据格式是指遥感卫星获取的地球表面信息在传输和存储过程中所采用的编码方式和数据结构。常见的遥感卫星数据格式包括TIF、JPEG、ENVI、HDF等。 TIF(Tagged Image File Format)是一种广泛应用于遥感图像的无损压缩格式,能够保存图像中的元数据,如分辨率、波段等信息,较为常见且易于处理。 JPEG(Joint Photographic Experts Group)是一种常用的有损压缩格式,适用于色彩变化较大的图像。JPEG格式压缩后的文件体积相对较小,但牺牲了一定的图像质量,因此适合于网络传输和存储。 ENVI(Environment for Visualizing Images)是一种用于遥感卫星数据的专用格式,提供了较为灵活和丰富的数据处理和分析功能。ENVI格式能够保存遥感图像的多个波段信息,并包含了大量地理空间参考和属性信息。 HDF(Hierarchical Data Format)是一种用于存储和处理大规模科学数据的格式,能够以层次化的方式组织数据,适用于遥感卫星数据等大数据集的存储和访问。HDF格式除了可以保存图像数据外,还可以保存其他类型的数据,如时间序列、地理坐标等。 总之,遥感卫星数据格式在不同应用场景下有不同的选择,选择合适的数据格式可以方便地进行数据处理和分析,并确保数据的可靠性和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值