Block Models#
world_id interoperability across block models#
For models in the same SRS, world_id can be used as a stable join key across
multiple block models, provided there is no centroid overlap.
For cross-model uniqueness, keep these constraints aligned:
same SRS,
same
world_id_encodingcontract (frame, axis order, scale, and bit layout),no overlapping block centroids.
When these are true, world_id is unique across all participating models and can
be decoded back to centroid coordinates.
Decode from pandas.DataFrame only#
You do not need parq_blockmodel.blockmodel.ParquetBlockModel to decode
world_id. A DataFrame with world_id and df.attrs['parq-blockmodel'] is
enough.
import pandas as pd
from parq_blockmodel.utils import get_id_encoding_params, decode_frame_coordinates
# df has a world_id column and metadata attached in df.attrs
meta = df.attrs["parq-blockmodel"]
encoding = meta["world_id_encoding"]
offset, scale = get_id_encoding_params(encoding)
x, y, z = decode_frame_coordinates(
df["world_id"].to_numpy(dtype="int64"),
offset=offset,
scale=scale,
)
decoded = df.assign(x=x, y=y, z=z)
See also: Geometry and Coordinate Transformations.