此项目的动机是为地球科学领域提供插值工具。当然也有其它库可应用于地球科学的数据插值,但是这些库基本完全是用Python编写,其性能无法满足需求。
利用此库你可以使用 n-variate
和 bicubic
插值方法和非结构网格进行 2D、3D和4D插值。
安装
可以通过如下三种方式安装:
通过 pip 安装,但安装前需要确保所需要的C 等依赖库已经安装
代码语言:javascript复制pip install pyinterp
通过 conda 安装
代码语言:javascript复制conda install pyinterp -c conda-forge
通过源码安装
推荐使用 conda 进行安装,会解决依赖问题。
示例
以下是一些官方提供的示例:
2D插值
代码语言:javascript复制import os
import pathlib
import cartopy.crs
import matplotlib
import matplotlib.pyplot
import numpy
import pyinterp
import pyinterp.backends.xarray
import xarray
try:
# When generating the documentation the variable DATASET points to the data
# path.
DATASET = pathlib.Path(os.environ['DATASET'])
except KeyError:
# Otherwise, the relative folder path is used.
DATASET = pathlib.Path("..", "..", "tests", "dataset")
MSS = DATASET.joinpath("mss.nc")
ds = xarray.open_dataset(MSS)
interpolator = pyinterp.backends.xarray.Grid2D(ds.mss)
mx, my = numpy.meshgrid(numpy.arange(-180, 180, 1) 1 / 3.0,
numpy.arange(-89, 89, 1) 1 / 3.0,
indexing='ij')
mss = interpolator.bivariate(
coords=dict(lon=mx.flatten(), lat=my.flatten())).reshape(mx.shape)
fig = matplotlib.pyplot.figure(figsize=(10, 8))
ax1 = fig.add_subplot(
211, projection=cartopy.crs.PlateCarree(central_longitude=180))
lons, lats = numpy.meshgrid(ds.lon, ds.lat, indexing='ij')
pcm = ax1.pcolormesh(lons,
lats,
ds.mss.T,
cmap='jet',
transform=cartopy.crs.PlateCarree(),
vmin=-0.1,
vmax=0.1)
ax1.coastlines()
ax1.set_title("Original MSS")
ax2 = fig.add_subplot(212, projection=cartopy.crs.PlateCarree())
pcm = ax2.pcolormesh(mx,
my,
mss,
cmap='jet',
transform=cartopy.crs.PlateCarree(),
vmin=-0.1,
vmax=0.1)
ax2.coastlines()
ax2.set_title("Bilinear Interpolated MSS")
fig.colorbar(pcm, ax=[ax1, ax2], shrink=0.8)
fig.show()
二维常规网格的 bivariate 插值
上例仅是官方提供的一个示例,此外,官方文档提供了更多的示例,具体可以前往官方文档查看更详细的示例。
官方示例文档
扫描二维码前往官方文档
—END—