Documentation menu

TerraTec

Aerial deliveries from TerraTec: forward and backward oblique imagery, nadir imagery, orthophotos and point clouds, delivered together.

Folder layout#

<dataset bucket>/
├── Metadata/
│   └── ImageFootprints/
│       ├── <name>_F_<name>.shp     forward oblique footprints (+ .dbf, .shx)
│       ├── <name>_B_<name>.shp     backward oblique
│       └── <name>_N_<name>.shp     nadir
├── FW/
│   ├── AbsImgOri_<name>.txt        exterior orientations
│   └── tif/<name>.tif
├── BW/
│   ├── AbsImgOri_<name>.txt
│   └── tif/<name>.tif
├── NAD/
│   ├── AbsImgOri_<name>.txt
│   └── tif/<name>.tif
├── Ortho/
│   └── tif/<name>.tif              REQUIRED
├── Pointcloud/
│   └── <name>.laz
└── Reports/                        REQUIRED

Every name is a fixed, case-sensitive literal. The direction letter in the shapefile name — _F_, _B_, _N_ — is what pairs a footprint file with its imagery folder.

Reports/ and Ortho/tif/ must exist, even if you have nothing else to put in them: the run fails on a missing one, and it fails after the imagery has already been indexed.

The whole bucket is downloaded before processing, so deliver only what belongs.

Files#

Imagery.tif lowercase only. .TIF and .tiff are treated as missing
FootprintsThe first *_<letter>_*.shp found, with its .dbf and .shx siblings present
OrientationsThe first AbsImgOri_*.txt in the direction folder — the prefix is mandatory
Point clouds.laz only.las files are not indexed

The orientation file#

SeparatorAny run of whitespace
PreambleExactly 9 lines are skipped, then one header line is consumed. Data starts on line 11
ColumnsPositional, exactly seven
PositionMeaning
1Filename, without extension — the join key
2, 3, 4X, Y, Z in the dataset's CRS
5, 6, 7Omega, phi, kappa in degrees

The footprint shapefile#

Attributes are addressed by name and all are required:

AttributeMeaning
PhotoIDJoin key; must equal the orientation file's filename value, without the extension
geometryThe footprint polygon
Rec_TimeCapture time; also selects the camera model (see below)
Focal_lengFocal length as text, e.g. 108.405 mm — read only for captures after 2021-02-28

The join between the shapefile and the orientation file keeps only records present in both. Anything in one and not the other is dropped silently, so a mismatch in PhotoID spelling produces a quiet, partial delivery.

Camera model#

Intrinsics are selected by direction and by whether Rec_Time is after 2021-02-28. Later captures read the focal length from Focal_leng; earlier ones use fixed values. Because Rec_Time is parsed permissively, an ambiguous date such as 03/04/2021 can land on the wrong side of that boundary and select the wrong camera model for the whole delivery. Use an unambiguous format.

Coordinate reference system#

Nothing is reprojected, and the shapefile's .prj is ignored. Footprints must already be in the dataset's 2D CRS and positions in its 3D CRS. See Coordinates.

Ingest parameters#

None are required. set_name is accepted for point-cloud records, default 1.

Sets#

One set per camera direction: F, B, N, and O for the orthophotos.

Tolerance#

  • A metadata record whose .tif is missing → warning only, the record is skipped.
  • Extra .tif files not referenced by the metadata → never reported, never indexed.
  • A missing footprint shapefile or orientation file for one direction → that direction is skipped and the run continues.

So a run can succeed having indexed nothing at all. Check the count.

Common failures#

SymptomCause
Far fewer photos than deliveredPhotoID includes the .tif extension, or disagrees with the orientation filename — the join drops them silently
Imagery not foundDelivered as .TIF or .tiff
Footprints in the wrong placeShapefile is in a different CRS than the dataset's; the .prj is not read
Run fails at the very endReports/ or Ortho/tif/ missing — after everything else was already indexed
Wrong camera modelAn ambiguous Rec_Time around the 2021-02-28 boundary
Point clouds not indexedDelivered as .las — only .laz is read
A direction missing entirelyIts orientation file lacks the AbsImgOri_ prefix, or the header block isn't exactly 9 lines plus 1