Documentation menu

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#

PanoramasEvery images2D entry with a sphericalRepresentation
Pano imageIts jpegImage, a 2:1 equirectangular JPEG
Pano poseThe entry's pose: translation, and the rotation of the image's centre (+X), its left (+Y) and up (+Z)
Capture timeThe entry's acquisitionDateTime; without one, the time of the scan point nearest the camera (Times)
Point cloudEvery scan in data3D, cartesian or spherical, placed by its pose, with its intensity, colour, timeStamp, returnIndex and returnCount
CRScoordinateMetadata, 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 .e57 file — under ingest/, or anywhere in the bucket when ingest/ 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-point timeStamps, the time of the scan point nearest its camera.
  • Panoramas without an acquisitionDateTime take 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#

KeyRequiredTypeMeaning
anonymisationyesstring — recognised: already_anonymised, auto_anonymiseCompared exactly: already_anonymised marks the panoramas as already blurred, auto_anonymise queues them for blurring, any other value (ignore) does neither.
height_above_groundnonumberHeight 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_pointcloudsnoflag — anything except missing, null, false or "no" enables itGrid-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.laz across all of them.
  • Grid-tiled point clouds under pointcloud_tiles/ when tile_pointclouds is on — in which case the tiles, not the per-E57 clouds, are indexed.

Common failures#

SymptomCause
"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 readingest/ holds an E57 too; put them all in one place
Point cloud processed but no panoramasThe E57 has no spherical images — a geometry-only export, or panoramas exported as pinhole images
Everything in the wrong place on the mapThe capture was never registered into the dataset's CRS
Two files "would be indexed as" one setSame file name in two folders; rename one