Tiff 文件读取 及转化为excel 文件

您所在的位置:网站首页 把图片数据导入表格 Tiff 文件读取 及转化为excel 文件

Tiff 文件读取 及转化为excel 文件

2024-07-13 07:16| 来源: 网络整理| 查看: 265

最近AI+环境论文需要收集各种类型的GIS格式,尝试对收集到的tiff文件格式数据进行处理,试图将其转成自己想要的excel格式数据方便之后进一步的深度学习处理。

Tiff格式介绍

tiff 是一种存储多维数据的无损图像格式,属于位图格式,全名是Tag Image File Format。

Tiff格式优点:

TIFF格式允许在单个文件中存储多个图像,每个图像可以是单独的页面。这使得TIFF在文档扫描和传真等领域非常有用。TIFF文件可以包含丰富的元数据信息,如图像的分辨率、色彩配置、作者信息等。由于TIFF是一种广泛支持的格式,几乎所有的图像编辑软件和操作系统都能够读取和写入TIFF文件。TIFF 格式支持更高维度的图像,比如带有深度信息的三维体素数据(通常在科学和医学图像处理中使用),或者多页 TIFF,其中每一页可以被视为一个额外的维度。这使得 TIFF 可以存储序列图像(例如扫描的文档的各个页面)或者帧序列(例如动画或视频的各个帧)。

Tiff格式读取及处理

使用python 读取 tiff文件 

python 读取tiff 文件需要下载gdal库文件,可以在github网站下载(但我没找到whl文件的下载地址),使用conda下载gdal成功了。

复习一些知识方便对tiff图像进行裁剪,减少运算时间(我也是发现代码一直运行不成功才想到应该减少一些不必要的计算,建议对着图片筛选自己需要的地方)

>>> range(10) # 从 0 开始到 9 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1, 11) # 从 1 开始到 10 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

参考了其他博主的代码 仅仅作为笔记

# coding UTF-8 from osgeo import gdal from pylab import * # 支持中文 mpl.rcParams['font.sans-serif'] = ['SimHei'] from openpyxl import Workbook # 创建一个Workbook对象 work = Workbook() def out(data, name): ws = work.active ws['A1'] = '经度' ws['B1'] = '纬度' ws['C1'] = '高程' ws['D1'] = '所在栅格行' ws['E1'] = '所在栅格列' for i in range(len(data)): rows = [] row_length = len(data[i]) if row_length != 0: for j in range(row_length): rows.append(data[i][j]) ws.append(rows[j]) print(rows) work.save(name) if __name__ == "__main__": filePath = 'K:/GLC_FCS30_2020_E120N35.tif' # tif文件路径 dataset = gdal.Open(filePath) # 打开tif # 获取行数列数和地理信息 # geo_information(0):左上像素左上角的x坐标。 # geo_information(1):w - e像素分辨率 / 像素宽度。 # geo_information(2):行旋转(通常为零)。 # geo_information(3):左上像素左上角的y坐标。 # geo_information(4):列旋转(通常为零)。 # geo_information(5):n - s像素分辨率 / 像素高度(北半球上图像为负值) geo_information = dataset.GetGeoTransform() col = dataset.RasterXSize row = dataset.RasterYSize #18554 band = dataset.RasterCount dem = dataset.GetRasterBand(1).ReadAsArray() # 获取行列数,对应其经纬度,j对于x坐标 cols = [] for y in range(11590,14388): # 行 rows = [] for x in range(4278,7846): # 列 # 有效高程 if dem[y][x] > 0: # 输出经纬度 # 具体计算还需要您多思考一下 是加是减 对应着自己的tiff图像多看看再修改一下 lon = geo_information[0] + x * geo_information[1] + y * geo_information[2] lat = geo_information[3] + x * geo_information[4] + y * geo_information[5] child = [lon, lat, dem[y][x], y, x] rows.append(child) cols.append(rows) out(cols, 'GLC_FCS30_2020_E120N35.xlsx') print('表已经生成') 上面介绍的转换公式应该很好理解,也是tiff文件中会携带的像素和位置信息。

ModelTiepointTag

matlab 读取 tiff文件 常用命令

此 MATLAB 函数返回一个结构体,该结构体的字段包含有关图形文件 filename 中的图像的信息。

info = imfinfo(filename) info = imfinfo(filename,fmt)

熟悉matlab操作的朋友可以试试用matlab来进行处理

ModelTiepointTag

Arcgis 读取 tiff 文件 常用命令

但我感觉arcgis读取的文件依旧需要自己自行进行转换成excel格式,于是没有研究



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3