python - 在 python 中的 Modis NETCDF 中绘制平滑 Savgol 过滤器
问题描述
是否可以在 MODIS 的 NETCDF 文件中插入 savgol 过滤器并在 python 中绘制空间平滑?
这是我的示例代码
import matplotlib.pyplot as plt
import xarray as xr
import pandas as pd
import numpy as np
# open Netcdf file
ds = xr.open_dataset('MOD16A2.006_500m_aid20001.nc')
# show information in xarray dataset
ds
<xarray.Dataset>
Dimensions: (lat: 2567, lon: 2739, time: 45)
Coordinates:
* time (time) object 2001-01-01 00:00:00 ... 2001-12-27 00:00:00
* lat (lat) float64 -7.348 -7.352 -7.356 ... -18.03 -18.04 -18.04
* lon (lon) float64 -61.64 -61.63 -61.63 ... -50.24 -50.23 -50.23
Data variables:
crs int8 ...
ET_500m (time, lat, lon) float32 ...
ET_QC_500m (time, lat, lon) float32 ...
Attributes:
title: MOD16A2.006 for aid0001
Conventions: CF-1.6
institution: Land Processes Distributed Active Archive Center (LP DAAC)
source: AppEEARS v2.36
references: See README.txt
history: See README.txt
# Get Variables
lat = ds.lat
lon = ds.lon
time = ds.time
data = ds.ET_500m[0,:,:]
units = ds.ET_500m[:,:,:].units
# Plot image
data.plot.imshow(cmap='viridis_r', figsize=(10,8))
由于云的数量在像素质量中引起的噪声,我需要应用空间平滑方法来提高从 MODIS 导出的数据的质量
我认为 savgol 过滤器适合这种情况,但我不知道如何在空间上使用它。我可能有另一种平滑的方法,但我不知道。
解决方案
是的,有可能,下次请提供一个工作代码示例。我建议在 python 中使用 netCDF4 或 xarray,获取数据,并使用以下文档中的 2d Savgol 过滤器:
https://scipy.github.io/old-wiki/pages/Cookbook/SavitzkyGolay
这将执行平滑,然后将数据导出到 netCDF 文件中,您应该一切顺利。
此外,您还可以将 xarray 与 cartopy 结合使用来绘制数据:
推荐阅读
- nsis - 程序未显示在打开方式列表中,但显示在选择另一个应用程序中
- immutable.js - 更新 immutableJS 列表中深度嵌套的对象属性
- reactjs - React 中的渲染过程是如何进行的?
- docker - 尝试使用 docker-dotnet-sonarscanner 时获取 System.NullReferenceException
- javascript - 字符串用打开和关闭html标签替换下划线
- android - Android Room 和 Kotlin 布尔数组
- c# - 检测到的包降级:Microsoft.NETCore.App 从 2.1.3 到 2.1.0
- php - PHP函数中的可选参数不考虑顺序
- c++ - 从 Chrome 获取帧(简单游戏)并使用 OpenCV 显示它们
- microsoft-graph-api - Microsoft Graph 订阅过期日期时间不正确