Smart Delta SmartPano Gen2
SmartPano Gen2 captures: panoramas sitting flat at the bucket root with one trajectory CSV beside them, and a coloured point cloud from the SLAM session.
Folder layout#
<dataset bucket>/
├── GPS_Trajectory.csv exact filename, exact case
├── 0001.jpeg panoramas at the bucket ROOT
├── 0002.jpeg
└── slam_session/
└── merge_color/
├── cloud_001.laz
└── cloud_002.laz
Two things people get wrong here:
- Panoramas are
.jpegand live at the bucket root, not in a subfolder. Only files directly at the root are seen. - The point cloud lives at exactly
slam_session/merge_color/. That is the coloured output of the SLAM run, not the raw session folder.
A missing GPS_Trajectory.csv skips the panorama half with a note; a missing
slam_session/merge_color/ skips the point cloud half. Neither is fatal on its
own.
GPS_Trajectory.csv#
| Separator | Comma |
| Header row | Required, and columns are addressed by name |
| Extra columns | Ignored — only the eight below are read |
| Blank cells | Read as empty strings, not nulls |
| Column | Type | Meaning |
|---|---|---|
imagename | text | Photo filename including the .jpeg extension |
x | number | Easting, in the dataset's CRS |
y | number | Northing |
z | number | Height |
heading(deg) | number | Degrees |
pitch(deg) | number | Degrees |
roll(deg) | number | Degrees |
UNIX Timestamp | number | Epoch seconds, read as UTC |
The parenthesised suffixes and the space in UNIX Timestamp are part of the
names — they are matched literally. A missing or misspelled column fails the run.
Unlike several other templates here, imagename is used verbatim: no
extension is appended. Write 0001.jpeg, not 0001.
Example#
UNIX Timestamp,x,y,z,heading(deg),pitch(deg),roll(deg),imagename
1765631346.704,182518.396,477934.743,37.326,0.0,0.0,0.0,0001.jpeg
1765631348.113,182519.204,477936.881,37.341,1.4,0.1,-0.2,0002.jpeg
Tolerance#
- Up to 10 % of CSV rows may reference missing photos. Past that the run fails immediately, naming the threshold.
- Photos at the root that no CSV row mentions → listed at the end of the run and left unindexed.
Ingest parameters#
| Key | Required | Values | Default |
|---|---|---|---|
height_above_ground | yes | number, metres | — |
anonymisation | yes | already_anonymised, auto_anonymise, or anything else for neither | — |
tile_pointclouds | yes | anything except no enables grid tiling | — |
set_name | no | string | 1 |
tile_pointclouds is required here even though it is optional elsewhere. Pass
no explicitly when you don't want tiling.
Coordinate reference system#
Nothing is reprojected. Positions are stamped with the dataset's SRID and point cloud boundaries come from the LAS headers unchanged. See Coordinates are not reprojected.
See Rotation angles.
What you get back#
- Indexed panoramas with positions and orientations, plus blurred derivatives if
anonymisationisauto_anonymise. - Indexed point clouds and a merged COPC at
copc/pointcloud.copc.laz. - Grid-tiled point clouds under
pointcloud_tiles/at 100 m whentile_pointcloudsis on — the tiles are then what gets indexed.
Common failures#
| Symptom | Cause |
|---|---|
| "GPS_Trajectory.csv NOT found" | Wrong name, wrong case, or nested in a subfolder |
| Every photo reported missing | imagename omits the .jpeg extension, or the photos are in a subfolder rather than at the root |
| More than 10 % of photos missing | Filename case mismatch, or .jpg delivered where .jpeg is expected |
| No point cloud indexed | The LAZ files are not under slam_session/merge_color/ |