← Back to all sparks
T

tidyterra

ANALYTICS
Velocity0.0

tidyverse Methods and ggplot2 Helpers for terra Objects

tidyterra finished wiring terra objects into the tidyverse, one verb family at a time.

geospatialterratidyverseggplot2dplyr-methodsr-package
Current state
tidyterra supplies tidyverse methods and ggplot2 geoms for terra's SpatRaster and SpatVector classes, so spatial objects can be manipulated with dplyr verbs and plotted without conversion. The 1.0.0 release in January 2026 set a hard ggplot2 4.0.0 floor and added broom-style generics — tidy(), glance() and required_pkgs() across SpatRaster, SpatVector, SpatGraticule and SpatExtent. The 1.1.0 and 1.2.0 releases since have filled in the remaining dplyr and tidyr verb surface for SpatVector.
Where it's heading
The package is converging on complete verb coverage rather than branching into new capability. 1.2.0 landed the grouping and nesting family — group_split, group_nest, nest_by, nest, nest_join, group_map, group_modify, reframe, cross_join, complete, expand — which is the last large gap between SpatVector and an ordinary data frame. Its cadence is set externally: releases track ggplot2 and dplyr version transitions, adopting arguments like .by as they stabilize upstream. The maintainer now states AI assistance explicitly for both documentation and generated methods.
Prediction
With the verb surface close to complete, expect the next releases to track upstream ggplot2 and dplyr changes and to extend coverage to SpatRaster where methods currently exist only for SpatVector.

Recent moves

  1. 1mo ago

    Grouping and nesting verbs arrive for SpatVector

    Thirteen-plus methods land at once — group_split, group_nest, nest_by, nest, nest_join, group_map, group_modify, reframe, cross_join, complete, expand and the rows_* family — closing the last large gap between SpatVector and a plain data frame. List-column workflows now work on spatial features. The maintainer notes the methods were generated with AI assistance.

    View source ↗
  2. 5mo ago

    .by stabilizes across mutate, filter, slice and fill

    dplyr promoted .by from experimental to stable, and tidyterra propagates it from summarise into mutate, filter, the slice family and fill. Weighted counts arrive, filter gains .preserve support that was previously ignored, and transmute is marked superseded in step with dplyr.

    View source ↗
  3. 6mo ago

    1.0.0 requires ggplot2 4.0 and adds broom-style generics

    ⚡ SPARK

    The release that sets the package's current shape: a hard upstream floor plus a new generics layer that makes terra objects addressable by tooling that has never heard of terra. The verb-filling work of 1.1.0 and 1.2.0 builds on this base.

    View source ↗
  4. 1y ago

    Test hotfix for CRAN

    A one-line release correcting failing tests. Check-farm compliance, no package behavior involved.

    View source ↗
  5. 1y ago

    mask_projection stops rasters wrapping around the globe

    A contributed parameter prevents SpatRaster wrap-around artifacts on certain projections, and a crash from combining facet_wrap() with coord_sf() — exposed by a terra update — is fixed. Both are the kind of defect only found by people making real maps.

    View source ↗
  6. 1y ago

    Factor levels combined across layers; scale limits truncate legends

    Multi-layer rasters with differing factor levels are handled via terra::combineLevels(), and hypsometric, cross-blended and GRASS scales now truncate their legends when limits are set rather than shifting the tint. Raster pivoting also relaxes to accept mixed numeric layer classes, matching pivot_longer semantics.

    View source ↗