有一幅tiff格式的地图,地图中每个像素的对应现实大小为1km×1km,像素的值代表了对应位置的海拔高度,海拔高度单位为米,编写一段python代码,提取每个像素的经纬度和海拔高度,并保存到excel文件中
时间: 2024-09-21 11:06:23 浏览: 102
tif.zip_tif_tiff_yourselff1p_编辑TIFF格式文件
为了实现这个功能,我们可以使用Python的GDAL库来处理TIFF地图文件,并结合pandas库将数据保存到Excel。首先,确保已安装了gdal和pandas库,如果没有可以使用pip安装:
```bash
pip install gdal pandas openpyxl
```
下面是一个简单的示例代码,它假设你的TIFF地图文件名为'tiff_file.tif',并生成一个名为'map_data.xlsx'的Excel文件:
```python
import gdal
import numpy as np
import pandas as pd
# 打开TIFF文件
dataset = gdal.Open('tiff_file.tif')
# 获取地理信息元数据
geotransform = dataset.GetGeoTransform()
x_size = dataset.RasterXSize
y_size = dataset.RasterYSize
projection = dataset.GetProjection()
# 创建numpy数组读取图像数据
band = dataset.GetRasterBand(1) # 假设第一层是海拔数据
image_data = band.ReadAsArray(0, 0, x_size, y_size)
# 将像素坐标转换为经纬度
pixel_x, pixel_y = np.meshgrid(np.arange(x_size), np.arange(y_size))
longitude = geotransform[0] + pixel_x * geotransform[1] + pixel_y * geotransform[2]
latitude = geotransform[3] + pixel_y * geotransform[4] + pixel_x * geotransform[5]
# 创建DataFrame并将数据组合在一起
df_map_data = pd.DataFrame({
'Latitude': latitude.flatten(),
'Longitude': longitude.flatten(),
'Elevation': image_data.flatten() / 1000 # 将高度单位从米转换为千米
})
# 保存到Excel文件
df_map_data.to_excel('map_data.xlsx', index=False)
# 关闭文件
dataset = None
阅读全文