帮我写一个批量处理多波段栅格数据值提取到矢量点并转为excal的代码
时间: 2023-06-09 09:06:12 浏览: 249
很高兴为您服务!以下是一个简单的Python代码,其中使用了GDAL和numpy库来提取多波段栅格数据值并将其转换为矢量点。请注意,在运行代码之前,您需要安装GDAL库并设置正确的输入和输出文件路径。
```
import gdal
import numpy as np
import pandas as pd
# 设置输入和输出文件路径
in_file = "path/to/input-file.tif"
out_file = "path/to/output-file.xlsx"
# 打开栅格数据集
ds = gdal.Open(in_file)
# 获取栅格数据集的基本信息
cols = ds.RasterXSize
rows = ds.RasterYSize
bands = ds.RasterCount
# 定义一个空的numpy数组来存储栅格数据
data = np.zeros((rows, cols, bands))
# 逐一读取每一波段的数据并将其存储在numpy数组中
for i in range(bands):
band = ds.GetRasterBand(i+1)
data[:,:,i] = band.ReadAsArray()
# 将numpy数组转换为pandas DataFrame
df = pd.DataFrame(data.reshape(rows*cols, bands), columns=["B"+str(i+1) for i in range(bands)])
# 提取矢量点信息
points = []
for y in range(rows):
for x in range(cols):
# 获取当前像素坐标及其对应的值
px_value = df.iloc[y*cols+x]
if len(px_value.dropna()) == bands:
# 创建一个包含像素值和坐标的字典
point = {"x": x, "y": y}
for i in range(bands):
point["B"+str(i+1)] = px_value[i]
points.append(point)
# 将矢量点信息保存为Excel文件
df_out = pd.DataFrame(points)
df_out.to_excel(out_file, index=False)
```
希望这个代码对您有所帮助!如果您有任何问题,请随时告诉我。
阅读全文