# -*- coding: utf-8 -*-
import netCDF4 as nc
import matplotlib.pyplot as plt
import numpy as np
from osgeo import gdal, osr, ogr
import os
nc_obj = nc.Dataset(
r'F:\nc\nc文件.nc')
print(nc_obj.variables.keys())
for i in nc_obj.variables.keys():
print(i)
print('---------------------------------------------------')
lon = nc_obj.variables['lon'][:]
lat = nc_obj.variables['lat'][:]
re = np.asarray(nc_obj.variables['c'])
# 影像的左上角和右下角坐标
lonMin, latMax, lonMax, latMin = [lon.min(), lat.max(), lon.max(), lat.min()]
# 计算分辨率
N_Lat = len(lat)
N_Lon = len(lon)
lon_res = (lonMax-lonMin)/(float(N_Lon)-1)
Lat_res = (latMax-latMin)/(float(N_Lat)-1)
dt = nc_obj.id
print(dt)
# 创建tiff
path = r'F:\tif'
driver = gdal.GetDriverByName('GTiff')
out_tif_name = path + '\\' + 'c_223.tif'
out_tif = driver.Create(out_tif_name, N_Lon, N_Lat, 1, gdal.GDT_Float32)
# 设置影像显示范围
geotransform = (lonMin, lon_res, 0, latMax, 0, -Lat_res)
out_tif.SetGeoTransform(geotransform)
# 获取地理坐标系统信息
srs = osr.SpatialReference()
srs.ImportFromEPSG(4326)
out_tif.SetProjection(srs.ExportToWkt())
# 去除异常值
re[re[:, :] == -32768] = -99
# 数据写出
out_tif.GetRasterBand(1).WriteArray(re)
out_tif.GetRatserBand(1).SetNoDataValue(-99)
out_tif.FlushCache()
del out_tif
python学习3:读取nc格式数据并转换为tif格式
最新推荐文章于 2024-01-26 12:15:13 发布