Tif 至 CSV
最编程
2024-03-01 19:39:28
...
# coding UTF-8
from osgeo import gdal
from pylab import * # 支持中文
from openpyxl import Workbook
import csv
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 创建一个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 = r'D:\datasum\ndvi\\ndvi199911.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 # 438
row = dataset.RasterYSize # 671
band = dataset.RasterCount
dem = dataset.GetRasterBand(1).ReadAsArray()
# 获取行列数,对应其经纬度,j对于x坐标
with open('NDVI全国.csv', 'a', newline='') as fp:
writer = csv.writer(fp, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
writer.writerow(['经度', '纬度', 'ndvi', '栅格列',"栅格行"])
for y in range(row): # 行
rows = []
print(y,'have been writed')
for x in range(col): # 列
# 有效高程
if dem[y][x] > 0:
# 输出经纬度
lon = geo_information[0] + x * geo_information[1] + y * geo_information[2]
lat = geo_information[3] + x * geo_information[4] + y * geo_information[5]
writer.writerow([lon, lat, dem[y][x], y, x])
print('表已经生成')
用Arcgis时,想把tif转换成CSV格式,代码如上
上一篇: Navicat 导出整个数据库(可以直接迁移,不会因为外键关系导致无法导入)
下一篇: 如何解决 GIS 表格到 Excel 超过 65535 行的最大限制 - 二、解决表格到 Excel 超过限制的问题
推荐阅读
-
上市公司A股和H股交叉上市数据(更新至2022年)
-
如何将电脑开关电缆连接至主板
-
TOP 是你真正应该入手的 Sun_Red 至核 BM 风格物品吗?
-
莫兰迪颜色表和 RGB 至十六进制颜色转换连接
-
2009 年至 2022 年期间英国(国家电网)的历史耗电量
-
C# 读/写 16 位 tif 图像灰度数据
-
minipcie 至 nvme,msata 至 ngff sata "建议收藏"。
-
iPad 无法启动,卡在白色 Apple 启动屏幕,请尝试更新至 iPadOS 16.1
-
iOS】设计尺寸规格(更新至 iPhone 11、iPhone 11 Pro、iPhone 11 Pro Max)
-
Centos7 升级 openssl 至 openssl1.1.1