E57
Scanner captures exported as E57, such as a NavVis IVION export or a terrestrial or mobile scanner's. Put the .e57 files in an ingest folder; each one holds the registered scans and any spherical panoramas with their poses, so there is no CSV and no separate image folder.
Folder layout#
<dataset bucket>/
└── ingest/
├── Floor-1-registered.e57
├── Floor-2-registered.e57
└── nested/ subfolders are searched too
└── Basement.e57
Put the E57 files under ingest/, at any depth. When ingest/ holds no
E57, they are looked for anywhere in the bucket instead, so files
uploaded straight to the bucket root work as well. Do not mix the two: once
ingest/ holds an E57, files outside it are not read.
Both .e57 and .E57 are accepted.
Sets#
Each E57 becomes one set, named after the file with
the extension removed. A trailing -registered or -Registered is
stripped as well (NavVis IVION adds it), so Floor-1-registered.e57
becomes set Floor-1. The folder is not part of the name: two files with
the same name in different folders would be the same set, and the delivery
is refused.
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 with a sphericalRepresentation |
| Pano image | Its jpegImage, a 2:1 equirectangular JPEG |
| Pano pose | The entry's pose: translation, and the rotation of the image's centre (+X), its left (+Y) and up (+Z) |
| Capture time | The entry's acquisitionDateTime; without one, the time of the scan point nearest the camera (Times) |
| Point cloud | Every scan in data3D, cartesian or spherical, placed by its pose, with its intensity, colour, timeStamp, returnIndex and returnCount |
| CRS | coordinateMetadata, when the file names one |
NavVis IVION and CHCNAV CoPre exports work as they come out. Images that are not spherical panoramas — the pinhole cube faces many terrestrial scanners export, or cylindrical images — are reported and not indexed; they do not fail the delivery, and the scans are processed as usual. Export panoramas as spherical (equirectangular) images to have them indexed.
Every E57 is checked before anything is processed — its header and its XML section, not the point or image data:
- The delivery holds at least one
.e57file — underingest/, or anywhere in the bucket wheningest/holds none — and no two of them would be indexed under the same set name. - Each E57 is whole: its header is an E57 header, the file is as long as the header says (a cut-off upload is not), and its XML section passes its checksums and parses. Only the header and the XML are read, not the point or image data.
- Each scan in an E57 has cartesian or spherical coordinates, and each E57 holds at least one scan or one spherical panorama.
- Each spherical panorama in an E57 is a 2:1 equirectangular JPEG with a pose and a capture time: its own
acquisitionDateTime, or, when every scan carries per-pointtimeStamps, the time of the scan point nearest its camera. - Panoramas without an
acquisitionDateTimetake the time of the scan point nearest their camera in plan: the ground under it, to a tenth of a second or so. A panorama taken before or after its file's scan takes the nearest point within 250 m instead, a few seconds out. (a warning, not an error) - Pinhole, cylindrical and reference-only images are not indexed. Only spherical panoramas are. (a warning, not an error)
- When an E57 names its coordinate reference system (
coordinateMetadata), it must be the dataset's: a position from the file must land within a metre of itself when transformed between the two.
Times#
Deliver times in GPS Time seconds since 1980-01-06, as E57 defines them
(1458292820.24 is 2026-03-23 09:20:02 UTC). Unix seconds (1789985952.78
is 2026-09-21 10:19:12 UTC), as CHCNAV CoPre writes them, are recognised
too. A point timeStamp is either one of those, or seconds since its scan's
acquisitionStart.
A panorama with no acquisitionDateTime takes its capture time from the
scan: the time of the point nearest its camera, which is the ground under
it. That needs every scan in the file to carry timeStamps. A file with
neither is refused.
Coordinate reference system#
Nothing is reprojected. Poses and points are taken exactly as they
appear in the E57 and stamped with the dataset's CRS. Deliver a capture
that is already registered into the dataset's configured CRS. When the E57
names its CRS in coordinateMetadata, it must be the dataset's. See
Coordinates are not reprojected.
Ingest parameters#
| Key | Required | Type | Meaning |
|---|---|---|---|
anonymisation | yes | string — recognised: already_anonymised, auto_anonymise | Compared exactly: already_anonymised marks the panoramas as already blurred, auto_anonymise queues them for blurring, any other value (ignore) does neither. |
height_above_ground | no | number | Height of the panorama camera above the floor, in metres. 1.6 — a NavVis rig carried by a walking operator — when not set. Default: 1.6. |
tile_pointclouds | no | flag — anything except missing, null, false or "no" enables it | Grid-tile the point clouds into 100 m tiles; the tiles, not one cloud per E57, are then indexed. Clouds that already fit in one tile are indexed as they are. |
1.6 m is the height of a handheld or backpack rig carried by a walking
operator; set height_above_ground for a tripod, a vehicle, or any other
camera height.
What you get back#
- The panoramas, under
panorama/jpg/<set>/, each placed by its pose. - One point cloud per E57, at
pointcloud/<set>.laz, in the dataset's CRS. - A single merged COPC at
copc/pointcloud.copc.lazacross all of them. - Grid-tiled point clouds under
pointcloud_tiles/whentile_pointcloudsis on — in which case the tiles, not the per-E57 clouds, are indexed.
Common failures#
| Symptom | Cause |
|---|---|
| "No E57 file found" | Nothing ending in .e57 was delivered |
| An E57 is "cut off" | The upload stopped before the end; upload the file again |
| Files at the bucket root are not read | ingest/ holds an E57 too; put them all in one place |
| Point cloud processed but no panoramas | The E57 has no spherical images — a geometry-only export, or panoramas exported as pinhole images |
| Everything in the wrong place on the map | The capture was never registered into the dataset's CRS |
| Two files "would be indexed as" one set | Same file name in two folders; rename one |