写在前面
通常, 我们处理的毕竟完善的nc产品,一般呈现未timexlatxlon的维度,且lon
和lat
都是规则的网格,我们可以方便的使用xarray.sel()
选择合适的区域进行切片。但是,部分nc产品比如卫星轨道或者模式输出的数据,可能并没有处理为规则的网格产品,其经纬度信息以x和y表示了分辨率对应的网格格点数量。
如下面这种情况:
那么,在这种分布下,如何进行区域的切片呢。
python – 索引切片
对于上面这种网格,可以理解为由经纬度meshgrid后生成的还算是规则的网格。我们可以通过索引的方式取出对应的区域的数据。
这里主要用到numpy.where()
的方法
比如说我想要要截取数据范围为:Area = [100, 180, -40, 40]
,前两个表示经度范围,后两个表示纬度
找到在上述经纬度范围内对应的x-y的索引所在的数值,然后将数据提取出来
import matplotlib.ticker as ticker
import xarray as xr
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import colors
import pandas as pd
from matplotlib import gridspec
from matplotlib.colors import ListedColormap
import matplotlib.cm as cm
import matplotlib.colors as mcolors
import os
import glob
from datetime import datetime, timedelta
import cmaps
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
import cftime
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.patches as patches
from mpl_toolkits.basemap import Basemap
path = r'I:/heat.nc'
data = xr.open_dataset(path)
print(data)
lat = da