python学习3:读取nc格式数据并转换为tif格式

# -*- 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
  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值