Source code for pyiem.grid.util
"""pyIEM grid utilities."""
import numpy as np
[docs]
def grid_smear(grid: np.ndarray, shift: int = 4) -> np.ndarray:
"""Smear data around to fill in masked values (likely near coastlines).
Args:
grid: 2D numpy array
shift: number of pixels to smear the data around by in each direction
Returns:
2D numpy array with smeared data
"""
# Pad grid
padded = np.ma.masked_all(
(grid.shape[0] + shift * 2, grid.shape[1] + shift * 2)
)
# set values from inbound grid
padded[shift:-shift, shift:-shift] = grid
# shift the grid by shift pixels in each direction to fill in the padded
for xorigin in [0, shift * 2]:
for yorigin in [0, shift * 2]:
xslice = slice(xorigin, xorigin + grid.shape[0])
yslice = slice(yorigin, yorigin + grid.shape[1])
padded[xslice, yslice] = np.ma.where(
np.logical_and(padded[xslice, yslice].mask, ~grid.mask),
grid,
padded[xslice, yslice],
)
return padded[shift:-shift, shift:-shift]