帮我写一下python代码实现气象站点shp文件将文件夹内所有栅格数据多值提取到点,并按照栅格文件名写入EXCEL表
时间: 2023-03-28 20:04:46 浏览: 135
使用python提取html文件中的特定数据的实现代码
5星 · 资源好评率100%
可以的,以下是Python代码实现气象站点shp文件将文件夹内所有栅格数据多值提取到点,并按照栅格文件名写入EXCEL表的方法:
```python
import os
import shapefile
import pandas as pd
import numpy as np
from osgeo import gdal
# 设置工作目录
os.chdir(r'path/to/folder')
# 读取shp文件
sf = shapefile.Reader('station.shp')
# 获取站点坐标
records = sf.records()
points = [list(point) for point in sf.shape().points]
# 获取栅格文件列表
raster_files = [file for file in os.listdir() if file.endswith('.tif')]
# 遍历栅格文件,提取多值到点
data = {}
for file in raster_files:
# 读取栅格数据
raster = gdal.Open(file)
band = raster.GetRasterBand(1)
array = band.ReadAsArray()
# 获取栅格文件名
name = os.path.splitext(file)[]
# 遍历站点,提取多值
values = []
for point in points:
x, y = point
row, col = raster.GetGeoTransform()[], raster.GetGeoTransform()[3]
i, j = int((x - row) / raster.GetGeoTransform()[1]), int((y - col) / raster.GetGeoTransform()[5])
value = array[j][i]
values.append(value)
# 将多值写入字典
data[name] = values
# 将字典转换为DataFrame
df = pd.DataFrame.from_dict(data)
# 将DataFrame写入Excel表
df.to_excel('output.xlsx', index=False)
```
希望这个代码可以帮到你!
阅读全文