NavVis E57
For static scanner captures exported as E57. Each .e57 file is
self-contained: it holds one point cloud and any number of spherical panoramas,
each with its own pose. There is no CSV and no separate image folder — the
panoramas are extracted out of the E57 for you.
Folder layout#
<dataset bucket>/
└── ingest/
├── Floor-1-registered.e57
├── Floor-2-registered.e57
└── nested/ subfolders are scanned too
└── Basement.e57
ingest/ is the default. It can be pointed elsewhere with the source_subpath
parameter — "/", "." or an empty string mean the bucket root itself.
Both .e57 and .E57 are accepted, and the search is recursive, so any
folder depth under the source prefix works.
If the source prefix contains no E57 at all, the run fails.
Sets#
Each E57 becomes one set, named after the file with the
extension removed. A trailing -registered or -Registered is stripped as
well, so Floor-1-registered.e57 indexes as set Floor-1.
Name your files after what they are; the name is what people will see in the viewer.
What is read from each E57#
| Panoramas | Every images2D entry that has a sphericalRepresentation |
| Pano image | The embedded jpegImage blob, with imageWidth / imageHeight |
| Pano pose | The entry's pose translation and rotation quaternion |
| Point cloud | The cartesian point data, written out as one LAZ per scan |
An images2D entry without a sphericalRepresentation — a pinhole or
cylindrical image, say — is skipped with a note and does not fail the run. Only
spherical panoramas are indexed.
Coordinate reference system#
Nothing is reprojected. Poses and points are taken exactly as they appear in the E57 and stamped with the dataset's SRID. Deliver a scan that is already registered into the dataset's configured CRS. See Coordinates are not reprojected.
A short note recording the assumed datum is written to
panorama/metadata/crs_note.txt in your bucket after every run. It records what
was assumed, not what was verified — confirm the vertical datum with your
surveyor before relying on absolute Z.
Ingest parameters#
| Key | Required | Values | Default |
|---|---|---|---|
anonymisation | yes | already_anonymised, auto_anonymise, or anything else for neither | — |
height_above_ground | no | number, metres | 1.6 |
source_subpath | no | folder under the bucket root; /, . or "" for the root | ingest |
tile_pointclouds | no | anything except no enables grid tiling | no |
set_name | no | string — names the merged outputs only | 1 |
Unlike most templates here, height_above_ground has a default. 1.6 m is a
tripod-height guess; set it explicitly if your scanner sits at a different
height.
What you get back#
- Panorama JPEGs extracted to
panorama/jpg/<set>/, indexed with their poses. - One LAZ per scan at
pointcloud/<set>.laz, indexed per set. - A single merged COPC at
copc/pointcloud.copc.lazacross all scans. - Grid-tiled point clouds under
pointcloud_tiles/whentile_pointcloudsis on — in which case the tiles, not the per-scan LAZ files, are what gets indexed. panorama/metadata/crs_note.txt, as above.
Source E57 files are read once and not kept in the processing workspace, so a delivery of many large scans is bounded by the largest single file rather than their total.
Common failures#
| Symptom | Cause |
|---|---|
| "No .e57 files found" | The files are outside ingest/, or source_subpath points somewhere else |
| Point cloud indexed but no panoramas | The E57 has no sphericalRepresentation images — it is a geometry-only export |
| Everything in the wrong place on the map | The scan was never registered into the dataset's CRS |
Sets named Floor-1-registered | Only -registered and -Registered are stripped; other suffixes stay |