- 积分
- 1020
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2018-1-26
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 南极的七色鹿 于 2022-4-12 18:14 编辑
(23条消息) 将GEE输出的tif图像转存为nc文件_cs12ab的博客-CSDN博客_tif转nc
一、将tif转变为nc文件
from osgeo import gdal
import xarray as xr
import matplotlib.pyplot as plt
def tiff2nc(path):
data = gdal.Open("temp_file/CHINA_NO2_1Km_201906.tif")
im_width = data.RasterXSize # 获取宽度,数组第二维,左右方向元素长度,代表经度范围
im_height = data.RasterYSize # 获取高度,数组第一维,上下方向元素长度,代表纬度范围
im_bands = data.RasterCount # 波段数
"""
GeoTransform 的含义:
影像左上角横坐标:im_geotrans[0],对应经度
影像左上角纵坐标:im_geotrans[3],对应纬度
遥感图像的水平空间分辨率(纬度间隔):im_geotrans[5]
遥感图像的垂直空间分辨率(经度间隔):im_geotrans[1]
通常水平和垂直分辨率相等
如果遥感影像方向没有发生旋转,即上北下南,则 im_geotrans[2] 与 im_geotrans[4] 为 0
计算图像地理坐标:
若图像中某一点的行数和列数分别为 row 和 column,则该点的地理坐标为:
经度:xGeo = im_geotrans[0] + col * im_geotrans[1] + row * im_geotrans[2]
纬度:yGeo = im_geotrans[3] + col * im_geotrans[4] + row * im_geotrans[5]
"""
im_geotrans = data.GetGeoTransform() # 获取仿射矩阵,含有 6 个元素的元组
im_proj = data.GetProjection() # 获取地理信息
"""
GetRasterBand(bandNum),选择要读取的波段数,bandNum 从 1 开始
ReadAsArray(xoff, yoff, xsize, ysize),一般就按照下面这么写,偏移量都是 0 ,返回 ndarray 数组
"""
im_data = data.GetRasterBand(1).ReadAsArray(xoff=0, yoff=0, win_xsize=im_width, win_ysize=im_height)
# 根据im_proj得到图像的经纬度信息
im_lon = [im_geotrans[0] + i * im_geotrans[1] for i in range(im_width)]
im_lat = [im_geotrans[3] + i * im_geotrans[5] for i in range(im_height)]
im_nc = xr.DataArray(im_data, coords=[im_lat, im_lon], dims=['lat', 'lon'])
return im_nc
day_nc = tiff2nc('temp_file/CHINA_NO2_1Km_201906.tif')
# 使用xarray自带的绘图函数进行可视化
day_nc.plot()
plt.show()
二、
#gdalinfo,查看栅格数据信息
|
|