Skip to contents

Establishes the cross-package composition contract: algorithmic base movement (for example from explodemap), inherited ancestor movement, and local manual edits remain separately inspectable while their sum becomes the effective movement applied to geometry.

Usage

compose_offsets(base = NULL, state, ancestor_offsets = NULL, key_col = NULL)

effective_offsets(
  state,
  base_offsets = NULL,
  ancestor_offsets = NULL,
  key_col = NULL
)

Arguments

base

Optional base-offset table, an explodemap_child_layout, or a list containing an offsets table. Accepted movement columns are base_dx_m/base_dy_m or dx_m/dy_m.

state

A d_state() supplying local manual offsets.

ancestor_offsets

Optional inherited-offset table. Accepted movement columns are inherited_dx_m/inherited_dy_m, effective_dx_m/ effective_dy_m, or dx_m/dy_m.

key_col

Optional identifier column used in external offset tables. Defaults to region, feature_id, or parent_id, in that order.

base_offsets

Alias for base in the state-first calling form.

Value

A data frame with region, separate base/inherited/manual columns, and effective_dx_m/effective_dy_m.

Details

effective_offsets() is the state-first alias for this composition path. Every caller that needs effective offsets goes through one of these two forms, so algorithmic, inherited, and manual layers always combine identically.