使用深度学习python代码实现shapefile点文件空间插值为Geotiff栅格文件
时间: 2024-06-11 15:06:27 浏览: 174
geotiffinterp:地理参考 TIFF 栅格数据的快速插值。-matlab开发
以下是使用Python实现shapefile点文件空间插值为Geotiff栅格文件的代码:
```python
import numpy as np
import gdal
import ogr
from scipy.interpolate import griddata
# 读取shapefile点文件
point_file = ogr.Open('points.shp')
point_layer = point_file.GetLayer()
point_feature = point_layer.GetNextFeature()
# 获取点文件数据
x = []
y = []
z = []
while point_feature:
geometry = point_feature.GetGeometryRef()
x.append(geometry.GetX())
y.append(geometry.GetY())
z.append(point_feature.GetField('Value'))
point_feature = point_layer.GetNextFeature()
# 定义栅格文件的空间范围、分辨率和投影
xmin, xmax, ymin, ymax = min(x), max(x), min(y), max(y)
resolution = 0.01
cols = int(np.ceil((xmax - xmin) / resolution))
rows = int(np.ceil((ymax - ymin) / resolution))
geo_transform = (xmin, resolution, 0, ymax, 0, -resolution)
srs = point_layer.GetSpatialRef()
# 插值
xi = np.linspace(xmin, xmax, cols)
yi = np.linspace(ymin, ymax, rows)
zi = griddata((x, y), z, (xi[None, :], yi[:, None]), method='cubic')
# 创建栅格文件
driver = gdal.GetDriverByName('GTiff')
output_file = driver.Create('output.tif', cols, rows, 1, gdal.GDT_Float32)
output_file.SetGeoTransform(geo_transform)
output_file.SetProjection(srs.ExportToWkt())
# 将插值结果写入栅格文件
band = output_file.GetRasterBand(1)
band.WriteArray(zi)
band.FlushCache()
```
在这个示例中,我们使用了GDAL、OGR和SciPy库来读取、插值和写入栅格数据。首先,我们使用OGR打开shapefile点文件,并读取其中的x坐标、y坐标和值数据。然后,我们使用这些数据来定义栅格文件的空间范围、分辨率和投影。接下来,我们使用SciPy的griddata函数来对点数据进行插值,得到栅格数据。最后,我们使用GDAL创建栅格文件,并将插值结果写入其中。
阅读全文