Install & Compatibility
Where this runs
No compatibility data collected yet for this library.
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
regionmask
✓ import regionmask
✗ from regionmask import ...
Use import regionmask, then access classes via regionmask.ClassName
Regions
✓ from regionmask import Regions
defined_regions
✓ from regionmask import defined_regions
mask_3D
✓ from regionmask import mask_3D
mask
✓ from regionmask import mask
Creates a mask for predefined natural earth regions on a longitude/latitude grid.
import regionmask
import numpy as np
import xarray as xr
# Create a simple longitude/latitude grid
lon = np.arange(-180, 180, 10)
lat = np.arange(-90, 90, 10)
# Use predefined land regions (e.g., country boundaries)
regions = regionmask.defined_regions.natural_earth_v5_0_0.countries_110
# Create a 2D mask (boolean array)
mask_2d = regions.mask(lon, lat)
# Create a 3D mask (one boolean layer per region, useful for xarray)
lon_2d, lat_2d = np.meshgrid(lon, lat)
mask_3d = regions.mask_3D(lon_2d, lat_2d)
print('Mask shape:', mask_3d.shape) # (number of regions, lat, lon)
print('Region names:', list(regions.names))
Errors
Common errors & fixes
ImportError: cannot import name 'defined_regions' from 'regionmask'
In older versions (< 0.8.0), defined_regions was not available; or you might have a different package version.
fixUpdate regionmask: pip install --upgrade regionmask. Then use: from regionmask import defined_regions.
KeyError: 'COUNTRY' when using defined_regions.natural_earth_v5_0_0.countries_110
The region group might have a different attribute name (e.g., countries_110 vs countries_50).
fixList available regions: print(dir(regionmask.defined_regions.natural_earth_v5_0_0)). Use the correct attribute.
ValueError: The input lat and lon arrays must be 1-dimensional
mask_3D expects 2D arrays, but you passed 1D arrays inadvertently.
fixCreate 2D arrays using np.meshgrid(lon, lat) and pass those to mask_3D.
OSError: [Errno 22] Invalid argument when saving a mask to NetCDF
The mask DataArray may have non-standard dtypes (e.g., integer or float) and NetCDF cannot handle them.
fixConvert mask to an integer or float dtype: mask.astype(int).to_netcdf('mask.nc'). Upgrade
Version history
0.13.0latest on PyPI · released Dec 3, 2024
Audit
Dependencies
geopandasrequiredRequired for working with shapefiles and vector regions
xarrayrequiredRequired for masking gridded data (e.g., NetCDF)
shapelyrequiredRequired for geometry operations
numpyrequiredRequired for array operations
matplotliboptionalRequired for plotting
cartopyoptionalRequired for map projections and plotting
poochoptionalUsed for downloading predefined region files