通过python,nc文件转换成TIFF文件时,设置投影信息输出“0”,无法写入。

data = nc.Dataset(nc_file)  #读取nc数据
print(data.variables.keys(), '\n')   #打印出每个变量名
lon = data.variables['lon'][:] #经度
lat = data.variables['lat'][:] #纬度
var = np.array(data.variables['E'][::-1])  # 本数据读取顺序需要逆转,不然输出结果会呈现镜像现象
lonMin,latMax,lonMax,latMin = [lon.min(),lat.max(),lon.max(),lat.min()] #获取四至坐标
print(lonMin,latMax,lonMax,latMin)

#计算分辨率
N_lat = len(lat)  
N_lon = len(lon)  
lon_Res = (lonMax - lonMin) / (float(N_lon)-1)
lat_Res = (latMax - latMin) / (float(N_lat)-1)
print(var,lonMin-(lon_Res/2),latMax+(lat_Res/2),lon_Res,lat_Res)
array,originX,originY,xsize,ysize = [var,lonMin-(lon_Res/2),latMax+(lat_Res/2),lon_Res,lat_Res]  
# nc文件中的坐标是中心点坐标,tiff是左上角坐标(这样处理后的结果与专业软件转化结果一致)
    
raster = r'G:\LanCangRiver\test_data\nc_to_tiff\temp3.tif'


array1 = array.sum(axis=0)
array2 = array1[1092:1156,220:324]      #提取出区域的数据
cols = array2.shape[1] #行数
rows = array2.shape[0] #列数
print(cols)
print(rows)
driver = gdal.GetDriverByName('GTiff')
outRaster = driver.Create(raster,cols ,rows , 1, gdal.GDT_Float32)

geotransform = (originX, xsize, 0, originY, 0, -ysize)
outRaster.SetGeoTransform(geotransform)        #源代码的tiff范围
outRasterSRS = osr.SpatialReference()  #获取地理坐标系
outRasterSRS.ImportFromEPSG(4326) # 定义输出的坐标系为"WGS 84",AUTHORITY["EPSG","4326"]
outRaster.SetProjection(outRasterSRS.ExportToWkt())
outband = outRaster.GetRasterBand(1)
outband.WriteArray(array2)  #写入数据

outband.FlushCache()

 

 

 

outRaster.SetGeoTransform(geotransform)        #源代码的tiff范围
Out[44]: 0

 

输出结果为“0”,正常应该是写入数据

您好,您解决了这个问题了吗