一般我们参考前人的模型,比如预测使用的神经网络,一般输出结果为数组或者列表形式,但对于我们GIS和遥感专业的人来说,后面需要对其可视化,即空间数据的制图,这时就需要将输出结果转换为TIFF格式。话不多说,直接上代码:
import array import numpy as np import gdal import osr import pandas as pd from test import predict_value #predict_value为想要转为TIFF的数组 #predict_value也可以直接加载进去,如下 predict_value=pd.read_csv("需要转换的数组文件路径") # 创建一个GeoTIFF文件 filename = 'output.tif' driver = gdal.GetDriverByName('GTiff') # 设置GeoTIFF文件的维度和数据类型 cols = predict_value.shape[1] rows = predict_value.shape[0] bands = 1 datatype = gdal.GDT_Float32 # 或者其他数据类型,如gdal.GDT_Byte等 # 创建数据集 dataset=driver.Create(filename, cols, rows, 1, datatype) # 设置地理坐标系统和投影 # 例如,使用WGS 84坐标系(EPSG:4326) srs = osr.SpatialReference() srs.ImportFromEPSG(4326) dataset.SetProjection(srs.ExportToWkt()) x_min, y_max = 110.0, 30.0 # 左上角坐标(经度,纬度) pixel_width, pixel_height = 0.01, -0.01 # 分辨率(度/像素),注意负号表示Y轴向下 geo_transform = (x_min, pixel_width, 0, y_max, 0, pixel_height) dataset.SetGeoTransform(geo_transform) # 写入数据 band = dataset.GetRasterBand(1) band.WriteArray(predict_value) # 设置NoData值(如果需要的话) # band.SetNoDataValue(some_value) # 清理并保存文件 band.FlushCache() dataset = None # 确保数据写入文件并关闭数据集 print(f'GeoTIFF file {filename} has been created.')