<p><a href="https://rasterio.readthedocs.io/en/latest/api/rasterio.sample.html" rel="nofollow noreferrer">^{<cd1>}</a>提供一个<code>masked</code>参数。当<code>True</code>时,它根据光栅数据集的边界框生成<a href="https://numpy.org/doc/stable/reference/maskedarray.html" rel="nofollow noreferrer">Masked arrays</a></p>
<pre class="lang-py prettyprint-override"><code>>>> import rasterio
>>> ds = rasterio.open("raster.tif")
>>> ds.bounds
BoundingBox(left=-0.0001388888888888889, bottom=40.999861111111116, right=1.000138888888889, top=42.00013888888889)
>>> # Inside bbox
>>> next(rasterio.sample.sample_gen(ds, ((0.5, 41.5), ), masked=True))
masked_array(data=[130],
mask=False, # <= No mask (ndim=0)
fill_value=999999,
dtype=int16)
>>> # Outside bbox
>>> next(rasterio.sample.sample_gen(ds, ((0, 0), ), masked=True))
masked_array(data=[0],
mask=[False], # <= Mask ndim=1
fill_value=999999,
dtype=int16)
</code></pre>
<p>当坐标超出光栅边界时,它们将转换为带有<code>None</code>的python列表:</p>
<pre class="lang-py prettyprint-override"><code>>>> [None if x.mask.ndim == 1 and not x.mask[0] else x[0]
... for x in rasterio.sample.sample_gen(ds, ((0.5, 41.5), (0, 0)), masked=True)]
[130, None]
</code></pre>