Data links · Shapes and floors

Attach data link records to shapes and floors

Match each data-link record to a shape by name, role or external code, or pin a link to one shape, then choose which floors of the facility the layer shows on.

7 min readUpdated

Two "where" questions

Attach to which shapes? ("How each record finds the shape it should render on.") decides which shape each record paints. It appears only for the five shape modes — Info marker on shape, Value badge on shape, Color a shape, Camera field of view and Pulsing zone activity — as section 4. Which floors? decides which floors the layer shows on, and appears for every mode (section 5 for shape modes, section 4 otherwise).

Screenshot · Attach to which shapes? for a room status link
Edit data link dialog for a Color a shape link at section 4 "Attach to which shapes?": Shape kind set to polygon, the Match by attribute card selected, Payload field room_name and Compare against set to Shape name, with the note "Records that match multiple shapes render on all of them."
Edit data link dialog for a Color a shape link at section 4 "Attach to which shapes?": Shape kind set to polygon, the Match by attribute card selected, Payload field room_name and Compare against set to Shape name, with the note "Records that match multiple shapes render on all of them."

Shape kind

Shape kind — "Restricts the match to shapes of this kind." The choices are polygon (areas and rooms), circle, marker, line and model (placed 3D models). Changing the kind clears a picked shape, so pick again afterwards.

Three ways to match

CardCard textUse it when
One specific shape"You pick the shape from a dropdown. Simplest option."Every row belongs on one place — a single sensor reading for one cold room.
Match by attribute"Match payload field ↔ shape name/role/custom-property. Records can land on multiple shapes."Each row names its place — Room status matches `room_name` to the area named Room 101.
Match by external code"Shortcut: payload field ↔ bin.externalCode. What CSV imports use."Rows carry the code of a rack cell or bin, like `bin_code` A-B01-L1.

One specific shape

Pick from the Shape menu ("Every record from this source renders on this one shape."). It lists the facility's shapes of the chosen kind by name, starting at "— select a shape —"; if there are none it says "No polygons in this warehouse yet." Save stays disabled until you pick one ("Finish the matching step so each record knows where to land on the map.").

Match by attribute

FieldWhat it is
Payload fieldThe field in each row to compare — "e.g. 'room' → 'Room-A12'". Pick it from the sample row or type a path.
Compare againstShape name, Shape role (polygon / circle), Bin external code or Bin custom property.
Custom keyOnly for Bin custom property: the property's key, for example `room_name`.

Both sides are compared loosely: letters and digits only, ignoring case, so "Room 101", "room-101" and "ROOM101" all match. A row that matches several shapes paints all of them — "Records that match multiple shapes render on all of them."

Worked example — Room status. Source: a rooms table with `room_name` and `status`. Shape kind: polygon. Match by attribute, Payload field `room_name`, Compare against Shape name. The row whose `room_name` is "Room 101" tints the area named Room 101; "Meeting Room" tints the Meeting Room area.

Match by external code

One input: the Payload field carrying the code ("Compared to bin.externalCode."), with `external_code` as the default. It works exactly like Match by attribute with Bin external code, and is there because spreadsheets from warehouse and inventory systems usually carry that code.

Which floors?

"Pick where this layer shows up. Defaults to reading the floor from each record; override when the data is missing or wrong."

Screenshot · Which floors? with All floors selected
Edit data link dialog at section 5 "Which floors?" with three cards — From record, Specific floors and All floors — and All floors selected, followed by section 6 Saved filters
Edit data link dialog at section 5 "Which floors?" with three cards — From record, Specific floors and All floors — and All floors selected, followed by section 6 Saved filters
CardCard textBehaviour
From record (default)"Read the floor from each record. Records with unknown or deleted floors still render on every floor."Reads `floorPlanId`, `floorId` or `floor` from the row — or, for shape modes, the matched shape's own floor. Optionally map a text field to floors (below).
Specific floors"Show this layer only on the floors you pick — ignores whatever floor the record claims."Tick floors under "Floors this layer belongs to". Ticking none hides the layer everywhere.
All floors"Always render regardless of the active floor."No further settings. A good default for a single-floor facility.

Map floor names to floors

Under From record, Field to read the floor from is optional. If your rows say "F1" or "Ground" instead of a floor number, pick that field (for example `floor_name`), then use Value → floor and + Add row to map each value to a real floor plan. Matching ignores case. Values with no row fall back to the usual floor fields, and then to "unknown", which shows on every floor.

Choosing floors decides where a layer is visible, not how high markers float. Height comes from the Elevation setting in Connect fields — "Elevation still comes from the record's elevation field (mapped in the next section) when set — otherwise the layer sits at ground level." Next: Saved filters.

More in Data links