<p>另一个选项是try<a href="https://ncas-cms.github.io/cf-python" rel="noreferrer">cf-python</a>,它(通常)可以在球面极坐标和笛卡尔坐标中重新生成大于内存的数据集。它使用ESMF重新填充引擎来完成此操作,因此可以使用线性、一阶和二阶保守、最近邻等重新填充方法</p>
<p>下面是一个您需要的重新投标类型的示例:</p>
<pre><code>import cf
import numpy
f = cf.example_field(2) # Use cf.read to read your own data
print('Source field:')
print(f)
# Define the output grid
lat = cf.DimensionCoordinate(
data=cf.Data(numpy.arange(-90, 90.01, 0.083), 'degreesN'))
lon = cf.DimensionCoordinate(
data=cf.Data(numpy.arange(0, 360, 0.083), 'degreesE'))
# Regrid the field
g = f.regrids({'latitude': lat, 'longitude': lon}, method='linear')
print('\nRegridded field:')
print(g)
</code></pre>
<p>产生:</p>
<pre><code>Source field:
Field: air_potential_temperature (ncvar%air_potential_temperature)
------------------------------------------------------------------
Data : air_potential_temperature(time(36), latitude(5), longitude(8)) K
Cell methods : area: mean
Dimension coords: time(36) = [1959-12-16 12:00:00, ..., 1962-11-16 00:00:00]
: latitude(5) = [-75.0, ..., 75.0] degrees_north
: longitude(8) = [22.5, ..., 337.5] degrees_east
: air_pressure(1) = [850.0] hPa
Regridded field:
Field: air_potential_temperature (ncvar%air_potential_temperature)
------------------------------------------------------------------
Data : air_potential_temperature(time(36), latitude(2169), longitude(4338)) K
Cell methods : area: mean
Dimension coords: time(36) = [1959-12-16 12:00:00, ..., 1962-11-16 00:00:00]
: latitude(2169) = [-90.0, ..., 89.94399999999655] degreesN
: longitude(4338) = [0.0, ..., 359.971] degreesE
: air_pressure(1) = [850.0] hPa
</code></pre>
<p>有很多选项可以从其他字段获取目标网格,也可以显式定义目标网格。更多详细信息请参见<a href="https://ncas-cms.github.io/cf-python/analysis.html#regridding" rel="noreferrer">in the documentation</a></p>
<p>cf-python将从附加到数据集的cf元数据推断出哪些轴是X和Y,等等,但是如果缺少这些轴,那么总是有办法手动设置或解决这些轴</p>