在Python中如何将dsm.tif转换成具有shape属性的数据集并将它保存
时间: 2024-03-05 11:48:16 浏览: 123
批量shp转tif.txt
5星 · 资源好评率100%
你可以使用GDAL库中的`gdal.Open`方法读取DSM文件,然后将其转换为具有shape属性的numpy数组,最后将其保存为数据集。
以下是一个示例代码,可以将DSM文件转换为具有shape属性的数据集并保存:
```python
import gdal
import numpy as np
from osgeo import osr
# 读取DSM文件
dsm_path = 'path/to/dsm.tif'
dsm = gdal.Open(dsm_path)
# 将DSM转换为numpy数组
dsm_array = np.array(dsm.GetRasterBand(1).ReadAsArray())
# 获取DSM的地理参考信息
proj = dsm.GetProjection()
geotrans = dsm.GetGeoTransform()
# 创建新的数据集
driver = gdal.GetDriverByName('GTiff')
ds = driver.Create('output.tif', dsm_array.shape[1], dsm_array.shape[0], 1, gdal.GDT_Float32)
# 设置地理参考信息
ds.SetGeoTransform(geotrans)
ds.SetProjection(proj)
# 写入数据
ds.GetRasterBand(1).WriteArray(dsm_array)
# 保存数据集
ds.FlushCache()
```
在这个示例中,我们首先使用`gdal.Open`方法读取DSM文件。然后,我们使用`GetRasterBand`方法将DSM转换为numpy数组。接下来,我们使用`GetProjection`和`GetGeoTransform`方法获取DSM的地理参考信息。然后,我们使用`gdal.GetDriverByName`方法创建一个新的数据集,并使用`Create`方法设置数据集的大小和数据类型。我们还使用`SetGeoTransform`和`SetProjection`方法设置数据集的地理参考信息。最后,我们使用`WriteArray`方法将DSM的numpy数组写入数据集,并使用`FlushCache`方法将数据集保存到磁盘。
阅读全文